主程式
這個主程式只負責啟始整個系統,包括二件事情 --- 清除必要的檔案和起動各程序平行工作。
# Shell program: max
刪除用作程序間通訊管道的檔案 result*
for i in 0 1 2 3
do
向 CODINE 要求一個 cpu 作第 i 個子工作
done
向 CODINE 要求一個 cpu 作收集結果和合併的工作
CODINE 程式
雖然真正進行平行計算的程式是下一小節的 max.c ,但由於 CODINE 和主機間必須藉由 shell script 才能告訴它要做的工作,所以 max-script 主要只是去執行 max.exe (max.c 編譯後的可執行檔 ) ,並將結果存入特定檔案用以傳送到其它程序。
# CODINE Script: max-script
呼叫 max.exe 處理第 i 部分資料並將結果存在 result(i) 中
記錄主機名稱和 i 值
雖然這些程序是在不同主機上執行,但透過 NFS 共用檔案系統,下面的程序 merger 依然可以根據檔案 result(i) 存在與否來判斷它們的工作是否已完成,並藉以獲得它們傳出的資料進行合併。
# CODINE Script: merger
while(所有程序尚未全部完成)
暫停 30 秒
done
從檔案 result(i) 中取得各程序處理結果合併成最後答案
真正作計算的 C 程式
max.exe 的原始 C 程式 max.c 計算各部分資料的最大值:
void main(argc,argv)
{
讀入所要處理的是第幾部分的資料
開啟資料檔
跳至資料檔中所要處理的部分
逐個讀入資料並計算最大值
關閉資料檔
印出結果
}