[vtkusers] Help with vtkMPIController

Andy Bauer andy.bauer at kitware.com
Mon Apr 24 09:12:33 EDT 2017


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 <595693085 at qq.com> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170424/d50178df/attachment-0001.html>


More information about the vtkusers mailing list