Help with vtkMPIController

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Help with vtkMPIController

595693085
Dear VTK users:
   I'm a new learner of vtk and mpi, and I'm trying to do volume rendering on a cluster(ubuntu).I heared "vtkCompositeRenderManager" or "vtkIceTCompositePass" might realize it. But I have met some problems at the beginning when using vtkMPIController->Initialize() in a simple code. When I run it on a single computer, it's fine, but when I run it with "mpiexec -np 4 -f machine_config ./HelloWorld" command, some errors have occurred as follows:

Generic Warning: In /home/root/Development/DevelopmentTools/VTK_Source/VTK-7.1.1/Parallel/MPI/vtkMPICommunicator.cxx, line 72
MPI had an error
------------------------------------------------
Unknown error class, error stack:
PMPI_Comm_dup(177)....................: MPI_Comm_dup(MPI_COMM_WORLD, new_comm=0x6ddc40) failed
PMPI_Comm_dup(162)....................:
MPIR_Comm_dup_impl(57)................:
MPIR_Comm_copy(739)...................:
MPIR_Get_contextid_sparse_group(500)..:
MPIR_Allreduce_impl(764)..............:
MPIR_Allreduce_intra(257).............:
allreduce_intra_or_coll_fn(163).......:
MPIR_Allreduce_intra(417).............:
MPIDU_Complete_posted_with_error(1137): Process failed
------------------------------------------------

  I have googled it for a long time, but  there are fewer similar problems.And what I have tried are as follows:
  (1)When build VTK with cmake, I turn on the flag for Module_vtkParallelMPI,VTK_Group_MPI and other options including "parallel" and "mpi". And I also set the MPIEXE_MAX_NUMPROS and VTK_MPI_MAX_NUMPROS to 256.
  (2)when using comand such as "mpiexec -np 8 ./HelloWorld", it's Ok, but when I use "mpiexec -np 8 -f machine_config ./HelloWorld" on multiple nodes, MPI errors occurred. In addition, when using "mpiexec -np 8 -f machine_config ./OtherMPICodes" on other MPI codes, it's also fine. So I just want to know what else is needed to run the vtk-mpi program.
  (3)I have added some "printf" messages in the vtk-mpi code, and I found the error ocurred when "vtkMPIController->Initialize()", So I think the error might be associated with the execute command.
  (4)I am new at programming expecially in mpi and I also know little about cmakelists. So the error also might be associated with my code and cmake files. I will paste them in the end.

  I am not from an English spenking conutry, and I struggled with vtk learnning. But my teacher told me vtk is a very good tool and thus I will not give up. Howerer, this issure has annoyed me for nearly a week. Could you give me some suggestions...Any help is appreciated!

====================================code===========================================
  Code:
  #include <vtkMPIController.h>
  #include <vtkSphere.h>
  #include <stdio.h>

  void process(vtkMultiProcessController* controller, void* vtkNotUsed(arg))
  {
    int myId = controller->GetLocalProcessId();
    int processes_number= controller->GetNumberOfProcesses();
    printf("Hello from %d of %d!\n",myId,processes_number);
  }

  int main( int argc, char* argv[] )
  {
    printf("test0\n");
    vtkMPIController* controller = vtkMPIController::New();
    printf("test1\n");
    controller->Initialize(&argc, &argv);
    if (controller->IsA("vtkThreadedController"))
    {
      // Set the number of processes to 8 for this example.
      controller->SetNumberOfProcesses(8);
    }
 
    int numProcs = controller->GetNumberOfProcesses();
    controller->SetSingleMethod(process, 0);
    controller->SingleMethodExecute();
    controller->Finalize();
    controller->Delete();

    return 0;
  }

====================================cmakelists===========================================
  cmakelists:
  cmake_minimum_required(VERSION 2.8)
  #find_package(MPI REQUIRED)
  find_package(VTK COMPONENTS
    vtkParallelMPI
    vtkRenderingParallel
    )
  include(${VTK_USE_FILE})
  #ADD_DEFINITIONS("-DMPICH_IGNORE_CXX_SEEK")
  ADD_EXECUTABLE(mpi_composite mpi_composite.cpp)
  TARGET_LINK_LIBRARIES (mpi_composite ${VTK_LIBRARIES})

====================================machine_config===========================================
  machine_config(all install vtk, mpi and can run other MPI codes except vtk-mpi codes):
  host1-machine:2
  host2-machine:2
  host3-machine:2
  host4-machine:2
 
  PS.:Could you tell me whether vtk can realize parallel volume rendering with dicom files in multiple nodes?I have realized it with   volume render in a single computer, but I'm not sure whether it can be realized with mpi in multiple nodes..Thanks.

                                                                                                                                  a struggling college student.

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Help with vtkMPIController

Andy Bauer
Hi,

I would recommend trying this out with ParaView (paraview.org) and see if it works there. Also, you may want to just use ParaView to do what you want for parallel volume rendering of dicom files. Writing code to do that is non-trivial and even many advanced VTK developers would spend a significant amount of time writing code to do that.

