[Paraview] capability of ParaView, Catalyst in distributed computing environment ...

u.utku.turuncoglu at be.itu.edu.tr u.utku.turuncoglu at be.itu.edu.tr
Fri Jun 17 04:17:42 EDT 2016


Hi All,

I was working on the issue recently and i am very close to having
prototype code but i had some difficulties in initialization of the
co-processing component with coprocessorinitializewithpython call. In my
case, two model components and adaptor have its own processing source (or
MPI_COMM_WORLD). For example, MPI processor 0, 1, 2, 3 are used by 1st
model, 4, 5, 6, 7 are used by 2nd model code and 8, 9, 10, 11 is used by
adaptor. The code basically handles transferring the grid information and
data to adaptor. So, the problem is that if i try to call my custom
coprocessorinitializewithpython call in adaptor (only in 8, 9, 10, 11)
then it hangs in g_coprocessor->Initialize(); (see code at the end of the
mail) step but if i call coprocessorinitializewithpython in the main code
that uses all the available processor (between 0 and 11) and it runs
without any problem. It seems that there is a restriction in the ParaView
side (expecially vtkCPProcessor::Initialize() that can be found in
CoProcessing/Catalyst/vtkCPProcessor.cxx) but i am not sure. Do you have
any suggestion about that? Do you think that is it possible to fix it
easily. Of corse the adaptor code could use all the processor but it is
better to have its own dedicated resource that might have GPU support in
those specific servers or processors. I am relatively new to VTK and it
might be difficult for me to fix it and i need your guidance to start.

Best Regards,

--ufuk

vtkCPProcessor* g_coprocessor;

extern "C" void my_coprocessorinitializewithpython_(const char*
pythonScriptName, const char strarr[][255], int *size) {
  if (pythonScriptName != NULL) {
    if (!g_coprocessor) {
      g_coprocessor = vtkCPProcessor::New();
      g_coprocessor->Initialize();
      vtkSmartPointer<vtkCPPythonScriptPipeline> pipeline =
vtkSmartPointer<vtkCPPythonScriptPipeline>::New();
      pipeline->Initialize(pythonScriptName);
      g_coprocessor->AddPipeline(pipeline);
      //pipeline->FastDelete();
    }

    if (!g_coprocessorData) {
      g_coprocessorData = vtkCPDataDescription::New();
      // must be input port for all model components and for all dimensions
      for (int i = 0; i < *size; i++) {
        g_coprocessorData->AddInput(strarr[i]);
        std::cout << "adding input port [" << i << "] = " << strarr[i] <<
std::endl;
      }
    }
  }
}



More information about the ParaView mailing list