Hi,<br><br>Is there a comparison with parallel libraries that can be branched on numpy like MKL ? (and IPP for random number ?)<br><br>Matthieu<br><br><div><span class="gmail_quote">2007/6/29, Ronnie Hoogerwerf <<a href="mailto:rhoogerwerf@interactivesupercomputing.com">
rhoogerwerf@interactivesupercomputing.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style=""><div style="margin: 0px;">
<font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;"><font face="Courier" size="3">
<span style="font-size: 12px;">I am an Application Engineer at Interactive Supercomputing and we are rolling out a beta version of our Star-P product for Python. We are actively looking for computationally intensive Python application to port to Star-P. Star-P is a parallel application development platform that allows users to tap into the power and memory of supercomputers from the comfort of the favorite desktop applications, in this case Python. 
</span></font></font></div><p style="margin: 0px;"><font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<font face="Courier" size="3"><span style="font-size: 12px;"> </span></font></font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
Star-P is capable of both fine-grained parallel computation and embarrassingly parallel computation. The fine-grained mode of our Star-P Python implementation has been modeled on the Python NumPy package - for example:</font>
</div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;"> </font>
</p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">x = starp.random.rand
(20000,20000)</font></div><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
y = starp.linalg.inv(x)</font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
 </font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
instead of </font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
 </font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
x = numpy.random.rand(20000,20000)</font></div><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
y = numpy.linalg.inv(x)</font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
 </font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
Where the first couple of lines are executed on the Star-P parallel server in full C/MPI mode and the last couple of lines are executed on the desktop using Python.</font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
 </font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
The embarrassingly parallel mode is capable of executing any Python module, although input and output parameters are currently limited to NumPy arrays, scalars, and strings - for example:</font></div><p style="margin: 0px;">
<font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;"> </font></p><div style="margin: 0px;">
<font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">y = starp.ppeval(mymodule.dosomething,x)
</font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;"> 
</font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">instead of
</font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;"> 
</font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">for i in range(0,n):
</font></div><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
    y[:,:,i] = mymodule.dosomething(x[:,i])</font></div><p style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
 </font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
Where again in the former example the iterations are spread out over the available CPUs (note the abstraction - user need not worry regarding the number of CPUs) on the Star-P server using Python and in the latter the looping is doing in serial on the client using Python.
</font></div><p style="margin: 0px;"><font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<font face="Courier" size="3"><span style="font-size: 12px;"> </span></font></font></p><div style="margin: 0px;"><font style="font-family: Courier; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
We are looking for real Python application that you would be willing to share with us that  we can port to Star-P. We want to use this experience as a basis for further improvements and development of our Python client. </font>
</div><p style="margin: 0px;"><font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<font face="Courier" size="3"><span style="font-size: 12px;"> </span></font></font></p><div style="margin: 0px;"><font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<font face="Courier" size="3"><span style="font-size: 12px;">Thanks,</span></font></font></div><span class="sg"><div style="margin: 0px;"><font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<font face="Courier" size="3"><span style="font-size: 12px;">Ronnie</span></font></font></div><p style="margin: 0px;"><font style="font-family: Times New Roman; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16px; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<font face="Courier" size="3"><span style="font-size: 12px;"> </span></font></font></p> 
</span></div><br>_______________________________________________<br>Numpy-discussion mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Numpy-discussion@scipy.org">Numpy-discussion@scipy.org
</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://projects.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://projects.scipy.org/mailman/listinfo/numpy-discussion</a><br><br></blockquote>
</div><br>