Boost 增强MPI示例valgrind输出

Boost 增强MPI示例valgrind输出,boost,mpi,valgrind,Boost,Mpi,Valgrind,我试图使用这个()示例47.2来理解我自己使用valgrind运行的boost mpi代码的valgrind输出。下面的代码运行良好,我得到了“99”。然而,当我使用valgrind运行它时,我收到了“Syscall param write(buf)指向未初始化字节”的抱怨 #include <boost/mpi.hpp> #include <iostream> int main(int argc, char *argv[]) { boost::mpi::envir

我试图使用这个()示例47.2来理解我自己使用valgrind运行的boost mpi代码的valgrind输出。下面的代码运行良好,我得到了“99”。然而,当我使用valgrind运行它时,我收到了“Syscall param write(buf)指向未初始化字节”的抱怨

#include <boost/mpi.hpp>
#include <iostream>

int main(int argc, char *argv[])
{
  boost::mpi::environment env{argc, argv};
  boost::mpi::communicator world;
  if (world.rank() == 0)
  {
    int i;
    world.recv(1, 16, i);
    std::cout << i << '\n';
  }
  else if (world.rank() == 1)
  {
    world.send(0, 16, 99);
  }
}

Syscall param write(buf) points to uninitialised byte(s)
at 0x37BEA0E6FD: ??? (in /lib64/libpthread-2.12.so)
.......
by 0x409B70: main (e47.2.cpp:6)
Address 0x7feffec48 is on thread 1's stack
.......
#包括
#包括
int main(int argc,char*argv[])
{
boost::mpi::环境环境{argc,argv};
boost::mpi::communicator world;
if(world.rank()==0)
{
int i;
世界记录(1,16,i);

std::难道你没有提到你使用了什么MPI库吗?一些MPI库已知不是Valgrind clean。例如OpenMPI FAQ包含一个条目,说明库可能会写入未初始化的内存。在这种情况下,可以使用所谓的抑制文件来阻止Valgrind发出警告。@macelee Boost MPI library。非常感谢,我现在理解它。您没有提到您使用的MPI库。一些MPI库已知不是Valgrind clean。例如OpenMPI FAQ包含一个条目,说明库可能写入未初始化的内存。在这种情况下,可以使用所谓的抑制文件来阻止Valgrind发出警告。@macelee Boost MPI library。非常感谢,我现在明白了。