草庐IT

MPI_ERR_BUFFER

全部标签

c++ - 如何将 MPI 派生数据类型用于 3D 数组?

我想编写一个在3D矩阵上运行的并行代码,其中每个进程都有自己的子矩阵,但为了完成他们的工作,他们需要一些关于其相邻进程的子矩阵(只是边界平面)的信息。我通过点对点通信发送这些信息,但我知道对于大型矩阵来说这不是一个好主意,所以我决定使用派生数据类型进行通信。我对mpi_type_vector有疑问:例如,我有一个NX*NY*NZ矩阵,我想将常量NY的平面发送到另一个进程我为此写下了这些行:MPI_Datatypesub;MPI_Type_vector(NX,NZ,NY*NZ,MPI_DOUBLE,&sub);MPI_Type_commit(&sub);但它不起作用(无法发送我想要的飞机

c++ - 在 C++ 中比较 buffer 和 const char*

将内存缓冲区与常量字符串进行比较的正确C++方法是什么-strcmp(buf,"sometext")?我想避免由于创建临时std::string对象而导致不必要的内存复制。谢谢。 最佳答案 如果您只是检查相等性,您可以使用std::equal#includeconstchar*text="sometext";constintlen=8;//lengthoftextif(std::equal(text,text+len,buf))...当然,如果您的缓冲区可以小于文本,这将需要额外的逻辑

c++ - MPI 收集/减少操作困惑?

在boosttutorial有收集和减少操作的例子。gather的代码如下:#include#include#include#includenamespacempi=boost::mpi;intmain(intargc,char*argv[]){mpi::environmentenv(argc,argv);mpi::communicatorworld;std::srand(time(0)+world.rank());intmy_number=std::rand();if(world.rank()==0){std::vectorall_numbers;gather(world,my_nu

c++ - MPI_ERR_TRUNCATE : On Broadcast

我有一个int我打算从根广播(rank==(FIELD=0))。intwinnerif(rank==FIELD){winner=something;}MPI_Barrier(MPI_COMM_WORLD);MPI_Bcast(&winner,1,MPI_INT,FIELD,MPI_COMM_WORLD);MPI_Barrier(MPI_COMM_WORLD);if(rank!=FIELD){cout但看来我明白了[JM:6892]***AnerroroccurredinMPI_Bcast[JM:6892]***oncommunicatorMPI_COMM_WORLD[JM:6892]*

c++ - 使用 CUDA-aware MPI 的要求

我想通过CUDA感知MPI在不同CUDA设备之间交换数据,如thisarticle中所述.据我了解,以下代码应该可以完成这项工作:#includeintmain(intargc,char*argv[]){intrank;float*ptr=NULL;constsize_telements=32;MPI_Statusstatus;MPI_Init(NULL,NULL);MPI_Comm_rank(MPI_COMM_WORLD,&rank);cudaMalloc((void**)&ptr,elements*sizeof(float));if(rank==0)MPI_Send(ptr,ele

c++ - 哪些库必须与 Protocol Buffer 生成的 C++ 代码链接

我有来自mytest.proto文件的mytest.cc和mytest.h输出,但我找不到关于如何为此使用g++编译对象的任何引用。(.proto很好,因为我可以使用Python)g++mytest.cc-l????????要包含哪些库? 最佳答案 我想你可能需要链接到libprotobufg++mytest.cc-lprotobuf-omytest 关于c++-哪些库必须与ProtocolBuffer生成的C++代码链接,我们在StackOverflow上找到一个类似的问题:

npm err!意外的输入末端1:379680

我最近安装了最新版本的nodejs,即v8.1.3,并且正在使用Windows10之后,我想安装Cordova和离子包,所以我运行了命令npminstall-gioniccordova运行此命令后,我会遇到以下错误!我受够了,因为此错误尚未在Google搜索中出现。这是我在CMD控制台上获得的错误日志npmERR!Unexpectedendofinputat1:379680npmERR!.1","osenv":"~0.1.3","path-isinside":"~1.0.1","read":"~1.0.7","read-npmERR!^npmERR!Acompletelogofthisrunc

tp8 升级TP框架版本,同时网站打不开,错误代码 ERR_ADDRESS_INVALID,启动内置服务器 运行PHP命令php think run 输出结果是空白

环境:windows11 phpstudy_pro  thinkphp8.0php8.2.9  一、升级TP框架发现php网站打不开,错误提示:错误代码ERR_ADDRESS_INVALID,但是静态网站可以打开二、运行命令,输出结果空白进入composer:选择composer,再选择对应网站的PHP版本,启动内置服务器按上面操作,发现输出结果是空白,没有任何东西三、启用VSCODE的xdebug调试在VSCODE中启用调试F5,在think文件中打断点全部勾上一直一步一步往下走,发现在提示错误出现异常。Fatalerror:UncaughtReflectionException:Class

c++ - 使用 C 和 C++ 的 Protocol Buffer

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。现在我有一个带有ProtocolBuffer的c/s程序(使用c++)。我想用c重写服务器。但是在.proto文件中有很多服务。该程序实现了rpc本身,而protocolbuffers-c提供了另一个。我希望有人向我展示如何实现此示例。service{rpcfoo(what)returns(what);}客户端用c++,服务器用c,怎么写这个服务。

c++ - 跨 MPI 节点共享内存以防止不必要的复制

我有一个算法,在每次迭代中,每个节点都必须计算数组的一部分,其中x_的每个元素都依赖于x的所有元素。x_[i]=some_func(x)//每个x_[i]依赖于整个x也就是说,每次迭代都取x并计算x_,这将是下一次迭代的新x。MPI的一种并行化方法是在节点之间拆分x_,并在计算完x_后调用Allgather,因此每个处理器会将其x_发送到所有其他处理器的x中的适当位置,然后重复。这是非常低效的,因为每次迭代都需要昂贵的Allgather调用,更不用说它需要与节点一样多的x拷贝。我想到了一种不需要复制的替代方法。如果程序在一台机器上运行,共享RAM,是否可以在节点之间共享x_(不复制)?