ฉันมีแผนที่จะใช้ TensorFlow แบบกระจายและฉันเห็น TensorFlow สามารถใช้ GPU สำหรับการฝึกอบรมและการทดสอบ ในสภาพแวดล้อมแบบคลัสเตอร์เครื่องแต่ละเครื่องสามารถมี 0 หรือ 1 หรือมากกว่า GPU และฉันต้องการที่จะเรียกใช้กราฟ TensorFlow ของฉันลงใน GPU บนเครื่องให้ได้มากที่สุด
ฉันพบว่าเมื่อใช้tf.Session()
TensorFlow ให้ข้อมูลเกี่ยวกับ GPU ในข้อความบันทึกดังนี้:
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:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
คำถามของฉันคือฉันจะรับข้อมูลเกี่ยวกับ GPU ที่มีอยู่ในปัจจุบันจาก TensorFlow ได้อย่างไร ฉันสามารถรับข้อมูล GPU ที่โหลดจากบันทึก แต่ฉันต้องการที่จะทำในทางที่ซับซ้อนมากขึ้นทางโปรแกรม ฉันยังสามารถ จำกัด GPU โดยเจตนาใช้ตัวแปรสภาพแวดล้อม CUDA_VISIBLE_DEVICES ดังนั้นฉันจึงไม่ต้องการทราบวิธีรับข้อมูล GPU จากเคอร์เนลระบบปฏิบัติการ
กล่าวโดยย่อฉันต้องการฟังก์ชั่นเช่นนี้tf.get_available_gpus()
ซึ่งจะส่งคืน['/gpu:0', '/gpu:1']
หากมีสอง GPUs อยู่ในเครื่อง ฉันจะใช้สิ่งนี้ได้อย่างไร