• 2

跑Fortran6.6 程式主機

aeit wrote:

這個要如何求證?
假如不支援,那會怎樣的情況,會有執行錯誤,還是效能跟單核差不多?


因為以前用C寫了個判斷質數的小程式

發現我的X2 250只有單核心在使用

我就拿去問當時資概的助教...他跟我說他只知道C#可以讓多執行緒同時運作



剛剛翻到這小程式,執行了一下...





我想問這跟編譯器有關係嗎..?

===============================================



rgly wrote:
至於教學的話,openmp在網路上有相當多的教學
雖然大多數都是針對c跟c++
不過我想相同的概念是可以應用在fortran上的

像這個教學我就覺的寫的不錯



這看起來很有趣耶

感謝您提供這資訊,我要來好好研究
max4077 wrote:
因為以前用C寫了個判...(恕刪)


c#我沒有用過,不過在c或c++撰寫平行程式都是需要引用library的
該行為需要在編譯器上加參數
比如下面的例子

g++ pthread/main.cpp -lX11 -lpthread -o pthread_run
cc openmp/main.c -lX11 -xO3 -xopenmp=parallel -o omp_run
mpic++ mpi/main.cpp -lX11 -o mpi_run


-lX11的話就先不要管它,它是來產生畫面的
aeit wrote:
說道我們的痛了
因為敝實驗室是新老師新創的實驗室,我們沒有人對平行運算有瞭解。
所以,目前無論是新撰寫的程式或舊有程式都沒辦法改成平行運算。
導致無法將程式丟到高速電腦中心去跑,因為那邊要求必須是平行運算的寫法。

不過,很感謝你提供的 openmp,我會再去研究一下。

高速電腦中心應該是要使用類似 MPI 這類的東西,來做跨電腦的平行化;而 OpenMP 基本上則是針對單機、共用記憶體的環境,來進行平行化,這兩個方向不太一樣,可能要注意一下。

另外,如果有真的有興趣研究平行化的話,另一個方向是 nVIDIA CUDA;他可以用顯示卡來做大量平行化,如果你們的程式是大規模的 data parallel 計算的話,理論上用 GPGPU 的方式會比用 CPU 快很多。但是相對的,程式開發的難度會高很多。

http://developer.nvidia.com/cuda-fortran

---
沒弄錯的話,分子動力學的模擬應該是滿適合平行化的計算?
http://kheresy.wordpress.com/

max4077 wrote:
因為以前用C寫了個判...(恕刪)

實際上,大部分的程式語言、應該都有支援多執行序和平行計算。

你的程式只用了一顆核心的原因很簡單,主要不是編譯器的問題,而是你有沒有針對要平行化的部分、去做特別的處理。
你沒有特別去處理,他就只會用一顆核心去做事。
這點就算是 C# 也一樣。

以 C/C++ 來說,可以寫出平行化的方法很多。
像是 pthread、boost thread 等等,都可以建立新的 thread 來做額外的計算;而實際上,新的 C++11 也已經把 Thread Library 納進標準了。
而如果是要迴圈平行化的,OpenMP 應該還是目前最方便的方法。
http://kheresy.wordpress.com/
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?