编译MPI / VTK Hello World

时间:2013-07-18 17:14:45

标签: c++ ubuntu command-line mpi vtk

我下载了VTK 6.0.0,对其进行了配置,生成并在我的Ubuntu 12.04中创建(没有错误)。我还打开了VTK_Group_MPIModule_vtkmrmpi的旗帜。我正在尝试使用命令行

编译VTK / MPI Hello World程序
sudo mpic++ -I $HOME/Downloads/VTK6.0.0Attempt2/Parallel/MPI mpi_vtk_Hello_World.cpp -I $HOME/Downloads/VTK6.0.0Attempt2/Parallel/Core -I $HOME/Downloads/VTK6.0.0Attempt2/Common/Core -o mpi_vtk_Hello_World

Hello world计划是:

#include "vtkMPIController.h" 

void process(vtkMultiProcessController* controller, void* vtkNotUsed(arg)) 
{ 
    int myId = controller->GetLocalProcessId(); 

    std::cout << "My process id is "; 
    std::cout << myId << "." << std::endl; 
} 

int main( int argc, char* argv[] ) 
{ 
    vtkMPIController* controller = vtkMPIController::New(); 
    controller->Initialize(&argc, &argv); 


    controller->SetSingleMethod(process, 0); 
    controller->SingleMethodExecute(); 


    controller->Finalize(); 
    controller->Delete(); 

    return 0; 
} 

然而,我收到一个错误说:

/tmp/cc6iq2lQ.o:mpi_vtk_Hello_World.cpp:function process(vtkMultiProcessController*, void*): error: undefined reference to 'vtkMultiProcessController::GetLocalProcessId()'

以及其他2个未定义引用的类似错误。

我不完全确定为什么会出现这些错误。我原以为它可能是因为CMAKE_INSTALL_PREFIX参数,但它是正确的。我也在想我可能正在使用错误的标志来启用MPI,如建议here

附加说明: 我也尝试使用VTK 5.8.0而不是these instructions。不幸的是,在运行sudo mpicc++命令后,我得到了与未定义引用相同的错误。

1 个答案:

答案 0 :(得分:0)

sudo mpic++ -I $HOME/Downloads/VTK/Parallel -lvtkParallel mpi_vtk_Hello_World.cpp -I $HOME/Downloads/VTK -I $HOME/Downloads/VTK/Common -o mpi_vtk_Hello_World

的工作原理。显然需要-lvtkParallel来帮助编译mpi / VTK代码。