mpi函式說明
(1)並行初始化函式:int mpi_init(int *argc,char ***argv)
引數描述:argc為變數數目,argv為變數陣列,兩個引數均來自main函式的引數
(2)並行結束函式: int mpi_finalize()
例如:hello.c
#include "./mpich2/include/mpi.h"
#include
int main(int argc,char **argv){
mpi_init(&argc,&argv);//並行部分開始
printf("hello parallel world!\n");
mpi_finalize();
(3)獲得當前程序標識函式:int mpi_comm_rank(mpi_comm comm,int *rank)
引數描述:comm為該程序所在的通訊域控制代碼,rank為呼叫這一函式返回的程序在通訊域中的標識號
(4)獲取通訊域包含的程序總數函式:int mpi_comm_size(mpi_comm comm,int *size)
引數描述:comm為通訊域控制代碼,size為函式返回的通訊域comm內包含的程序總數
(5)獲得本程序的機器名函式:int mpi_get_processor_name(char *name,int *resultlen)
引數描述:name為返回的機器名字串,resultlen為返回的機器名長度
例如:who.c
#include "./mpich2/include/mpi.h"
#include
int main(int argc,char **argv)
int myid,numprocs;
int namelen;
char processor_name[mpi_max_processor_name];
mpi_init(&argc,&argv);
mpi_comm_rank(mpi_comm_world,&myid);//獲得本程序的id
mpi_comm_size(mpi_comm_world,&numprocs);//獲得總的程序數目
mpi_get_processor_name(processor_name,&namelen);//獲得本程序的機器名
printf("hello world!process %d of %d on %s \n",myid,numprocs,processor_name);
mpi_finalize();
(6)訊息傳送函式:int mpi_send(void *buf,int count,mpi_datatype datatype,int dest,int tag,mpi_comm comm)
引數描述:buf為傳送緩衝區的起始位址,count為將傳送的資料個數(以後面的資料型別進行計數),datatype為傳送資料的資料型別,dest為目的程序標識號,tag為訊息標識,comm為通訊域
mpi_send()將傳送緩衝區buf中得count個datatype資料型別的資料傳送到標識號為dest的目的程序,本次傳送的訊息標識是tag
(7)訊息接收受函式:int mpi_recv(void *buf,int count,mpi_datatype datatype,int source,int tag,mpi_comm,mpi_status *status)
引數描述:buf為接收緩衝區的起始位址,count為最多可接收的資料個數,datatype為接收資料的資料型別,source為接收資料的**程序標識號,tag為訊息標識,應與相應傳送操作的標識相匹配,comm為本程序和傳送程序所在的通訊域,status為返回狀態
例如:message.c
#include
#include
#include "./mpich2/include/mpi.h"
int main(int argc,char **argv)
int myid,numprocs,source;
mpi_status status;
char message[100];
mpi_init(&argc,&argv);
mpi_comm_rank(mpi_comm_world,&myid);
mpi_comm_size(mpi_comm_world,&numprocs);
if(myid != 0)
strcpy(message,"hello world!");//為傳送字串賦值
//傳送字串時長度要加1,從而包括串結束標誌
mpi_send(message,strlen(message)+1,mpi_char,0,99,mpi_comm_world);
else
//除0程序的其他程序接收來自於0程序的字串資料
for(source = 1;source < numprocs;source++)
mpi_recv(message,100,mpi_char,source,99,mpi_comm_world,&status);
printf("i am process %d.i receive string '%s' from process %d.\n",myid,message,source);
mpi_finalize();
另附:mpi預定義資料型別與c語言資料型別的對應關係
mpi 資料型別
對應c 資料型別
mpi_char
signed char
mpi_short
signed short int
mpi_int
signed int
mpi_long
signed long int
mpi_unsigned_char
unsigned char
mpi_unsigned_short
unsigned short int
mpi_unsigned
unsigned int
mpi_unsigned_long
unsigned long int
mpi_float
float
mpi_double
double
mpi_long_double
long double
mpi_byte
無相應資料型別
mpi_packed
無相應資料型別
mpi_long_long_int
long long int
findContours函式引數說明及相關函式
findcontours函式,這個函式的原型為 void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierar chy,int mode,int method,point offset ...
findContours函式引數說明及相關函式
findcontours函式,這個函式的原型為 void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierar chy,int mode,int method,point offset ...
函式說明python函式巢狀筆記 函式說明
ps 今天上午,非常鬱悶,有很多簡單基礎的問題搞得我有些迷茫,哎,幾天不寫就忘。目前又不當coo,還是得用心記 哦!關於函式內嵌函式作用域的條記 def test i 0defa print locals a printi test 這段,locals 的值為空,說明內嵌的a函式沒有認默引入i de...