Tensorflow在具有5.0计算能力的视频卡上首次运行时需要> 1分钟

时间:2016-04-25 13:34:37

标签: tensorflow

我为python3(pip安装)运行tensorflow 0.8.0,以及以下文件test.py

import tensorflow as tf                                                         

a = tf.convert_to_tensor([1], dtype=tf.int32)                               
b = tf.to_float(a)                                                              

with tf.Session():                                                              
    b.eval() 

...运行需要一分多钟:

$time python3 test.py 
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties: 
name: GeForce GTX 860M
major: 5 minor: 0 memoryClockRate (GHz) 1.0195
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.61GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:755] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 860M, pci bus id: 0000:01:00.0)

real    1m6.985s
user    1m6.700s
sys 0m1.480s

我应该提到其他张量流程序似乎工作正常,例如

$time python3 -m tensorflow.models.image.mnist.convolutional

不到4分钟。

编辑:

$cat /usr/local/cuda/version.txt 
CUDA Version 7.5.18

$ls /usr/local/cuda/lib64/libcudnn*
/usr/local/cuda/lib64/libcudnn.so /usr/local/cuda/lib64/libcudnn.so.4.0.7
/usr/local/cuda/lib64/libcudnn.so.4 /usr/local/cuda/lib64/libcudnn_static.a

2 个答案:

答案 0 :(得分:3)

我认为您的GPU GTX 860M是一款sm_50设备。默认的TensorFlow二进制文件默认支持sm_35和sm_52。这意味着你的二进制文件只有PTX,并且Cuda运行时必须在第一次运行该内核时将它们JIT到SASS,这需要一分钟左右。但是它们应该在以后的运行中缓存,除非明确禁用了缓存。

答案 1 :(得分:1)

第一次调用eval()或run()通常比后续调用慢得多,因为它需要设置会话。对eval / run的后续调用通常要快得多。