Best,
Andy

On Wed, Apr 19, 2017 at 9:00 PM, 595693085 <[hidden email]> wrote:
Dear VTK users:
   I'm a new learner of vtk and mpi, and I'm trying to do volume rendering on a cluster(ubuntu).I heared "vtkCompositeRenderManager" or "vtkIceTCompositePass" might realize it. But I have met some problems at the beginning when using vtkMPIController->Initialize() in a simple code. When I run it on a single computer, it's fine, but when I run it with "mpiexec -np 4 -f machine_config ./HelloWorld" command, some errors have occurred as follows:

Generic Warning: In /home/root/Development/DevelopmentTools/VTK_Source/VTK-7.1.1/Parallel/MPI/vtkMPICommunicator.cxx, line 72
MPI had an error
------------------------------------------------
Unknown error class, error stack:
PMPI_Comm_dup(177)....................: MPI_Comm_dup(MPI_COMM_WORLD, new_comm=0x6ddc40) failed
PMPI_Comm_dup(162)....................:
MPIR_Comm_dup_impl(57)................:
MPIR_Comm_copy(739)...................:
MPIR_Get_contextid_sparse_group(500)..:
MPIR_Allreduce_impl(764)..............:
MPIR_Allreduce_intra(257).............:
allreduce_intra_or_coll_fn(163).......:
MPIR_Allreduce_intra(417).............:
MPIDU_Complete_posted_with_error(1137): Process failed
------------------------------------------------

  I have googled it for a long time, but  there are fewer similar problems.And what I have tried are as follows:
  (1)When build VTK with cmake, I turn on the flag for Module_vtkParallelMPI,VTK_Group_MPI and other options including "parallel" and "mpi". And I also set the MPIEXE_MAX_NUMPROS and VTK_MPI_MAX_NUMPROS to 256.
  (2)when using comand such as "mpiexec -np 8 ./HelloWorld", it's Ok, but when I use "mpiexec -np 8 -f machine_config ./HelloWorld" on multiple nodes, MPI errors occurred. In addition, when using "mpiexec -np 8 -f machine_config ./OtherMPICodes" on other MPI codes, it's also fine. So I just want to know what else is needed to run the vtk-mpi program.
  (3)I have added some "printf" messages in the vtk-mpi code, and I found the error ocurred when "vtkMPIController->Initialize()", So I think the error might be associated with the execute command.
  (4)I am new at programming expecially in mpi and I also know little about cmakelists. So the error also might be associated with my code and cmake files. I will paste them in the end.

  I am not from an English spenking conutry, and I struggled with vtk learnning. But my teacher told me vtk is a very good tool and thus I will not give up. Howerer, this issure has annoyed me for nearly a week. Could you give me some suggestions...Any help is appreciated!

====================================code===========================================
  Code:
  #include <vtkMPIController.h>
  #include <vtkSphere.h>
  #include <stdio.h>

  void process(vtkMultiProcessController* controller, void* vtkNotUsed(arg))
  {
    int myId = controller->GetLocalProcessId();
    int processes_number= controller->GetNumberOfProcesses();
    printf("Hello from %d of %d!\n",myId,processes_number);
  }

  int main( int argc, char* argv[] )
  {
    printf("test0\n");
    vtkMPIController* controller = vtkMPIController::New();
    printf("test1\n");
    controller->Initialize(&argc, &argv);
    if (controller->IsA("vtkThreadedController"))
    {
      // Set the number of processes to 8 for this example.
      controller->SetNumberOfProcesses(8);
    }
 
    int numProcs = controller->GetNumberOfProcesses();
    controller->SetSingleMethod(process, 0);
    controller->SingleMethodExecute();
    controller->Finalize();
    controller->Delete();

    return 0;
  }

====================================cmakelists===========================================
  cmakelists:
  cmake_minimum_required(VERSION 2.8)
  #find_package(MPI REQUIRED)
  find_package(VTK COMPONENTS
    vtkParallelMPI
    vtkRenderingParallel
    )
  include(${VTK_USE_FILE})
  #ADD_DEFINITIONS("-DMPICH_IGNORE_CXX_SEEK")
  ADD_EXECUTABLE(mpi_composite mpi_composite.cpp)
  TARGET_LINK_LIBRARIES (mpi_composite ${VTK_LIBRARIES})

====================================machine_config===========================================
  machine_config(all install vtk, mpi and can run other MPI codes except vtk-mpi codes):
  host1-machine:2
  host2-machine:2
  host3-machine:2
  host4-machine:2
 
  PS.:Could you tell me whether vtk can realize parallel volume rendering with dicom files in multiple nodes?I have realized it with   volume render in a single computer, but I'm not sure whether it can be realized with mpi in multiple nodes..Thanks.

                                                                                                                                  a struggling college student.

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Loading...