我可以在哪裏指定或查看C中MPI程序中的內核數量。 換句話說,我改進了一個用c(MPI fox算法)編寫的程序,該程序運行2個內核,但實際上我想更改它爲了運行4個核心... 該程序使用笛卡爾拓撲。MPI內核數量
MPI內核數量
回答
您指定proceses到SPMD/MPMD發射mpiexec
(或mpirun
)的期望數量,通常作爲
mpiexec -n <# of processes> <other options> ./executable <arguments>
然後你可以找到通過查詢的規模推出MPI進程的數量世界通信:
int nprocs;
MPI_Comm_size(MPI_COMM_WOLRD, &nprocs);
printf("There are %d processes running in this MPI program\n", nprocs);
如果程序也是一種混合MPI + OpenMP的代碼,然後,在每個進程線程可能通過設置OMP_NUM_THREADS
環境變量來控制的數量,除非numbe通過調用omp_set_num_threads()
或應用於parallel
區域的顯式num_threads
子句在代碼中覆蓋r。
當我運行我的程序有4個處理器(程序mpiexec -n 4 ./test),它工作正常,但是當我嘗試用更少或4級以上的處理器運行該程序將顯示以下信息: 在PMPI_Comm_rank致命錯誤:無效的通訊器,錯誤堆棧, PMPI Comm_rank(109)... PMPI Comm_rank(66):空comunicator – was
這經常發生在未處理代碼以處理進程數較大的情況時。在這種情況下,溝通手柄在所有進程中都沒有正確初始化。可能是因爲硬編碼的笛卡爾拓撲結構是2x1的,在這種情況下,在一半的進程中,笛卡爾通信器句柄將作爲'MPI_COMM_NULL'返回。 –
- 1. MPI:內核還是處理器?
- 2. MPI多核機器
- 3. 使用MPI在分佈式內存上運行CUDA內核
- 4. 單機雙核上的MPI
- 5. MPI處理器數量?
- 6. 並行數據流和內核數量
- 7. Blacs:不使用所有MPI內核的處理器網格
- 8. SGE腳本爲每個內核使用MPI作業的任務
- 9. 強制MPI使用指定的編號。內核
- 10. 檢測窗口上的內核數量
- 11. Mathematica中NVIDIA K20 GPU的內核數量
- 12. 限制erlang使用的內核數量
- 13. 並行c#使用的內核數量
- 14. 限制MySQL使用的內核數量
- 15. 執行程序和內核的數量
- 16. 查找linux內核中CPU的數量
- 17. MPI庫和內存
- 18. MPI內存泄漏
- 19. MPI內存分配
- 20. 多核虛擬機開放mpi測試
- 21. Cuda內核返回矢量
- 22. 內核變量位置
- 23. 錯誤的mpi處理器數量
- 24. java內核中的CPU內核數量和線程數量之間的關係是什麼?
- 25. OpenCl中的標量和矢量內核
- 26. Java線程數量>內核數量和垃圾回收數量
- 27. OpenCL內核參數
- 28. OpenCL內核參數
- 29. 在CPU內核數
- 30. CUDA內核函數
您是否將算法硬編碼爲僅適用於2個內核?如果不是,則用'mpirun'或'mpiexec'運行程序時指定核心數。但是你所問的並不完全清楚。 – tpg2114