如何在MPI中为多个进程创建结构
How to create structs for multiple processes in MPI
我是MPI编码的初学者。我希望有跨多个进程的结构。
我有一个计数最小草图的结构:
typedef struct CM_type{
long long count;
int depth;
int width;
int ** counts;
unsigned int *hasha, *hashb;
} CM_type;
我写了一个函数来初始化这个计数分钟草图。
std::vector<CM_type> CM_Init(int width, int depth, int seed)
{
int j;
prng_type * prng;
prng=prng_Init(-abs(seed),2);
#pragma omp parallel shared (width, depth, prng) private(j)
{
//CM_type cm_loc;
std::vector<CM_type> cm_loc;
//std::vector<CM_type> cm_loc;
cm_loc.depth=depth;
cm_loc.width=width;
cm_loc.count=0;
cm_loc.counts=(int **)calloc(sizeof(int *),cm_loc.width);
cm_loc.counts=(int *)calloc(sizeof(int), cm_loc.depth*cm_loc.width);
//cm->total = 0;
cm_loc.hasha=(unsigned int *)calloc(sizeof(unsigned int),cm_loc.depth);
cm_loc.hashb=(unsigned int *)calloc(sizeof(unsigned int),cm_loc.depth);
if (cm_loc.counts && cm_loc.hasha && cm_loc.hashb && cm_loc.counts[0])
{
for (j=0;j<depth;j++)
{
#pragma omp critical
{
cm_loc.hasha[j]=prng_int(prng) & MOD;
cm_loc.hashb[j]=prng_int(prng) & MOD;
// pick the hash functions
cm_loc.counts[j]=(int *) cm_loc.counts[0]+(j*cm_loc.width);
}
}
}
//else cm_loc = NULL;
return cm_loc[0];
}
}
我的目标是在多个过程中创建局部计数最小草图,然后独立初始化局部草图。当我运行这个代码时,我会得到这样的错误:
error: 'class std::vector<CM_type>' has no member named 'depth'
cm_loc.depth=depth;
^~~~~
error: 'class std::vector<CM_type>' has no member named 'width'
cm_loc.width=width;
等等。对于所有的结构成员,我都会遇到这个错误。如果需要,我可以给你更多的信息。请帮忙。非常感谢。
请阅读MPI上的几乎所有内容。您想要做的是琐碎的,因为MPI的工作方式是,所有主程序都是独立输入的,所有MPI进程都是独立的,不共享其地址空间的任何部分。(除非您使用更高级的功能来实现这一点(。因此,像这样的代码(未编译:-((做你想要的:
int main(int argc, char **argv) {
myType var; // one in each process!
MPI_Init(...);
.. operate on the local var ...
MPI_Allreduce (passing var and so on);
}
不需要OpenMP,这只会使您的示例变得复杂。表明你的问题发生了"当我运行这个代码时";,然后显示编译时错误也没有什么帮助。
正如其他人所指出的,您的直接问题是您的C++代码与MPI或其他任何东西无关!
相关文章:
- WMI检测进程创建事件-c++
- C++ 无法识别创建进程'telnet'
- 避免使用 boost::进程间::消息队列创建文件
- 从根权限进程创建可访问的文件
- gcc 找不到 -lgcc, g++.exe: 错误: 创建进程: 没有这样的文件或目录
- 如何在进程之间创建双向通道?
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 有没有办法为使用 Boost 生成的进程创建新的控制台窗口
- 如何在 Python 进程中访问由C++进程创建的互斥锁
- 是否有可能以及如何使用log4cxx库每个进程创建独立的记录仪
- 从创建进程创建的进程获取输出
- C++:监视 Windows 中的进程创建和终止
- 子进程如何告诉其父进程创建新的子进程
- 从“cmd”文件启动的进程创建进程
- 仅使用本地c++操作为多个进程创建共享内存
- 在OSX中使用C / c++获取进程创建日期时间
- Windows父进程和子进程创建
- 使用CreateProcessAsUser函数从提升进程创建非提升进程
- 为运行在非admin用户帐户中的进程创建防火墙规则
- 如何跟踪进程创建的ActiveX控件?