Quantcast

Use of Parallel.ForEach or Parallel.For for ActiViz data parallelism

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

Use of Parallel.ForEach or Parallel.For for ActiViz data parallelism

stevo
This post has NOT been accepted by the mailing list yet.
I am trying to test whether or not it is possible to achieve multithreading simply by using Parallel.ForEach statement on VTK pipeline.

Just to test-out whether or not it is or not, I have created the class that takes-in vtkImageData and adds an arbitrary constant to the vtkImageData using vtkImageMathematics:

class vtkcalculation
        {
            public void add_constant(vtkImageData dose3D, double constant)
            {
                vtkImageMathematics dose_addC = vtkImageMathematics.New();
                dose_addC.SetConstantC(constant);
                dose_addC.SetOperationToAddConstant();
                dose_addC.SetInput(dose3D);
                dose_addC.Update();
            }
        }

Then I'm trying to add different constants in parallel by using parallel.foreach:
            double[] numbers={1,2,3,4,5,6,7,8,9,10,12.3,34.4,1.3,1.5,6,3,16};
            Parallel.ForEach(numbers, (current_number, pls, index) =>
            {
                vtkcalculation calc = new vtkcalculation();
                calc.add_constant(dose3D, current_number);
            });

I would totally have given-up the idea, thinking it is too simple-minded...  only it "sometimes" works.  For the times that it does not work, I get the same exception at vtkImageMathmatics constructor line: "error: table already has a non-null entry at mteIndex"  

Is it possible to implement Parallel.ForEach or Parallel.For statements with VTK or would I have to resort to multithreading classes in VTK?  If latter is the case, would anyone know how to implement those for this case?

Thank you,
Steve
Loading...