Almost of the modules are parallelized, but typically have to Partition'd
to composite fields to run in parallel on a platform that's SMP-enabled and
you have started dxexec with two or more processors.  A good place to start
is to use the Partition module after Import with the default settings.  The
result will be a composite field (i.e., each processor gets a partition to
work on with pointers to the partitions in shared memory, boundary
artifacts are taken care of automaticallly) which will be used downstream.
Render always runs in parallel if you are running dxexec in SMP mode
independent of using Partition.  The use of Partition can be optimized
(i.e., placement in the network, changing options) if you know more about
your data and how a particular module/algorithm will operate.

The SMP parallelism uses fork-join, which of course, is a bit different on
each machine.  This approach is used because of DX's origins on a 32-way
SMP over a decade ago, which predates the existence of threads.  There is
some discussion of this in the user's reference and programmer's guides.


Randall Hopper <[EMAIL PROTECTED]>@opendx.watson.ibm.com on 01/17/2002
05:33:29 PM

Please respond to [email protected]

Sent by:    [EMAIL PROTECTED]


To:    [email protected]
cc:
Subject:    [opendx-users] Re: OpenDX on SMP Linux - how to do parallel?



Raphael Arlitt:
 |Since installing got much better understood by me and co-workers I got
 |encouraged to try the SMP mode for the Linuxboxes on two processor
 machines
...
 |The top command shows 100% (200 % total) for each processor and I am
 never
 |able to cross the 100% mark and get work done by more than one
 processors.
 |
 |How can I check if my SMP OpenDX build was successful? How can I use the
 |program in parallel mode? Which modules are parallelized?
 |
 |I assume the parallelization of OpenDX is done using threads. Which
 |libraries are therefore necessary on my system beside pthreads?

I don't know about the Linux SMP version.  But if it's like the SGI, the
parallelism is at the process level, where you have multiple dxexecs
running: one master, and one per processor as slaves, communicating through
IPC.  Check your process list:

 |  \-+- 1163153 dxui ...
 |    \-+- 1155549 dxworker ...
 |      \-+- 1163133 dxexec ...
 |        |--- 1163161 dxexec ...
 |        \--- 1163211 dxexec ...

Try dx -processors 2 and run some of the samples.  If you see two dxexecs
cranking up there at near 100% sometimes, your SMP is probably working.
VolumeRenderingSimple.net is one where you can see this easily -- go into
rotate mode (Ctrl-R), and start dragging the mouse around like mad.  You
should peg both your CPUs while its rendering.

Randy

--
Randall Hopper (mailto:[EMAIL PROTECTED])
Lockheed Martin Operation Support
EPA Scientific Visualization Center
US EPA MD/24 ERC-1A; RTP, NC 27711


Reply via email to