BC.Wang Welcome

在超算上投tensorflow GPU任务

2018-08-08
BCWang

阅读:

   

  • 来自我的个人网站: wangbch.com

前提

  • 假设你所投Job的超算平台已经安装好了GPU设备,CPU并行intelmpi啥的

安装Python以及相关模块

  • 在超算上通常是没有root权限的,所有安装都是在用户目录下的安装anaconda
  • 官网上下载anaconda3的sh文件,直接运行,但在输入prefix时输入用户目录里面的路径
  • 验证python命令是否能够使用,否则加入环境变量
  • 使用python -m pip install XXX –user或pip install XXX –user
  • 如果上述方法不行,上pypi.org一个一个模块找,下载whl文件用pip安装
  • 另外centos上在用户目录安装rpm是通过rpm2cpio XXX |cpio -idvm

安装测试tensorflow

  • tensorflow也是用pip进行安装,但安装后需要进行测试
  • 首先确保import tensorflow没有问题,之后运行tf.Session()看是否报错
  • 常见的报错就是libcublas.so.9.0啥的没有找到,安装相应版本的cuda(或者使用module load来加载,如果支持的话),然后
    export LD_LIBRARY_PATH=/public/software/compiler/cuda/7/cuda-8.0/lib64/:$LD_LIBRARY_PATH
    export INCLUDE=/public/software/compiler/cuda/7/cuda-8.0/include:$INCLUDE
    export PATH=/public/software/compiler/cuda/7/cuda-8.0/bin:$PATH
    
  • 安装完成之后再次测试,也可能报错libcuda啥的没找到,安装cudnn,然后
    export LD_LIBRARY_PATH=/public/home/yangbo1/cudnn/cuda/lib64:$LD_LIBRARY_PATH
    export INCLUDE=/public/home/yangbo1/cudnn/cuda/include:$INCLUDE
    
  • 注意上面的命令都是测试的时候先使用,之后投Job时需要加到PBS文件中,(PBS(Portable Batch System)是超算常用的投Job管理工具)

投Job

  • 通常在上面的命令行中运行python是找不到GPU设备的,需要用PBS投Job申请GPU
  • 非常重要的一个命令是export CUDA_VISIBLE_DEVICES=0 当时在这里耽误了好久结果这一个小命令就OK了
  • 最后给一个投Job的PBS文件
#PBS -l nodes=1:ppn=1:gpus=1 #<节点数目,CPU数目,GPU数目>
#PBS -q <队列名称,确保这个队列有GPU>
#PBS -l walltime=99:23:59:59
#PBS -N <任务名称>
cd $PBS_O_WORKDIR
nvidia-smi > nvDebug_s #<查看GPU设备>
# 把并行运行的模块加上
source //public/software/compiler/intel/composer_xe_2015.2.164/bin/compilervars.sh intel64
source //public/software/mpi/intelmpi/5.0.2.044/intel64/bin/mpivars.sh
# 加载cuda8.0
export LD_LIBRARY_PATH=/public/software/compiler/cuda/7/cuda-8.0/lib64/:$LD_LIBRARY_PATH
export PATH=/public/software/compiler/cuda/7/cuda-8.0/bin:$PATH
export INCLUDE=/public/software/compiler/cuda/7/cuda-8.0/include:$INCLUDE
# 加载cudnn
export LD_LIBRARY_PATH=/public/home/yangbo1/cudnn/cuda/lib64:$LD_LIBRARY_PATH
export INCLUDE=/public/home/yangbo1/cudnn/cuda/include:$INCLUDE
# 检查环境变量
env > env_check
export CUDA_VISIBLE_DEVICES=0
# 运行main.py开始任务,输出到print_out中
python main.py > print_out
  • 来自我的个人网站: wangbch.com

Comments

Content
0