Torch学习——使用CUDA
1. CUDA安装
CUDA在Ubuntu下的安装[1]还是很方便的,但不知为什么很多安装Caffe的教程都把CUDA安装搞得很繁琐。
2. 代码示例
输入[4]请求使用“cutorch”包。cutorch包是torch的CUDA版本,torch提供FloatTensor张量,而cutorch能提供所有运算在GPU上操作的CudaTensor张量。cutorch中的函数可以设置和获得设备的属性等信息[2]。
输入[7]创建了1个CudaTensor张量,看起来是个100维向量,用fill填充0.5至每个向量的元素。add函数实现两个向量间按元素相加,相加结果赋给t1。
输入[8]为GPU张量和CPU张量的相互转换。
GPU张量转CPU张量:t1是CudaTensor,t1:float()则转换成CPU的FloatTensor。
CPU张量转GPU张量:t1[{}]=t1_cpu,将CPU张量的值赋值给GPU张量t1。t1_cpu:cuda()也是将CPU张量转成GPU张量,但这个GPU张量是新建的。
zero()函数可以把GPU张量清0。
输入[18]为多层感知机。MLP的定义和Keras一样。多层感知机的每层都是线性连接,激活函数为tanh。mlp定义了3层后移动至GPU。input为FloatTensor,cuda()转成CudaTensor,作为Sequential实例的forward函数的输入,forward函数的输出result是CudaTensor,float()转成FloatTensor。仅仅是个随机数向量在MLP中的前向传播过程。
输入[19]是把输入输出都为CudaTensor的多层感知机mlp包装成输入输出都为FloatTensor的多层感知机mlp_auto[3]。
3. 参考链接
[1]http://www.r-tutor.com/gpu-computing/cuda-installation/cuda7.5-ubuntu
[2]https://github.com/torch/cutorch
[3]http://code.madbits.com/wiki/doku.php?id=tutorial_cuda