作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将数据传递给MPI_Gather
。我按如下方式分配内存:
float *phie, *phitemp;
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
phitemp=(float *) malloc(20*sizeof(float));
if (rank==1) phie=(float *) malloc(itermax*20*size*sizeof(float));
然后使用 MPI_Gather()
让所有进程将数据发送到排名 1,如下所示:
for (iter=0;iter<itermax;iter++) {
MPI_Gather((float *) phitemp, 20, MPI_FLOAT, (float *) (phie+iter*20*size*sizeof(float)), 20, MPI_FLOAT, 1, MPI_COMM_WORLD);
iter=0;
}
我收到错误消息,表明我没有正确分配内存。
最佳答案
指针算术是根据指针所指向的字的大小来完成的。自 phie
是 float *
,sizeof(float)
在phie+iter*20*size*sizeof(float)
是多余的,并且您超出了有效内存。
删除sizeof(float
),或者最好将其更改为更清晰的数组索引:&(phie[iter * 20 * size])
您还应该删除所有指针转换,它们都是多余的并且可以隐藏问题。仅当您知道需要时才应进行转换。
关于您的附加问题:recvbuf
MPI_Gather
的参数仅在根进程中有意义。因此只有iter
根进程的重要性。尽管如此,由于您的所有进程都会经历相同的运行循环 MPI_Gather
,并且他们无法超越对方,他们将永远拥有相同的iter
在匹配收集期间。
关于c - MPI_Gather C 中的内存寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985758/
我正在尝试提供即时转码的视频。不幸的是,这意味着寻求不起作用。我假设这是因为浏览器不知道视频有多长,因此无法正确显示搜索栏。 有谁知道是否可以对视频的时长进行硬编码? 我想到的另一个选择可能是创建我自
我是一名优秀的程序员,十分优秀!