mpi

    0熱度

    1回答

    這行代碼: comm.Gatherv(sendbuf=[chunkToTransfer, MPI.FLOAT], \ recvbuf=[collectedChunk, processChunkSizes, processChunkDisplacements, MPI.FLOAT], \ root=writerRank) 失敗,出現以下錯誤: File "MPI/

    0熱度

    1回答

    我正在學習有關在課堂上使用C的MPI。我目前正在努力讓自己的頭腦在使用MPI_Comm_split時具有優勢。我還試圖弄清楚如果我不使用組或者如果我的所有進程都在一個組中,那麼使用此方法是否有任何好處。 據我所知,MPI_Comm_split爲每個'顏色'提供了一個獨特的溝通者,這是不同於使用MPI_COMM_WORLD(不知道這最後一部分是否正確)。 MPI小組是一組過程,傳播者可以幫助你在這些

    1熱度

    1回答

    如何做到所有減少與boost::mpi 1.53? (即CentOS 7的版本) 增強1.61有boost::mpi::inplace_t(doc),但增強1.53沒有(doc)。 爲1.61,我可以使用: boost::mpi::all_reduce( comm, boost::mpi::inplace_t<int*>(ptr_int_array), n_elemen

    1熱度

    1回答

    說我有n個過程: 他們做一個計算,然後發送結果排名爲0。這是我希望發生的: 等級0將等待,直到它從結果所有的隊伍,然後加起來。 我該怎麼做?另外,我想避免以下內容: 例如, 4個進程P0,P1,P2,P3, P1 -> P0 P2 -> P0 P3 -> P0 與此同時P1已完成其計算等P1-> P0再次發生。 我希望P0只在一個週期內完成3個過程的添加,然後再爲下一個週期做3個過程。 有

    0熱度

    1回答

    在C中使用OpenMPI; 說我有 main() { MPI_Init(); //// Important Program Region MPI_Barrier(MPI_COMM_WORLD); // do something here MPI_Barrier(MPI_COMM_WORLD); //// MPI_Finalize(); } 這是不好的做法?我能像這樣

    0熱度

    1回答

    在我的實驗室中,我們有幾臺服務器用於模擬程序,但它們獨立工作。現在我想將它們組合成一個使用MPICH進行通信的集羣。但是存在一個問題,就是這些服務器有不同的操作系統。其中一些是Redhat,其中一些是Ubuntu。並且在MPICH的主頁上,我看到這兩種不同操作系統的下載站點不同,那麼是否可以建立一個具有不同操作系統的集羣?以及如何做到這一點? 我不想重新安裝這些服務器的原因是數據太多,當我提出這個

    2熱度

    1回答

    什麼是通過MPI發送OPENCV Mat的最佳方式?現在我已經完成了Mat到int**,但這是一個有點慢的解決方案。 A = alloc2d(n , m); for (int i = 0; i < n ; ++i) for (int j = 0; j < m ; ++j) A[i][j] = img.at<uchar>(i , j); /////////////////

    0熱度

    1回答

    我想調用一個庫,該庫使用自身通過MPI並行運行的程序中的OpenMP並行化。如果我只使用一個進程來運行我的MPI程序,那麼當需要調用OpenMP庫時,會有7個附加線程(對應於我的機器上的核心數)正確生成,並且任務將並行執行。如果我在2個進程上運行我的MPI程序,並讓每個進程調用OpenMP程序,它們每個都會產生自己的線程,而不像以前一樣工作,從而使計算時間更長。 我試圖讓MPI主進程在其他進程等待

    1熱度

    1回答

    我試圖控制執行我的MPI代碼的位置。 這樣做有幾個辦法,taskset的,D放置,numactl的或者僅僅是想--bind到或-cpu設置的的的mpirun選項。 機器:共享存儲器,16個節點的2倍12cores(每節點,以便24個核心) > numactl -H available: 16 nodes (0-15) node 0 cpus: 0 1 2 3 4 5 6 7 8

    3熱度

    2回答

    爲了讓事情變得簡單並且爲了專注於我的問題的核心,讓我們假設由指針變量ptr在本地尋址的內存位置在幾個進程之間共享。我特別使用C/++中的MPI共享內存窗口來分配和共享內存。要具體,讓我們說ptr引用一個浮點變量,所以在當地我們有 float* ptr; 現在假設所有進程嘗試寫入相同的值const float f到PTR,即 *ptr = f; 我的問題是:考慮到所有進程試圖以相同的方式修改