I have a question for those who have parallelized programs.

It seems like MPI is the obvious architecture when scaling a program to
multiple machines. Let's assume that we implement a program that has that
capability.

Now, it is possible to use MPI for scaling *within* a compute node. For
example, on a 4-core machine we could run four processes and use MPI to
synchronize them.

That policy has the obvious downside that the shared memory on a multi-core
box is fragmented, and some portion of the tree is duplicated even within
processes, which seems wasteful.

For this reason I have assumed that programs would use a thread-safe
shared-memory design within a multi-core box, and only use MPI to scale to
clusters.

But there are downsides to that design as well. Like the extra complexity of
having two models for parallel programming.

And I don't really know the cost of duplicating nodes. Maybe the tree splits
so much that different processes share relatively few nodes. Or maybe you
can allocate trials so that is the case.

And now my question: what do you actually do: MPI, thread-safe, both, or
something else?

And can you share any observations about your choices?

Thanks,
Brian


_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to