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

Multi cores support in Theano

一、BLAS 操作

BLAS是一个针对于某些数学上操作的接口,其中包括两个向量、一个向量和一个矩阵、两个矩阵(即,介于向量/矩阵和矩阵/矩阵之间的点积操作)。当然有许多这样接口的不同的实现方法,有些还是可以并行的。

Theano是想尽可能使用这个接口来保证整体的性能。所以如果想要实现theano的并行,这些操作将会在thenao中并行的运行。

最频繁的来控制线程的数量的方法就是通过 OMP_NUM_THREADS 环境变量来设置。在开启python进程之前,将它设置成你想要使用到的线程的数量。一些BLAS实现也支持其他环境变量。

为了测试你的BLAS是否支持 OpenMP/Multiple 多核,你可以使用 theano/misc/check_blas.py 脚本来测试,命令如下:

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的时候,就会被清除的。)

个人:待分析

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

因为在每个张量元素上独立的进行逐元素操作可以很容易的通过OpenMP来并行化。

为了使用OpenMP,你需要设置 openmp flag 为 True.

你可以使用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

Theano2.1.21-基础知识之theano中多核的支持的更多相关文章

  1. 基础知识系列☞C#中→属性和字段的区别

    "好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...

  2. Go语言基础知识总结(持续中)

    Go基础知识总结 变量声明 Go语言中的变量需要声明以后才可以使用(需要提前定义变量)并且声明后必须使用(不适用会报错) 标准声明 var 变量名 变量类型 example: var name str ...

  3. 基础知识系列☞C#中数组Array、ArrayList和List三者的区别

    数组() #region 数组 //初始化方式_0:先声明再赋值 ]; weekDays_0[] = "Sun"; weekDays_0[] = "Mon"; ...

  4. Theano2.1.18-基础知识之theano的扩展

    来自:http://deeplearning.net/software/theano/tutorial/extending_theano.html Extending Theano 该教程覆盖了如何使 ...

  5. Theano2.1.15-基础知识之theano如何处理shapre信息

    来自:http://deeplearning.net/software/theano/tutorial/shape_info.html How Shape Information is Handled ...

  6. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation

    前言: 只要是有表单存在,那么就有可能有对数据的校验需求.如:判断是否为整数.判断电子邮件格式等等. WPF采用一种全新的方式 - Binding,来实现前台显示与后台数据进行交互,当然数据校验方式也 ...

  7. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

  8. Javascript 基础知识学习--javascript中的参数传递都是按值传递的

    ECMAScript中所有函数的参数传递都是按值传递的,无论参数是值类型还是引用类型的.过去我跟大多数人一样觉得跟传值类型相关. 自己写了一个测试的例子,确实如此 function add(a) { ...

  9. [C# 基础知识系列]C#中易混淆的知识点

    一.引言 今天在论坛中看到一位朋友提出这样的一个问题,问题大致(问题的链接为:http://social.msdn.microsoft.com/Forums/zh-CN/52e6c11f-ad28-4 ...

随机推荐

  1. Java集合框架的接口和类层次关系结构图

    Collection和Collections的区别 首先要说的是,"Collection" 和 "Collections"是两个不同的概念: 如下图所示,&qu ...

  2. SQL Server 2000:提示“未与信任SQL SERVER连接相关连”错误

    在使用“用户模式”登陆SQL Server 2000时提示“未与信任SQL SERVER连接相关连”错误,因为在安装SQL Server时选择“仅Windows”模式,所以所有用户都不可以登陆. 解决 ...

  3. mongo日志切割脚本

    两种mongo日志切割脚本 vim /etc/logrotate.d/mongodb /home/mongodb/mongolog/mongod.log { daily rotate 7 compre ...

  4. /etc/fstab 参数详解及如何设置开机自动挂载

    某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的. /etc/fstab 文件负责配置Linux开机时自动挂载的分区. Window ...

  5. Caffe CNN特征可视化

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 以下部分代码是根据caffe的python接口,从一次forwo ...

  6. POJ1094[有向环 拓扑排序]

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33184   Accepted: 11 ...

  7. Integer & int & == & equals

    int 是基本类型,直接存数值,integer是对象,用一个引用指向这个对象 int 是基本数据类型,Integer是类 int类的变量初始为0,Integer的变量则初始化为null. 如果只是用来 ...

  8. 新闻发布系统<分页>

    分页实现: 实现数据的分页显示,需要以下几个关键步骤: ①确定每页显示的总页数 ②计算显示的总页数 ③编写SQL语句 实现效果如图所示: 当点击下一页时,地址栏地址为?pageIndex=2 1.创建 ...

  9. Unity3D FPS帧数修改

    修改Unity的FPS FPS是游戏运行的帧数,本文讲解如何修改Unity引擎的FPS. 步骤 1.在 Edit/Project Settings/Quality  质量设置里把帧数设定关闭,关闭之后 ...

  10. Java MyEclipse下Ant build.xml简单实例详解

    一.下载配置ant 1.首先下载ant: http://www.apache.org/ 下载最新的版本2.解压ant 后设置ANT_HOME, PATH中添加ANT_HOME目录下的bin目录(如:A ...