MPI和PThread相互呼叫

2021-06-18 22:30:27 字數 699 閱讀 8755

今天遇到了乙個問題,在mpi的程式中用pthread為0號程序開闢兩個執行緒,執行緒呼叫的函式又用到了mpi_send/mpi_recv訊息傳遞,剛開始怎麼除錯都不行。

呼叫方式如下:

if (rank == 0)

void * sendtask( void *param)

else

mpi_send(&rectnumbers,1,mpi_int,status.mpi_source,10,mpi_comm_world);

}while(nulltimes < processes*times );

明顯的感覺到執行緒未執行,除錯好久,以為是send跟recv 的問題,後來發現,如果是mpi初始化的問題。

在多個執行緒呼叫mpi時,需對mpi做如下初始化:

int provided;

mpi_init_thread(&argc,&argv,mpi_thread_multiple, &provided);

if(provided != mpi_thread_multiple)

用mpi_init_thread初始化,並判斷mpi是否支援多執行緒,而不是通常情況下的mpi_init(&argc,&argv)。

C Matlab 相互呼叫

visualstudio2013 net4.0 matlab2015b 高版本的matlab對外置其它語言做得很方便了,並不需要一堆的配置。其它語言與matlab的互動操作也類似。基本思路 將matlab函式打包成dll檔案,聯合matlab資料支援dll mwarray.dll 交付給其它語言程式...

C Matlab 相互呼叫

禾木junjie原文c matlab 相互呼叫 visualstudio2013 net4.0 matlab2015b 高版本的matlab對外置其它語言做得很方便了,並不需要一堆的配置。其它語言與matlab的互動操作也類似。基本思路 將matlab函式打包成dll檔案,聯合matlab資料支援d...

lua和c 相互呼叫

include include include include include extern c lua state l int luaadd lua state l,int x,int y extern int cl domylua lua state l extern int cl drawte...