草庐IT

mpi_send

全部标签

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

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

c++ - 检查 write()/send() 是否可以无阻塞地处理整个缓冲区,否则失败(没有部分写入)

我正在使用SOCK_SEQPACKET连接,确保通过单个write()/send()调用发送整个缓冲区对我来说至关重要。我还在使用旨在通过一次调用处理完整数据block的设备驱动程序。同时,我想处理write()/send()由于缓冲区溢出而阻塞的情况,即我想反馈当前实现是否在这里遇到瓶颈。我正在使用glibc,Linux2.6。我需要实现一个接受缓冲区的方法,它要么完全发送一个缓冲区,要么指示由于阻塞导致的失败(即系统缓冲区溢出)。看起来使用send(...,MSG_DONTWAIT)/fcntl(...,O_NONBLOCK)不是解决方案,因为它们在报告EWOULDBLOCK/EA

c++ - Qt : send Key_Return and Key_Delete events

我正在使用QtEmbedded开发虚拟键盘,但遇到了一个小问题。事实上,我使用SignalMappers将键映射到键盘事件,以便在QTextEdit小部件中显示文本。一切正常,除了两个事件:Key_Return和Key_Delete;我不知道我做错了什么,也许你会有想法。这是一个经典的代码,发送字符:voidVirtualKeyboard::SendChar(intindex){QCharcharToSend(letters_.at(index)->text().at(0));//Getcharserver_->sendKeyEvent(charToSend.unicode(),QEv

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程序编译正常,但在执行时给出了段错误。消息是===============================================================

c++ - MVAPICH 在 MPI_Send 上挂起大于急切阈值的消息

在c++/mpi(mvapich)中有一个简单的程序,发送一个float类型的数组。当我使用MPI_Send、MPI_Ssend、MPI_Rsend时,如果数据的大小超过急切阈值(在我的程序中为64k),则在调用MPI_Send期间我的程序挂起。如果数组小于阈值,程序运行正常。源代码如下:#include"mpi.h"#include#includeintmain(intargc,char*argv[]){intmype=0,size=1;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&mype);MPI_Comm_size(MP

c++ - MPI - 随着进程数量的增加没有加速

我正在编写程序来测试数字是否为素数。一开始我计算分配给每个进程的数字,然后将这个数量发送给进程。接下来,执行计算并将数据发送回保存结果的进程0。下面的代码有效,但是当我增加进程数时,我的程序不会加速。在我看来,我的程序不能并行运行。怎么了?这是我在MPI的第一个项目,因此欢迎任何建议。我使用mpich2,并在IntelCorei7-950上测试我的程序。主要.cpp:if(rank==0){intworkers=(size-1);readFromFile(path);intelements_per_proc=(N+(workers-1))/workers;intrest=N%eleme