jjzjj

c++ - 适用于 Linux 的免费并行 (MPI) 调试器?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion是否有用于调试MPI并行化C++代码的非商业/免费Linux工具?像AllineaDDT或TotalView这样的东西?我知道如何使用gdb附加到并行运行代码的技巧。但是我发现它们只是为了进行一些快速调试而变得乏味。那么是否有直接支持并行调试的基于GUI的工具(可能基于gdb)?

c++ - 将 MPI 与 c++11 和 CUDA 相结合

我正在编写分子动力学模拟,一些内核将使用CUDA进行计算。我从使用一些c++11功能的普通CPU实现开始我的代码。现在我必须添加一些CUDA代码,我必须使用不支持c++11功能的编译器(gcc在我的makefile中,我分别从所有cpp文件创建对象,最后将它们全部链接在一起。此外,我的代码以这样一种方式拆分,即可以使用“现代”编译器编译没有CUDA的部分,而使用旧编译器编译其余部分(利用CUDA)。我现在的问题是,这是否可以,或者我是否会/可能会遇到问题? 最佳答案 我不知道Cuda,但我知道的是将C++98和C++11目标文件链接

c++ - 有效地收集/分散任务

我正在使用的MPI实现本身并不支持完整的多线程操作(最高级别是MPI_THREAD_SERIALIZED,原因很复杂),所以我试图将来自多个线程的请求汇集到一个单个工作线程,然后将结果分散回多个线程。通过使用并发队列,我可以轻松地处理收集本地请求任务,并且MPInative支持排队异步任务。然而,问题是让双方相互交谈:为了将响应分散回各个线程,我需要对当前进行中的请求调用类似MPI_Waitany的方法,但在此期间MPIworker被有效阻塞,因此它无法从本地工作人员那里收集和提交任何新任务。//mpiworkerthreadstd::vectorrequests;//in-fligh

c++ - 使用 MPI 在多个内核上运行

我使用当前命令提交MPI作业:mpirun-npno.ofprocessorsfilename我的理解是上面的命令让我提交给4个通过MPI通信的独立处理器。然而,在我们的设置中,每个处理器都有4个未使用的内核.我的问题如下:是否可以从MPI运行命令行提交作业以在同一节点或多个节点上的多个内核上运行?如果是怎么办?以上是否需要在代码中进行任何特殊注释/设置?我确实从阅读一些文献中了解到,内核之间的通信时间可能与处理器之间的通信时间不同,因此确实需要考虑问题的分布方式……但是对于那个问题?还需要估算什么?最后,传输的数据量是否有限制?总线可以发送/接收多少数据有限制吗?缓存有限制吗?谢谢!

c++ - 使用 Boost::Test 并行代码

我想用boost::unit_test为我的并行(基于mpi)C++代码创建一些测试。我对使用测试框架有一些基本的经验。对我来说,主要的问题是,在使用并行代码时,将MPI::Init放在哪里,以便首先调用它。在我创建的测试套件中没有主要功能。此外,当某些断言在现有等级的子集上失败时,Boost::Test是否正确存在(相对于mpi)? 最佳答案 Boost测试有fixturesupport,它允许您针对每个测试用例、测试套件或全局执行设置/清理。听起来您应该将对MPI::Init的调用放在全局固定装置中。structMPIFixtu

python - MPI Newbie - 关于 'mpirun' 工作原理和进程管理的一些问题

首先,我不是专业的程序员,但我必须为我的项目编写代码(尽管我对C++和python有一定的熟练程度)。当我遇到困难时,我经常来这里,大多数时候从这里得到很好的解决方案,但现在我有关于MPI编程的基本问题,否则在我了解它的概念之前我无法真正继续。这是我对问题的描述,我想为科学计算的算法创建代码。代码可以分为两部分。A.)矩阵vector乘法和矩阵求逆。这部分相对简单,我什至有自己的MPI代码用于这部分B.)调用外部MPI-ready程序进行更复杂的计算(这部分应该也很简单,因为它只是调用UNIX命令行)。我遇到的问题是如何将这两个部分连接在一起?我的算法是这样的,forkinspecif

c++ - 通过 boost :MPI got error 发送一个简单的 boost 图形对象

我正在通过修改“/apps/boost_1_56_0/libs/graph/test”中的代码“serialize.cpp”并尝试通过boostMPI通过网络发送一个boostgraph对象来进行测试。它编译得很好,但是当我使用mpirun运行可执行文件时,我得到了这个错误:terminatecalledafterthrowinganinstanceof'boost::archive::archive_exception'what():inputstreamerror.我想我正在读取一个空缓冲区,但不确定如何修复它。#include#include#include#include#in

c++ - MPI 在 C++ 中发送具有 vector 属性的结构

我想发送一个具有vector属性的结构。typedefstruct{intid;vectorneighbors;}Node;我知道我必须创建一个MPI派生数据类型,如thisanswer,但我不知道在我的情况下该怎么做,因为我在结构中有一个vector。 最佳答案 如果你想保持高水平并发送对象,那么Boost.MPI是个不错的选择。使用Boost.MPI,您可以为结构指定高级序列化。您不能(正确地)静态确定vector数据成员的偏移量。拼凑出一个有效的类型当然是可能的。但这也是搬起石头砸自己脚的好方法。您会在代码中引入假设(例如,v

c++ - 毫秒 mpi 错误 : unable to allocate launching block

我使用msmpi在VS2015中创建了简单的控制台程序。#include#include#includeintmain(intargc,char**argv){intrank=0,size=0;MPI_Init(&argc,&argv);/*startsMPI*/MPI_Comm_rank(MPI_COMM_WORLD,&rank);/*getcurrentprocessid*/MPI_Comm_size(MPI_COMM_WORLD,&size);if(rank==0){charhelloStr[]="HelloWorld";//MPI_Send(helloStr,_countof(

c++ - MPI程序的段错误

我正在用C++编写一个使用MPI的程序。我的代码的简化版本是#include#include#include#include#defineRNumber3000000//Numberofloopstogousingnamespacestd;classLObject{/*Somethinghere*/public:voidFillArray(long*RawT){/*Doessomething*/for(inti=0;i程序编译正常,但在执行时给出了段错误。消息是===============================================================