我需要使用多个进程里用C实现并行矩阵乘法。 据我所知,因为每个进程都有自己的私有地址空间,我将不得不使用某种形式的进程间通信(IPC)的。 我做了一些环顾四周,找不到未使用多线程的实现。 我想知道是否有人知道去这是最最好的方法,无论是使用共享内存,消息传递,或管道? 我不要求一个解决方案,而是,如果有人知道,它的这些方法将与矩阵乘法更高效。 或者,如果有多个进程做一个常见的标准呢?
Answer 1:
同时处理的矩阵乘法的最有效的方式将被共享内存。 通过这种方式,你不必通过管道/消息序列化的矩阵,您可以直接适用于你的共享内存空间的乘法。
Answer 2:
共享内存将是这个问题的好办法,我想。 该过程可以计算自己的解决方案,并共享一个内存取解决方案结合在一起。
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, int size, int shmflg);
是共享内存的C函数一个(你需要shmat()
也许shmdt()
和shmctl()
太)。
你也需要关心的同步,这样的过程不操作相互计算。
我会用该信号灯 :看到用C信号灯和信号灯维基百科
文章来源: Most efficient matrix multiplication in C using fork() and IPC