Re: dynamic Blocking and thread safeness (in general)
- To: mathgroup at smc.vnet.net
- Subject: [mg71609] Re: dynamic Blocking and thread safeness (in general)
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 25 Nov 2006 05:36:46 -0500 (EST)
- Organization: Uni Leipzig
- References: <ek63nk$8vf$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi,
a) Mathematica uses MathLink to implement a distributed memory
parallel programming model. That is done with the Parallel Computing
Toolkit and Block[]/Module[] has no effect on distributed memory
systems but you need a master kernel and more than a single
worker kernel to see some speedup, i.e., more than dual-core or
more than two kernels
b) you realy ask for thread programming in a system that does not
know what a pointer is ??
c) Mathematicas main data structure is a (expression) tree and
is very complicated to do parallel programming with trees
and I would not expect that symbolic computations will benefit
form multithreading
d) you don't need Block[] to mixup a multi-threaded program
just say
myCount=0;
Map[If[#>1,myCount++,myCount--] &, Table[Random[Integer,{-100,100}]]]
and the threads that apply If[#>1,myCount++,myCount--] & to the
list elements will access myCount in undefined order and will try
to change myCount at the same time
e) the hardest problem would be, that Mathematica copy data on and on or
generate new symbols. That is a global operation in the program to
get more memory from the heap and this will either slow down the
parallel execution or (as in the most C/C++ programms) generate
invalid adresses when the pointer is acessed.
Regards
Jens
Chris Chiasson wrote:
> Some internal routines (for Export) use Block to pass "data" between
> functions - actually, I have witnessed the blocking of functions so
> that they are taken over by data-appropriate routines.
>
> In general it seems that any code that dynamically blocks a variable
> (or function) would be unsafe to run in parallel with other code that
> uses the same variable (or function).
>
> As we move forward with multi-core CPUs becoming the norm, does WRI
> have a plan for tapping into the multi-threaded power of the new x86
> chips from Intel and AMD?
>
> Is the technology in your grid computing software able to help here?
>