小编nat*_*ouf的帖子

在OpenMP并行代码中,memset并行运行会有什么好处吗?

我的内存块可能非常大(比L2缓存大),有时我必须将它们设置为全零.memset在串行代码中很好,但是并行代码呢?如果从并发线程调用memset实际上加快了大型数组的速度,有经验吗?或者甚至使用简单的openmp并行for循环?

c performance openmp

18
推荐指数
1
解决办法
2234
查看次数

同步对 MPI3 共享内存的访问:该代码是否能保证按 MPI 标准工作?

MPI-3 标准引入了共享内存,共享该内存的所有进程都可以读取和写入该内存,而无需调用 MPI 库。虽然有使用共享或非共享内存的单方面通信的示例,但我没有找到太多有关如何通过直接访问正确使用共享内存的信息。

我最终做了这样的事情,效果很好,但我想知道 MPI 标准是否保证它总是有效?

// initialization:
MPI_Comm comm_shared;
MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, i_mpi, MPI_INFO_NULL, &comm_shared);

// allocation
const int N_WIN=10;
const int mem_size = 1000*1000;
double* mem[10];
MPI_Win win[N_WIN];
for (int i=0; i<N_WIN; i++) {   // I need several buffers.
    MPI_Win_allocate_shared( mem_size, sizeof(double), MPI_INFO_NULL, comm_shared, &mem[i], &win[i] );
    MPI_Win_lock_all(0, win);
}

while(1) {
    MPI_Barrier(comm_shared);
    ... // write anywhere on shared memory
    MPI_Barrier(comm_shared);
    ... // read on shared memory written by other processes
}

// deallocation
for (int i=0; i<N_WIN; …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing mpi shared-memory numa

5
推荐指数
2
解决办法
918
查看次数

标签 统计

c ×2

mpi ×1

numa ×1

openmp ×1

parallel-processing ×1

performance ×1

shared-memory ×1