VTK 6.0.0 をダウンロードして構成し、生成して、Ubuntu 12.04 で作成しました (エラーなし)。VTK_Group_MPI
とのフラグもオンにしましたModule_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 を有効にするために間違ったフラグを使用している可能性も考えていました。
追加メモ:
代わりに VTK 5.8.0 を使用してみ、これらの指示に従いました。残念ながら、sudo mpicc++
コマンドを実行した後、未定義の参照の同じエラーが発生しました。