<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 27, 2016 at 4:25 AM, Ralf Gommers <span dir="ltr"><<a href="mailto:ralf.gommers@gmail.com" target="_blank">ralf.gommers@gmail.com</a>></span> wrote: <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Thu, Oct 27, 2016 at 10:25 AM, Pavlyk, Oleksandr <span dir="ltr"><<a href="mailto:oleksandr.pavlyk@intel.com" target="_blank">oleksandr.pavlyk@intel.com</a>></span> wrote:<br></span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div link="blue" vlink="purple" lang="EN-US">
<div class="m_4853976244520421246m_-7889403026898222712WordSection1"><span class="">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Please see responses inline.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><a name="m_4853976244520421246_m_-7889403026898222712______replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> NumPy-Discussion [mailto:<a href="mailto:numpy-discussion-bounces@scipy.org" target="_blank">numpy-discussion-bounc<wbr>es@scipy.org</a>]
<b>On Behalf Of </b>Todd<br>
<b>Sent:</b> Wednesday, October 26, 2016 4:04 PM<span><br>
<b>To:</b> Discussion of Numerical Python <<a href="mailto:numpy-discussion@scipy.org" target="_blank">numpy-discussion@scipy.org</a>><br>
<b>Subject:</b> Re: [Numpy-discussion] Intel random number package</span></span></p>
<p class="MsoNormal"> </p>
</span><div>
<div>
<br><div><span class="">
<p class="MsoNormal">On Wed, Oct 26, 2016 at 4:30 PM, Pavlyk, Oleksandr <<a href="mailto:oleksandr.pavlyk@intel.com" target="_blank">oleksandr.pavlyk@intel.com</a>> wrote:</p><span></span><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"></span></p></span><span class=""><span><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">Another point already raised by Nathaniel is that for numpy's randomness ideally should provide a way to override default algorithm for sampling from a particular distribution.  For example RandomState object that implements PCG may rely
 on default acceptance-rejection algorithm for sampling from Gamma, while the RandomState object that provides interface to MKL might want to call into MKL directly.</p>
</blockquote>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">The approach that pyfftw uses at least for scipy, which may also work here, is that you can monkey-patch the scipy.fftpack module at runtime, replacing it with pyfftw's drop-in replacement.  scipy then proceeds to use pyfftw instead of
 its built-in fftpack implementation.  Might such an approach work here?  Users can either use this alternative randomstate replacement directly, or they can replace numpy's with it at runtime and numpy will then proceed to use the alternative. 
</p></div></span></span></div></div></div></div></div></blockquote><div><br></div><div>The only reason that pyfftw uses monkeypatching is that the better approach is not possible due to license constraints with FFTW (it's GPL).<br></div></div></div></div></blockquote><div><br></div><div>Yes, that is exactly why I brought it up.  Better approaches are also not possible with MKL due to license constraints.  It is a very similar situation overall.<br></div><div> </div></div></div></div>