jjzjj

c++ - 谐波级数和 c++ MPI 和 OpenMP

我正在尝试同时使用MPI和opemMP制作并行版本的“HarmonicProgressionSum”问题。但是输出在每个过程中都是不同的。谁能帮我解决这个问题?并行程序:(MPI和OpenMP)#include#include#include#include#include#include#include#defined10//NumbersofDigits(Example:5=>0,xxxxx)#definen1000//ValueofN(Example:5=>1/1+1/2+1/3+1/4+1/5)usingnamespacestd;doublet_ini,t_fim,t_tot;

c++ - MPI_Allgather 中的奇怪死锁

经过大量谷歌搜索,我不知道是什么导致了这个问题。在这里:我在我的代码中有一个对MPI_Allgather的简单调用,我对它进行了双重、三次和四次检查以确保正确(发送/接收缓冲区大小合适;调用中的发送/接收大小正确),但是对于“大量”进程导致死锁或MPI_ERR_TRUNCATE。用于Allgather的通信器使用MPI_Comm_split从MPI_COMM_WORLD中分离出来。对于我当前的测试,等级0分配给一个通信器,其余等级分配给第二个通信器。对于6个或更少的总等级,Allgather工作得很好。如果我使用7个等级,我会得到一个MPI_ERR_TRUNCATE。8个行列,僵局。我

c++ - clock() 和 MPI_Wtime() 之间的区别

快速提问。对于我的代码的MPI实现,我在这两个方面都有很大的不同。我知道MPI_Wtime是每个处理器经过的实时时间,而clock()给出了预期时间的粗略概念。有人想添加一些断言吗? 最佳答案 clock函数完全没用。它测量cpu时间,而不是实时/墙上时间,而且它有以下严重问题:在大多数实现中,分辨率都非常差,例如1/100秒。CLOCKS_PER_SECOND不是分辨率,只是比例。使用CLOCKS_PER_SECOND的典型值(例如,Unix标准要求它为100万),clock将在32-分钟内溢出位系统。溢出后返回-1。大多数历史实

c++ - OpenMP、MPI、POSIX 线程、std::thread、boost::thread 如何关联?

有几种方法可以实现多线程。std::thread最终由C++11标准引入,但可以有效地使用boost::thread。每种技术都有特定的语法和内容,但大致用于CPU并行编程。但它们有不同的作用。我知道,例如,MPI和OpenMP用于不同的内存模型。我还知道,技术的选择实际上并不是唯一的,因此可以使用另一种技术(同样是MPI和OpenMP)。为什么它们用于不同的效果但仍然使用相同的源(CPU)?如果我基于这些技术中的每一种技术编译具有并行性的C++程序,会有什么区别(从操作系统和硬件的角度来看)?例如,OpenMP或std::thread使用POSIX线程吗?如果是这样,C++11的线程

c++ - 使用 mpi 将矩阵写入单个 txt 文件

我有一个巨大的矩阵,我将它分成一些子矩阵,然后对其进行一些计算。在这些计算之后,我必须将该矩阵写入单个文件以进行后期处理。是否可以将结果写入单个文本文件,我该怎么做?例如,我们有一个在y方向上划分的nxny矩阵(每个进程都有一个nxrank矩阵),我们想将nx*ny矩阵写入单个文本文件。 最佳答案 所以将大量数据写成文本并不是一个好主意。它真的非常非常慢,它会生成不必要的大文件,而且处理起来很痛苦。大量数据应该写成二进制,只有人类的摘要数据写成文本。让计算机要处理的东西对计算机来说很容易,只有你真正要坐下来阅读的东西对你来说很容易处

c++ - 创建一个跨 MPI 进程保持同步的计数器

我在使用基本的comm和groupMPI2方法方面有相当多的经验,并且使用MPI进行了相当多的令人尴尬的并行模拟工作。到目前为止,我已经将我的代码结构化为具有一个调度节点和一堆工作节点。调度节点有一个将与模拟器一起运行的参数文件列表。它使用参数文件为每个工作节点播种。工作节点运行它们的模拟,然后请求调度节点提供的另一个参数文件。一旦运行了所有参数文件,调度节点将关闭每个工作节点,然后再自行关闭。参数文件通常命名为“Par_N.txt”,其中N是标识整数(例如-N=1-1000)。所以我在想,如果我可以创建一个计数器,并且可以让这个计数器在我的所有节点之间同步,我就可以消除对调度节点的需

hadoop - 什么是比较 MPI 和 MapReduce 的良好基准测试方法?

我知道它的经验法则:大数据、非迭代、容错=>MapReduce;速度、小数据、迭代、非Mapper-Reducer类型=>MPI(HadoopMapReducevsMPI(vsSparkvsMahoutvsMesos)-Whentouseoneovertheother?)。我想知道的是我应该使用什么基准测试方法来证明MapReduce适用于大数据、非迭代、容错的情况。我应该使用什么基准测试方法来证明MPI在速度、小数据和迭代情况下表现出色。非常感谢您提供的任何帮助 最佳答案 你可以看看BigDataBench.它具有一系列不同的工作

hadoop - MPI 数据挖掘库

有没有使用(或可以被)MPI(消息传递接口(interface))的数据挖掘库?我正在寻找类似于ApacheMahout但可以轻松集成到MPI环境中的东西。我想使用MPI的原因是配置(与Hadoop相比)很容易。还是在数据挖掘场景中使用MPI没有意义? 最佳答案 MPI(这是一个概念,而不是软件本身!)没有理由比Hadoop/Mahout更容易安装。事实上,后两者目前一团糟,特别是因为它们的Java库困惑。ApacheBigtop试图使它们更易于安装,一旦您掌握了一些基础知识,就可以了。但是:如果您的数据很小(即它可以在单个节点上处

Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)——什么时候使用其中一个?

我是并行计算的新手,刚开始在AmazonAWS上试用MPI和Hadoop+MapReduce。但我对何时使用一个而不是另一个感到困惑。例如,我看到的一个常见的经验法则建议可以概括为...大数据、非迭代、容错=>MapReduce速度、小数据、迭代、非Mapper-Reducer类型=>MPI但是,我还看到了MPI(MR-MPI)上的MapReduce实现,它不提供容错,但是seemstobe在某些基准测试中比Hadoop上的MapReduce更高效,并且似乎使用核外内存处理大数据。相反,新一代HadoopYarn及其分布式文件系统(HDFS)上也有MPI实现(MPICH2-YARN)。

MPI坚持不懈地打电话

我正在尝试实施某种形式的持续通话。不知何故,以下代码一直在悬挂-我猜想我一定已经引入了僵局,但不能真正缠绕我的头...MPI_Requestr[4];[...]MPI_Send_init(&Arr[1][1],1,MPI_DOUBLE,1,A,MPI_COMM_WORLD,&r[0]);MPI_Recv_init(&Arr[1][0],1,MPI_DOUBLE,0,A,MPI_COMM_WORLD,&r[1]);MPI_Send_init(&Arr[2][1],1,MPI_DOUBLE,0,B,MPI_COMM_WORLD,&r[2]);MPI_Recv_init(&Arr[2][0],1,M