Theano2.1.21-基础知识之theano中多核的支持

来自:http://deeplearning.net/software/theano/tutorial/multi_cores.htmlhtml

Multi cores support in Theanopython

1、BLAS 操做

    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

我的:待分析线程

2、使用OpenMP来并行的逐元素ops

    由于在每一个张量元素上独立的进行逐元素操做能够很容易的经过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

相关文章
相关标签/搜索