被MPI_Bcast()阻塞或非阻塞?换句话说,当根发送数据时,所有处理器是否都会阻塞,直到每个处理器都收到这些数据?如果没有,如何同步(阻止)所有这些,以便没有人继续进行,直到所有人都收到相同的数据.
为了在0-1互斥之间存储值,我分配了以下缓冲区:
float *buff = malloc(n* sizeof(float))
Run Code Online (Sandbox Code Playgroud)
但是,我认为在分配较小的内存大小时,使用float并不能自由选择large n,例如n=10,000。由于float的大小为32 bit,我想知道是否存在另一种方法来通过变通办法或选择其他数据类型来减小此大小。
我想了解从函数调用返回指针的行为.假设我有以下简单代码:
int main(){
int i;
float *ssd;
ssd = test();
for (i = 0; i < 3; ++i) {
printf("%f, ", ssd[i]);
}
printf("\n \n");
memset(ssd, 0.0, 3*sizeof(float));
for (i = 0; i < 3; ++i) {
printf("%f, ", ssd[i]);
}
printf("\n \n");
}
float *test(){
float *buff = malloc(3* sizeof(float));
int i;
for (i = 0; i < 3; ++i) {
buff[i] = (float) (6.31 + i);
}
free(buff);
return buff;
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我在buff里面创建了一个临时缓冲区test().在我回来之前,我buff在 …