2017-03-01 42 views
7

Tôi đang tìm một cách đơn giản để xác minh rằng đồ thị TF của tôi thực sự đang chạy trên GPU.TensorFlow: Cách xác minh rằng nó đang chạy trên GPU

PS. Nó cũng sẽ được tốt đẹp để xác minh rằng các thư viện cuDNN được sử dụng.

+0

Chạy bằng 'nvprof' có thể cung cấp thông tin chi tiết về các cuộc gọi hàm cuda. Hoặc chỉ cần chạy 'nvidia-smi' để kiểm tra việc sử dụng GPU trong khi đang chạy. – Kh40tiK

+0

Bản sao có thể có của [Làm thế nào để một TensorFlow không chạy tập lệnh trừ khi GPU được tải thành công?] (Http://stackoverflow.com/questions/42403501/how-does-one-have-tensorflow-not-run-the -số-trừ-the-gpu-đã-nạp-succes) –

Trả lời

7

Có một số cách để xem vị trí quảng cáo.

  1. Thêm RunOptions và RunMetadata vào cuộc gọi phiên và xem vị trí của op và tính toán trong Tensorboard. Xem mã tại đây: https://www.tensorflow.org/get_started/graph_viz

  2. Chỉ định tùy chọn log_device_placement trong phiên ConfigProto. Bản ghi này để bàn giao tiếp mà thiết bị hoạt động được đặt trên. https://www.tensorflow.org/api_docs/python/tf/ConfigProto

  3. Xem mức sử dụng GPU trong thiết bị đầu cuối bằng nvidia-smi.

+1

Lưu ý rằng siêu dữ liệu ghi nhật ký rất tốn tài nguyên và chỉ nên được sử dụng để gỡ lỗi. – pfredriksen

4

Khi bạn nhập TF bằng Python

import tensorflow as tf 

Bạn sẽ nhận được những bản ghi mà chỉ sử dụng các thư viện CUDA

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 

Ngoài ra, khi bạn xây dựng một đồ thị và chạy một phiên làm việc với log_device_placement trong Config Proto, bạn sẽ nhận được các bản ghi này (cho thấy nó đã tìm thấy một thiết bị GPU):

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

Tôi m nhận được cùng một đầu ra như mô tả ở trên. Nhưng các mô hình số lượng được thực hiện để được đào tạo cũng giống như CPU. Không chắc chắn, những gì tôi đang làm sai. Sử dụng Công cụ ước tính DNNRegressor và mã giống nhau đang chạy trên CPU và GPU mà không có bất kỳ sửa đổi nào, vì tôi đã biết rằng các ước tính theo mặc định chọn GPU để thực thi nếu GPU khả dụng. Bất kỳ cách nào để tìm ra ?? – user3457384

+0

bạn có thể thấy mức sử dụng GPU không? làm "xem nvidia-smi". Nhìn vào việc sử dụng bộ nhớ và biến động GPU. – hars

+0

Đây là vấn đề của tôi được giải thích chi tiết. https://stackoverflow.com/questions/46648484/how-to-make-best-use-of-gpu-for-tensorflow-estimators – user3457384

0

Có một số liên quan TensorFlow upstream issue. Về cơ bản nó nói rằng các API Python không lộ thông tin như vậy được nêu ra.

Tuy nhiên, API C++ thực hiện. Ví dụ. có tensorflow::KernelsRegisteredForOp(). Tôi đã viết một trình bao bọc Python nhỏ xung quanh và sau đó triển khai supported_devices_for_ophere (trong this commit).

Các vấn đề liên quan