公用區

公用區是指在獨立的各程式單元之間傳送數據所用的公用存儲區。尤其在FORTRAN語言中,不同程式單位的數據通常存放在記憶體儲器中的不同區域,因此這些數據都是獨立的,與變數名的重複使用無關,故變數名可以自由選擇,對編制和調試程式帶來很大方便。但完整的程式必須把主程式與子程式,或子程式與子程式之間的某些數據聯繫起來,為此編譯程式在記憶體中開闢一些公用存儲區,即公用區。將不同程式單位的一些變數或數組強行分配到公用區中去,以建立起數據聯繫,實現數據在不同程式單位之間的傳遞。公用區分為無名公用區和有名公用區,一個程式只允許有一個無名公用區,而有名公用區的個數則不限。

基本介紹

  • 中文名:公用區
  • 外文名:common area

公用區並行調試中遇到一個麻煩的問題,即COMMON變數的私有化。在主程式DOLOOP並行區中,如果要調用子程式,則系統默認子程式里定義的所有變數是執行緒私有的,但是我需要一些主程式和子程式的公用區變數也似有,如果簡單地用Private指令來指定,很可能會出現錯誤混亂,特別是數據量很大時,各執行緒之間會出現競爭(DataRace),輸出結果要么是沒有初值,要么就是被其他執行緒更改後的值。這個問題困惑我了很長時間,通過搜尋調研,終於找到了一個解決辦法:執行緒私有指令ThreadPrivate。它可以把一個全局公用變數分別複製到每一個執行緒,各執行緒之間保持獨立,不會互相干擾。它必須緊接COMMON塊進行聲明,如果還要求各個執行緒得到COMMON變數的初值,則還要結合Copyin指令使用。
公用區公用區
並行調試中遇到一個麻煩的問題,即COMMON變數的私有化。在主程式DOLOOP並行區中,如果要調用子程式,則系統默認子程式里定義的所有變數是執行緒私有的,但是我需要一些主程式和子程式的公用區變數也似有,如果簡單地用Private指令來指定,很可能會出現錯誤混亂,特別是數據量很大時,各執行緒之間會出現競爭(DataRace),輸出結果要么是沒有初值,要么就是被其他執行緒更改後的值。這個問題困惑我了很長時間,通過搜尋調研,終於找到了一個解決辦法:執行緒私有指令ThreadPrivate。它可以把一個全局公用變數分別複製到每一個執行緒,各執行緒之間保持獨立,不會互相干擾。它必須緊接COMMON塊進行聲明,如果還要求各個執行緒得到COMMON變數的初值,則還要結合Copyin指令使用。

相關詞條

熱門詞條

聯絡我們