2017-03-01 25 views
7

üzerinde çalıştığını doğrulamak için TF grafiklerimin gerçekten GPU'da çalıştığını doğrulamanın basit bir yolunu arıyorum.TensorFlow: GPU

PS. cuDNN kitaplığının kullanıldığını doğrulamak da güzel olurdu.

+0

"nvprof" ile çalıştırın, cuda işlev çağrıları hakkında ayrıntılı bilgi verebilir. Ya da sadece çalıştığında GPU kullanımını kontrol etmek için 'nvidia-smi' çalıştırın. – Kh40tiK

+0

Muhtemel kopyası [GPU başarıyla yüklenmediği sürece TensorFlow komut dosyasını nasıl çalıştırmaz?] (Http://stackoverflow.com/questions/42403501/how-does-one-have-tensorflow-not-run-the -script-without-the-gpu-yüklendi-başarıları) –

cevap

7

Op yerleşimini görüntülemenin birkaç yolu vardır.

  1. seans çağrısına RunOptions ve RunMetadata ekleyin ve Tensorboard oplarindan ve hesaplamaların yerleşimini görmek. Buraya bakın: https://www.tensorflow.org/get_started/graph_viz

  2. Bir oturumda ConfigProto oturumunda log_device_placement seçeneğini belirtin. Bu, işlemlerin hangi cihaza yerleştirildiği konsolu kaydeder. https://www.tensorflow.org/api_docs/python/tf/ConfigProto

  3. Nvidia-smi'yi kullanarak terminalde GPU kullanımını görüntüleyin. Eğer Python

    yılında
    import tensorflow as tf 
    

    TF aldığınızda

+1

Meta veri günlüğünün çok yoğun kaynak olduğunu ve yalnızca hata ayıklama için kullanıldığını unutmayın. – pfredriksen

4

Sen

I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.8.0 locally 
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally 
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally 
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally 
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally 

Ayrıca CUDA kütüphanelerin kullanımını gösterir bu günlükleri alacak, bir grafiği oluşturmak ve birlikte bir oturum çalıştırdığınızda log_device_placement Yapılandırma Protokolünde, bu günlükleri alacaksınız (bir GPU aygıtı bulduğunu gösterir):

I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:910] 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_device.cc:885] Found device 0 with properties: 
name: GeForce GTX 1060 6GB 
major: 6 minor: 1 memoryClockRate (GHz) 1.759 
pciBusID 0000:01:00.0 
Total memory: 5.93GiB 
Free memory: 4.94GiB 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0) 
+0

Yukarıda açıklandığı gibi aynı çıkışı alıyorum. Ancak, modellerin eğitilmek için aldığı miktar CPU ile aynıdır. Emin değilim, ne yapıyorum yanlış. DNNRegressör Tahmincisini kullanarak ve aynı kod, herhangi bir değişiklik yapılmadan CPU ve GPU üzerinde çalıştırılıyor. Tahmin ettiğim gibi, Tahminler varsayılan olarak GPU'nun kullanılabilir olması durumunda GPU’yu yürütme için GPU’yu seçtiğini öğrendim. Herhangi bir çıkış yolu var mı? – user3457384

+0

GPU kullanımını görebiliyor musunuz? "nvidia-smi" yi izle. Bellek kullanımı ve GPU volatilitesine bakın. – hars

+0

İşte benim sorunum ayrıntılı olarak açıklandı. https://stackoverflow.com/questions/46648484/how-to-make-best-use-of-gpu-for-tensorflowestesttors – user3457384

0

İlgili bir TensorFlow upstream issue var. Temel olarak Python API'sinin bu bilgiyi henüz ortaya koymadığını söylüyor. Bununla birlikte, C++ API'sı, ancak C++ API'sini kullanır. Örneğin. tensorflow::KernelsRegisteredForOp() var. Bunun etrafında küçük bir Python sarıcı yazdım ve daha sonra supported_devices_for_ophere'u (this commit'da) uyguladım.