[Paraview] CoProcessing
Jacques Papper
jacques.papper at gmail.com
Wed Aug 4 19:21:39 EDT 2010
Thanks Pat,
I am trying to compile my first attempt.
Although I do find the headers I need, I am having some trouble identifying
which libraries I need to link to.
For example, I assume that I should be linking to libvtkCoProcessor.so ...
Although I find this library in the compilation folder (under bin), I do not
find it in the make installed version under lib...
Is this normal ?
Best,
Jacques
2010/8/4 pat marion <pat.marion at kitware.com>
> Below is a simple cxx program I have used for testing. It creates one
> sphere per process, positions the sphere as a function of the process id,
> and the spheres grow/shrink over time.
>
> Pat
>
> #include "vtkCPProcessor.h"
> #include "vtkCPPythonScriptPipeline.h"
> #include "vtkMultiProcessController.h"
> #include "vtkXMLUnstructuredGridReader.h"
> #include "vtkUnstructuredGrid.h"
> #include "vtkCPDataDescription.h"
> #include "vtkCPInputDataDescription.h"
> #include "vtkSmartPointer.h"
> #include "vtkPolyData.h"
> #include "vtkSphereSource.h"
>
> #include <stdio.h>
> #include <string>
> #include <sstream>
>
> static unsigned int procId;
>
> void myprint(const std::string& str)
> {
> printf("driver (%u): %s\n", procId, str.c_str());
> }
>
> class DataGenerator {
> public:
>
> DataGenerator()
> {
> this->Sphere = vtkSmartPointer<vtkSphereSource>::New();
> this->Sphere->SetThetaResolution(30);
> this->Sphere->SetPhiResolution(30);
> this->Sphere->SetCenter(procId*4.0, 0, 0);
> this->Index = 0;
> }
>
> vtkSmartPointer<vtkPolyData> GetNext()
> {
> double radius = fabs(sin(0.1 * this->Index));
> this->Index++;
> this->Sphere->SetRadius(1.0 + radius);
> this->Sphere->Update();
> vtkSmartPointer<vtkPolyData> ret = vtkSmartPointer<vtkPolyData>::New();
> ret->DeepCopy(this->Sphere->GetOutput());
> return ret;
> }
>
> protected:
>
> int Index;
> vtkSmartPointer<vtkSphereSource> Sphere;
>
>
> };
>
> int main(int argc, char* argv[])
> {
> if (argc < 3)
> {
> printf("Usage: %s <cp python file> <number of steps>\n", argv[0]);
> return 1;
> }
>
> std::string cpPythonFile = argv[1];
> int nSteps = atoi(argv[2]);
>
> myprint("starting coprocessor");
>
> vtkCPProcessor* processor = vtkCPProcessor::New();
> processor->Initialize();
> vtkCPPythonScriptPipeline* pipeline = vtkCPPythonScriptPipeline::New();
>
> // mpi was initialized when we called vtkCPPythonScriptPipeline::New()
> procId =
> vtkMultiProcessController::GetGlobalController()->GetLocalProcessId();
>
>
> // read the coprocessing python file
> myprint("loading pipeline python file: " + cpPythonFile);
> int success = pipeline->Initialize(cpPythonFile.c_str());
> if (!success)
> {
> myprint("aborting");
> return 1;
> }
>
> processor->AddPipeline(pipeline);
> pipeline->Delete();
>
> if (nSteps == 0)
> {
> return 0;
> }
>
> // create a data source
> DataGenerator generator;
>
> // do coprocessing
> double tStart = 0.0;
> double tEnd = 1.0;
> double stepSize = (tEnd - tStart)/nSteps;
>
> vtkCPDataDescription* dataDesc = vtkCPDataDescription::New();
> dataDesc->AddInput("input");
>
> for (int i = 0; i < nSteps; ++i)
> {
>
> double currentTime = tStart + stepSize*i;
> std::stringstream timeStr;
> timeStr << "time(" << i << ", " << currentTime << ")";
>
>
> dataDesc->SetTimeData(currentTime, i);
>
> myprint("call RequestDataDescription, " + timeStr.str());
> int do_coprocessing = processor->RequestDataDescription(dataDesc);
>
> if (do_coprocessing)
> {
> myprint("calling CoProcess, " + timeStr.str());
>
> vtkSmartPointer<vtkDataObject> dataObject =
> generator.GetNext();
>
> dataDesc->GetInputDescriptionByName("input")->SetGrid(dataObject);
> processor->CoProcess(dataDesc);
> }
> }
>
>
> myprint("finalizing");
> dataDesc->Delete();
> processor->Finalize();
> processor->Delete();
>
> return 0;
>
> }
>
>
>
> On Wed, Aug 4, 2010 at 12:14 PM, Andy Bauer <andy.bauer at kitware.com>wrote:
>
>> Hi Jacques,
>>
>> There is a polyhedra cell type in VTK now --
>> http://www.vtk.org/doc/nightly/html/classvtkPolyhedron.html
>> As far as I know it works with all of the proper filters but since I
>> haven't tried it yet I won't promise that. The good news is that Will
>> Schroeder had a high interest in it and probably worked on some of it so I'd
>> assume that it's working quite well right now.
>>
>> As for Phasta, it does run in parallel (as props to their developers it
>> was a finalist for the 2009 Gordon Bell prize). The grid is already
>> partitioned and each process runs the adaptor and creates an unstructured
>> grid from its portion of the partitioned mesh. Thus, there isn't any need
>> for mpi calls in the adaptor code. If you had ghost cell information in
>> your partitioned mesh and wanted to get fancy you should be able to add that
>> to your partitioned grid to make some of the filters faster but I haven't
>> tried that.
>>
>> Andy
>>
>>
>> On Wed, Aug 4, 2010 at 11:58 AM, Jacques Papper <jacques.papper at gmail.com
>> > wrote:
>>
>>> Thanks a lot Andy, Takuya,
>>>
>>> I'm using the PhastaAdaptor, and the FortranAdaptorAPI as a guide for the
>>> moment.
>>> I know there were talks of getting POLYHEDRAL cell support in VTK. Do you
>>> know if this is there yet?
>>> My dataset is multiregion unstructured polyhedral mesh domain decomposed
>>> amongst each processor.
>>>
>>> Is the Phasta code parallelized ? If so, I do not see any MPI statements
>>> in the adaptor code ?
>>>
>>> Jacques
>>>
>>> 2010/8/4 Andy Bauer <andy.bauer at kitware.com>
>>>
>>> Hi Jacques,
>>>>
>>>> What type of data set do you have? Even though the PHASTA adaptor (
>>>> ParaView/CoProcessing/Adaptors/FortranAdaptors/PhastaAdaptor) is for fortran
>>>> code it may give you an idea. Also stepping through the example in
>>>> ParaView/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptCoProcessingExample.cxx
>>>> may help as well.
>>>>
>>>> I'll spend some time this week putting up a skeleton of a simulation
>>>> code on the coprocessing wiki that should hopefully be easier to follow.
>>>> I'll let you know when it's done.
>>>>
>>>> Andy
>>>>
>>>> On Wed, Aug 4, 2010 at 8:02 AM, Jacques Papper <
>>>> jacques.papper at gmail.com> wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> Sorry for my last post, I figured out that I had wrongly set my
>>>>> PYTHONPATH..
>>>>> All the tests work ok now. Still interested in CoProcessing adaptors
>>>>> examples though :)
>>>>>
>>>>> Thanks
>>>>> Jacques
>>>>>
>>>>> 2010/8/4 Jacques Papper <jacques.papper at gmail.com>
>>>>>
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I'm starting to look into the ParaView CoProcessing libraries.
>>>>>> I just pulled from git today, and compiled it all up following the
>>>>>> guidelines in :
>>>>>> http://www.paraview.org/Wiki/CoProcessing
>>>>>> I didn't find :
>>>>>> *BUILD_PYTHON_COPROCESSING_ADAPTOR
>>>>>> *but instead :
>>>>>> PARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator
>>>>>> anyway the compilation went through without any issues.
>>>>>> I then tried :
>>>>>>
>>>>>> ctest -R CoProcessing
>>>>>> Test project /users/boreas01/jacques/PARAVIEW/ParaView-bin
>>>>>> Start 491: CoProcessingTestPythonScript
>>>>>> 1/3 Test #491: CoProcessingTestPythonScript ........... Passed
>>>>>> 0.45 sec
>>>>>> Start 492: CoProcessingPythonScriptGridPlot
>>>>>> 2/3 Test #492: CoProcessingPythonScriptGridPlot .......***Failed
>>>>>> 0.09 sec
>>>>>> Start 493: CoProcessingPythonScriptPressurePlot
>>>>>> 3/3 Test #493: CoProcessingPythonScriptPressurePlot ...***Failed
>>>>>> 0.09 sec
>>>>>>
>>>>>> 33% tests passed, 2 tests failed out of 3
>>>>>>
>>>>>> Total Test time (real) = 0.68 sec
>>>>>>
>>>>>> The following tests FAILED:
>>>>>> 492 - CoProcessingPythonScriptGridPlot (Failed)
>>>>>> 493 - CoProcessingPythonScriptPressurePlot (Failed)
>>>>>> Errors while running CTest
>>>>>>
>>>>>> Is this a problem in my current installation or on the master branch ?
>>>>>>
>>>>>>
>>>>>> Finally, I would like to start writing an adaptor to a C++
>>>>>> parallelised code. Can you tell me what is the closest code I can inspire
>>>>>> myself from ?
>>>>>>
>>>>>>
>>>>>> Thank you,
>>>>>> Jacques
>>>>>>
>>>>>>
>>>>>> PS sorry mixed up the subjects..
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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 ParaView Wiki at:
>>>>> http://paraview.org/Wiki/ParaView
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>>
>>>>>
>>>>
>>>
>>
>> _______________________________________________
>> 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 ParaView Wiki at:
>> http://paraview.org/Wiki/ParaView
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.paraview.org/mailman/listinfo/paraview
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20100805/de72cc8a/attachment-0001.htm>
More information about the ParaView
mailing list