ฉันสังเกตเห็นว่า TensorFlow เวอร์ชันใหม่บางรุ่นไม่สามารถใช้งานร่วมกับ CUDA และ cuDNN เวอร์ชันเก่าได้ มีภาพรวมของเวอร์ชันที่เข้ากันได้หรือแม้แต่รายการชุดค่าผสมที่ทดสอบอย่างเป็นทางการหรือไม่ หาไม่พบในเอกสาร TensorFlow
ฉันสังเกตเห็นว่า TensorFlow เวอร์ชันใหม่บางรุ่นไม่สามารถใช้งานร่วมกับ CUDA และ cuDNN เวอร์ชันเก่าได้ มีภาพรวมของเวอร์ชันที่เข้ากันได้หรือแม้แต่รายการชุดค่าผสมที่ทดสอบอย่างเป็นทางการหรือไม่ หาไม่พบในเอกสาร TensorFlow
คำตอบ:
TL; DR ) ดูตารางนี้: https://www.tensorflow.org/install/source#gpu
ตรวจสอบเวอร์ชัน CUDA:
cat /usr/local/cuda/version.txt
และเวอร์ชัน cuDNN:
grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h
และติดตั้งรวมกันตามที่กำหนดด้านล่างในภาพหรือนี่
รูปภาพและลิงค์ต่อไปนี้ให้ภาพรวมของ CUDA และ TensorFlow ที่รองรับ / ทดสอบอย่างเป็นทางการบน Linux, macOS และ Windows:
เนื่องจากข้อกำหนดที่ระบุด้านล่างในบางกรณีอาจกว้างเกินไปนี่คือการกำหนดค่าเฉพาะที่ใช้งานได้:
tensorflow-gpu==1.12.0
cuda==9.0
cuDNN==7.1.4
cudnn สอดคล้องกันสามารถดาวน์โหลดได้ที่นี่
โปรดดูที่https://www.tensorflow.org/install/source#gpuสำหรับแผนภูมิความเข้ากันได้ล่าสุด (สำหรับล้อ TF อย่างเป็นทางการ)
(ตัวเลขอัปเดตเมื่อวันที่ 20 พฤษภาคม 2020)
(รูปปรับปรุง 31 พฤษภาคม 2018)
Updated ณ 14 มกราคม 2020:สำหรับข้อมูลปรับปรุงโปรดดูเว็บไซต์สำหรับลินุกซ์และการเชื่อมโยงสำหรับ Windows
ตารางความเข้ากันได้ที่ระบุในไซต์ tensorflowไม่มีเวอร์ชันรองเฉพาะสำหรับ cuda และ cuDNN อย่างไรก็ตามหากไม่ตรงตามเวอร์ชันที่ระบุจะมีข้อผิดพลาดเมื่อคุณพยายามใช้เทนเซอร์โฟลว์
สำหรับtensorflow-gpu==1.12.0
และเวอร์ชันที่cuda==9.0
เข้ากันได้cuDNN
คือ7.1.4
ซึ่งสามารถดาวน์โหลดได้จากที่นี่หลังการลงทะเบียน
คุณสามารถตรวจสอบเวอร์ชัน cuda ของคุณโดยใช้ไฟล์
nvcc --version
cuDNN โดยใช้
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
รุ่น tensorflow-gpu โดยใช้
pip freeze | grep tensorflow-gpu
อัปเดต: ตั้งแต่ tensorflow 2.0 ได้รับการเผยแพร่ฉันจะแชร์เวอร์ชัน cuda และ cuDNN ที่เข้ากันได้ด้วย (สำหรับ Ubuntu 18.04)
tensorflow-gpu
= 2.0.0cuda
= 10.0cuDNN
= 7.6.0คุณสามารถใช้การกำหนดค่านี้สำหรับ cuda 10.0 (10.1 ใช้ไม่ได้ ณ วันที่ 3/18) สิ่งนี้ทำงานให้ฉัน:
ติดตั้งรุ่น tensorflow gpu:
pip install tensorflow-gpu==1.4.0
หากคุณกำลังเข้ารหัสในสมุดบันทึก jupyter และต้องการตรวจสอบว่าใช้ cuda เวอร์ชัน tf ใดให้เรียกใช้คำสั่ง follow โดยตรงในเซลล์ jupyter:
!conda list cudatoolkit
!conda list cudnn
และตรวจสอบว่า gpu มองเห็นได้หรือไม่ tf:
tf.test.is_gpu_available(
cuda_only=False, min_cuda_compute_capability=None
)
ฉันติดตั้ง CUDA 10.1 และ CUDNN 7.6 โดยไม่ได้ตั้งใจ คุณสามารถใช้การกำหนดค่าต่อไปนี้ (สิ่งนี้ใช้ได้กับฉัน - ณ วันที่ 9/10) :
แต่ฉันต้องสร้างซิมลิงค์เพื่อให้มันทำงานได้เนื่องจากเทนเซอร์โฟลว์ทำงานกับ CUDA 10
sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0
และเพิ่มสิ่งต่อไปนี้ใน ~ / .bashrc ของฉัน -
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/
nvidia-docker
เลเยอร์ซอฟต์แวร์สามารถจัดการกับปัญหาของชุดค่าผสม cuda-tf ที่เข้ากันไม่ได้ การอธิบายว่าคุณทราบได้อย่างไรว่า libs ใดที่ต้องกำหนดเส้นทางใหม่ด้วย symlinks ก็จะดีเช่นกัน
ฉันมีปัญหาที่คล้ายกันหลังจากอัปเกรดเป็น TF 2.0 เวอร์ชัน CUDA ที่ TF รายงานไม่ตรงกับสิ่งที่ Ubuntu 18.04 คิดว่าฉันติดตั้งไว้ มันบอกว่าฉันใช้ CUDA 7.5.0 แต่ฉลาดคิดว่าฉันติดตั้งเวอร์ชันที่ถูกต้องแล้ว
ในที่สุดสิ่งที่ฉันต้องทำคือ grep วนซ้ำใน/usr/local
สำหรับCUDNN_MAJOR
และฉันพบว่า/usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h
มันระบุเวอร์ชันเป็น7.5.0
ไฟล์.
/usr/local/cuda-10.1
ได้มันขวาและ/usr/local/cuda
ชี้ไป/usr/local/cuda-10.1
ดังนั้นมันจึงเป็น (และยังคง) ลึกลับให้ฉันทำไม TF /usr/local/cuda-10.0
ถูกมองที่
อย่างไรก็ตามฉันเพิ่งย้าย/usr/local/cuda-10.0
ไปที่/usr/local/old-cuda-10.0
TF จึงไม่สามารถหามันได้อีกต่อไปและทุกอย่างก็ดูมีเสน่ห์
มันน่าผิดหวังมากและฉันก็ยังรู้สึกเหมือนเพิ่งแฮ็คแบบสุ่ม แต่มันใช้งานได้ :) และบางทีนี่อาจช่วยคนที่มีปัญหาคล้ายกัน