我在网上找到的一个mpi发送自定义结构体的例子,自己改了改之后发现发送并没有什么问题,但他本身是发送一个结构体的成员变量,同时又用这个结构体来接收成员变量,我就想要用另外一个同类型的结构体来接收变量试一试,结果程序直接就崩溃了,提示的错误也不能查出来到底是什么情况。
typedef struct{
int num1;
double num2;
char str[5];
}saonima;
typedef struct{
int num1;
int num2;
saonima* points;
}testStruct;
int main(int argc, char* argv[])
{
MPI_Init(&argc, &argv);
int rank, size;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
assert(size >= 2);
const int npts_avail = 20;
saonima sst[npts_avail];
testStruct list;
testStruct list2;
list.points = sst;
if(rank == 0)
{
int npts_used = 10;
list.num1 = npts_used;
list.num2 = npts_avail;
for (int i = 0; i < list.num1; ++i) {
sst[i].num1 = 1 * i;
sst[i].num2 = -2 * i;
strcpy(sst[i].str, "yeah");
}
}
const int nfields = 3;
MPI_Aint disps[nfields];
int blocklens[] = {1, 1, 5};
MPI_Datatype types[] = {MPI_INT, MPI_DOUBLE, MPI_CHAR};
disps[0] = offsetof(saonima, num1);
disps[1] = offsetof(saonima, num2);
disps[2] = offsetof(saonima, str);
MPI_Datatype istruct, pstrcut;
MPI_Type_create_struct(nfields, blocklens, disps, types, &istruct);
MPI_Type_create_resized(istruct, 0, (char*)&(sst[1]) - (char*)(&sst[0]), &pstrcut);
MPI_Type_commit(&pstrcut);
if(rank == 0){
MPI_Send(&(list.num1), 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
MPI_Send(&(list.num2), 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
MPI_Send(list.points, list.num1, pstrcut, 1, 0, MPI_COMM_WORLD);
}else if(rank == 1){
MPI_Recv(&(list.num1), 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
MPI_Recv(&(list.num2), 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
MPI_Recv(list.points, list.num1, pstrcut, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
}
if(rank == 1){
cout << "Received: \n";
for (int i = 0; i < list.num1; ++i) {
cout << "(" << list.points[i].num1 << ", " << list.points[i].num2 << "):" << list.points[i].str << "\n";
}
}
MPI_Finalize();
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:“可能光看名字,别人就觉得你是男生还是女生?”
——来源《生活》顾木子说的🤣
以前上英语课老师都会教哪些名字一听就知道是男生的,比如David、Tom、Jerry,然后
Angela、Sophia一听就是女生的名字。当你以为所有名字一听就可以辨别男女的时候,你就
想错了~就像中文里面“贾凡”,你以为是男生,其实是女生也说不定。这种难分性别的名字
其实很多呢~为了避免宝宝的性别和提前取好的名字冲突,很多准妈妈会给自己的孩
子取一个中性的名字,不管男女都可以用哈哈哈~两全其美👧👦
每个女孩子都希望自己的姓名能取的好听一点儿,也不希望经常跟男孩子名字撞名吧~想想一个班
里面一个男生一个女生名字撞了多尴尬,如果名字偏女孩子一点儿,男生叫这个名字那可能就尴尬
癌都犯了,相反也是!
当然,送大家一句经典台词抢救一下:“你不尴尬🕵️♀️——尴尬的就是别人!“
👩🎨哈哈哈!那下面就说到正题了哈:今天小编教大家编写一款根据中文名能猜测性别的一款界面
化的小程序呢~