来自:http://deeplearning.net/software/theano/tutorial/multi_cores.htmlhtml
Multi cores support in Theanopython
BLAS是一个针对于某些数学上操做的接口,其中包括两个向量、一个向量和一个矩阵、两个矩阵(即,介于向量/矩阵和矩阵/矩阵之间的点积操做)。固然有许多这样接口的不一样的实现方法,有些仍是能够并行的。windows
Theano是想尽量使用这个接口来保证总体的性能。因此若是想要实现theano的并行,这些操做将会在thenao中并行的运行。性能
最频繁的来控制线程的数量的方法就是经过 OMP_NUM_THREADS 环境变量来设置。在开启python进程以前,将它设置成你想要使用到的线程的数量。一些BLAS实现也支持其余环境变量。测试
为了测试你的BLAS是否支持 OpenMP/Multiple 多核,你可使用 theano/misc/check_blas.py 脚原本测试,命令以下:spa
OMP_NUM_THREADS=1 python theano/misc/check_blas.py -q
OMP_NUM_THREADS=2 python theano/misc/check_blas.py -q
ps:在windows的cmd上运行的时候,须要用到set OMP_NUM_THREADS=2。(set会临时的定义环境变量,当关闭一个cmd的时候,就会被清除的。).net
我的:待分析线程
由于在每一个张量元素上独立的进行逐元素操做能够很容易的经过OpenMP来并行化。code
为了使用OpenMP,你须要设置 openmp flag 为 True.htm
你可使用flag openmp_elemwise_minsize 来设置须要并行的最小的张量size。对于较短的张量来讲,使用OpenMP反而可能会减慢该操做。默认的值是20w 。
对于简单的(快速)的操做来讲,你能够在很是大的张量获得一个加速;而对于复杂的操做来讲,你能够在较小的张量上获得一个不错的加速。
在theano/misc路径下有一个脚本 elemwise_openmp_speedup.py ,你能够用来针对你你的机器来调整 openmp_elemwise_minsize 的值。该脚本是对具备size为 openmp_elemwise_minsize的向量执行两个逐元素操做(一个快速操做,一个慢速操做) 并分别使用OpenMP和未使用两种状况下执行,从而来显示不一样状况下的耗时状况。
惟一的用来控制线程数量的方法是经过 OMP_NUM_THREADS 环境变量。在开启python进程以前将它设置成你想要的线程数量。你能够用下面的命令来测试:
OMP_NUM_THREADS=2 python theano/misc/elemwise_openmp_speedup.py #The output Fast op time without openmp 0.000533s with openmp 0.000474s speedup 1.12 Slow op time without openmp 0.002987s with openmp 0.001553s speedup 1.92
我的:上面的没成功,错误待分析,因此没图。
参考资料:
[1]:官网:http://deeplearning.net/software/theano/tutorial/multi_cores.html