I have a dataset that is partitioned into 128 subdomains using the .pvtu framework, and I am trying to run some data processing which uses the Programmable Filter feature. I have run a trace on the GUI to do this process, and the output script is attached (along with three extra lines to output the time it takes to run). I run it using
mpirun -np [n] pvbatch pv_batch_test.py. Taking [n] to be 1 actually gives the shortest runtime of ~50 seconds, while taking [n] to be 6 gives the runtime to be ~80 seconds from each of the processes. This tells me that the commands are not really being run in parallel.
A few more things:
- I have heard that, in order to use an unstructured grid (which I am using) one needs to use the D3 filter to be able to distribute it across processes efficiently. However, I have also heard that already-partitioned unstructured grids (i.e. pvtu data) do not need this.
- I don’t really understand how MPI interacts with the Python script, but I assume (since this is all generated in the GUI) that each of the filters ought to be parallelized, or parallelizeable – am I wrong about this?
- For context about the actual script, the input data are the degrees of freedom of a 3x3 traceless, symmetric tensor, and the script just finds two of the eigenvectors and eigenvalues – I figured the calculation ought to be reasonably beefy to test how things operate in parallel.
I haven’t found anything in the documentation which strictly dictates what will be automatically parallelized and what will not be, but any help on that front (or getting the script to work efficiently) is appreciated.
pv_batch_test.py (19.7 KB)