ฉันใช้งานเวิร์กสเตชันด้วย AMD CPU (EPYC 7H12) และ GPU Nvidia (RTX 3090) ระบบทำงานบน Ubuntu 20.04 เมื่อทำงานกับ tensorflow ฉันได้รับคำเตือนซ้ำๆ ตามที่อธิบายไว้ในที่เกี่ยวข้อง คำถามดังนั้น.
ฉัน tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:939] การอ่านโหนด NUMA ที่สำเร็จจาก SysFS มีค่าเป็นลบ (-1) แต่ต้องมีโหนด NUMA อย่างน้อยหนึ่งโหนด ดังนั้นส่งคืนโหนด NUMA เป็นศูนย์
หนึ่ง คำตอบ แนะนำให้ระบุรหัสบัส PCI ของ GPU จากนั้นตั้งค่า numa_node สำหรับอุปกรณ์นั้นเป็น 0 ในกรณีของฉัน วิธีต่อไปนี้ใช้ได้ผล หลังจากระบุ PCI-ID โดยใช้ lspci | เกรป NVIDIA:
# 1) ระบุ PCI-ID ของ GPU (พร้อม ID โดเมน)
# ในกรณีของฉัน: PCI_ID="0000.81:00.0"
lspci -D | เกรป NVIDIA
# 2) เขียนความสัมพันธ์ NUMA กับไฟล์ numa_node ของอุปกรณ์
เสียงสะท้อน 0 | sudo tee -a "/sys/bus/pci/devices/<PCI_ID>/numa_node"
อย่างไรก็ตาม นี่เป็นเพียงการแก้ไขแบบตื้นๆ ประการแรก การตั้งค่า numa_node จะถูกรีเซ็ต (เป็นค่า -1) ทุกครั้งที่รีสตาร์ทระบบ ประการที่สอง ไดรเวอร์ของ Nvidia ดูเหมือนจะเพิกเฉยต่อการตั้งค่าสถานะนี้ เช่น nvidia-smi (ของ Nvidia เครื่องมือการจัดการไดรเวอร์) ยังคงแสดง:
nvidia-smi โทโป -m
#
# GPU0 ความเกี่ยวข้องของ CPU ความเกี่ยวข้องของ NUMA
# GPU0 X 0-127 ไม่มีข้อมูล
ฉันจะระบุความสัมพันธ์ NUMA สำหรับ GPU อย่างต่อเนื่องได้อย่างไร นี่เป็นการกำหนดค่าของไดรเวอร์ Nvidia, Ubuntu หรือ BIOS หรือไม่ ฉันรู้ว่าเคอร์เนลลินุกซ์คือ NUMA ทราบแต่ฉันพบว่าเป็นการยากที่จะค้นหาแหล่งข้อมูลเกี่ยวกับวิธีการกำหนดค่านี้
อัปเดต: ฉันได้เพิ่ม crontab เป็น root ซึ่งช่วยแก้ปัญหาได้อย่างต่อเนื่อง การแก้ไขยังคง "ตื้น" อย่างไรก็ตามเนื่องจากไดรเวอร์ของ Nvidia ไม่ทราบสิ่งนี้
sudo crontab -e
#Â เพิ่มบรรทัดต่อไปนี้
@รีบูต (echo 0 | tee -a "/sys/bus/pci/devices/<PCI_ID>/numa_node")