目次

1. บทนำ

CUDA (Compute Unified Device Architecture) คือแพลตฟอร์มการประมวลผลแบบขนานที่ใช้ GPU ซึ่งพัฒนาโดย NVIDIA ใช้งานอย่างแพร่หลายในงาน Machine Learning, Deep Learning และการเรนเดอร์ 3D รวมถึงงานประมวลผลขนาดใหญ่หลากหลายประเภท

เมื่อใช้งาน CUDA บน Ubuntu การตรวจสอบเวอร์ชันของ CUDA จึงเป็นสิ่งสำคัญ ด้วยเหตุผลต่อไปนี้

ความเข้ากันได้กับไดรเวอร์

CUDA รองรับเฉพาะกับบางเวอร์ชันของ NVIDIA Driver หากเวอร์ชันไม่ตรงกันอาจทำงานผิดพลาดได้

ความเข้ากันได้ของไลบรารี

ไลบรารีอย่าง TensorFlow หรือ PyTorch ต้องการ CUDA และ cuDNN ในเวอร์ชันที่ระบุ ดังนั้นควรตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งเวอร์ชันที่เหมาะสมแล้ว

ป้องกันความสับสนในสภาพแวดล้อม

หากมี CUDA หลายเวอร์ชันในระบบ ต้องรู้ว่าเวอร์ชันใดถูกใช้งานอยู่ และควรสลับให้เหมาะสมเมื่อต้องการใช้งานเวอร์ชันอื่น

บทความนี้จะอธิบายวิธีตรวจสอบเวอร์ชัน CUDA บน Ubuntu อย่างละเอียดและเข้าใจง่าย

2. วิธีตรวจสอบเวอร์ชัน CUDA บน Ubuntu

บน Ubuntu สามารถตรวจสอบเวอร์ชันของ CUDA ได้ด้วยวิธีต่อไปนี้

วิธีที่ 1: ตรวจสอบด้วยคำสั่ง nvidia-smi (วิธีที่ง่ายที่สุด)

Driver ของ NVIDIA มีเครื่องมือชื่อ nvidia-smi (NVIDIA System Management Interface) สำหรับตรวจสอบสถานะของ GPU

คำสั่งที่ใช้

nvidia-smi

ตัวอย่างผลลัพธ์

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 530.41.03    Driver Version: 530.41.03    CUDA Version: 12.1     |
+-----------------------------------------------------------------------------+

จุดสำคัญ

  • ส่วน CUDA Version: 12.1 คือเวอร์ชันสูงสุดของ CUDA ที่ Driver นี้รองรับ
  • อาจแตกต่างจากเวอร์ชันของ CUDA Toolkit ที่ติดตั้งจริง ดังนั้นควรตรวจสอบวิธีถัดไปด้วย

วิธีที่ 2: ตรวจสอบด้วยคำสั่ง nvcc -V (สำหรับนักพัฒนา)

หากติดตั้ง CUDA อย่างถูกต้อง สามารถใช้ nvcc (CUDA Compiler) เพื่อตรวจสอบเวอร์ชันได้

คำสั่งที่ใช้

nvcc -V

ตัวอย่างผลลัพธ์

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Sun_Jul_30_19:09:40_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105

จุดสำคัญ

  • release 12.1, V12.1.105เวอร์ชันของ CUDA Toolkit ที่ติดตั้งจริง
  • อาจไม่ตรงกับเวอร์ชันที่แสดงใน nvidia-smi ควรตรวจสอบให้แน่ใจ

วิธีที่ 3: ตรวจสอบไฟล์ version.txt (วิธีเช็คแบบ manual)

หากติดตั้ง CUDA ที่ /usr/local/cuda สามารถดูเวอร์ชันในไฟล์ version.txt ได้

คำสั่งที่ใช้

cat /usr/local/cuda/version.txt

ตัวอย่างผลลัพธ์

CUDA Version 12.1.105

จุดสำคัญ

  • ตรวจสอบได้ แม้ในระบบที่ใช้ nvcc -V ไม่ได้
  • ควรตรวจสอบว่า /usr/local/cuda ลิงก์ถูกต้องหรือไม่

3. วิธีตรวจสอบเวอร์ชันของ cuDNN

cuDNN (CUDA Deep Neural Network) คือไลบรารีสำหรับ Deep Learning ที่ทำงานร่วมกับ CUDA
นอกจากตรวจสอบ CUDA แล้ว ควรตรวจสอบเวอร์ชันของ cuDNN ด้วย

วิธีที่ 1: ตรวจสอบไฟล์ cudnn_version.h

เวอร์ชันของ cuDNN อยู่ใน header file cudnn_version.h

คำสั่งที่ใช้

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

ตัวอย่างผลลัพธ์

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 1

จุดสำคัญ

  • รู้ได้ว่า cuDNN 8.9.1 ติดตั้งอยู่
  • ใช้ grep ดึงข้อมูลเวอร์ชัน cuDNN ได้ง่าย
  • เวอร์ชันของ cuDNN และ CUDA ต้องเข้ากันได้ ควรตรวจสอบให้เหมาะสม

วิธีที่ 2: ตรวจสอบด้วย dpkg (สำหรับ Linux สาย Debian เช่น Ubuntu)

สำหรับ Ubuntu หรือ Debian สามารถใช้ dpkg เพื่อตรวจสอบเวอร์ชันของ cuDNN ที่ติดตั้งได้

คำสั่งที่ใช้

dpkg -l | grep libcudnn

ตัวอย่างผลลัพธ์

ii  libcudnn8    8.9.1-1+cuda12.1    amd64    NVIDIA cuDNN Library

จุดสำคัญ

  • ดูเวอร์ชัน cuDNN (8.9.1) ได้จาก libcudnn8 8.9.1-1+cuda12.1
  • ดูเวอร์ชัน CUDA ที่รองรับ (12.1) ได้จาก cuda12.1

ใช้วิธีเหล่านี้เพื่อตรวจสอบว่า CUDA และ cuDNN ในระบบถูกต้องและพร้อมใช้งานหรือไม่

4. วิธีจัดการเมื่อมี CUDA หลายเวอร์ชันในเครื่อง

บน Ubuntu สามารถติดตั้ง CUDA ได้หลายเวอร์ชัน แต่บางครั้งอาจสับสนว่าใช้งานเวอร์ชันไหนอยู่
กรณีนี้จำเป็นต้องสลับเวอร์ชันให้เหมาะสม

วิธีที่ 1: สลับเวอร์ชันด้วย update-alternatives

Ubuntu สามารถใช้ update-alternatives สลับเวอร์ชันของ CUDA ได้

ตรวจสอบเวอร์ชันปัจจุบัน

update-alternatives --query cuda

สลับไปใช้เวอร์ชันที่ต้องการ

sudo update-alternatives --config cuda

ตัวอย่างผลลัพธ์

There are 3 choices for the alternative cuda (providing /usr/local/cuda).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/local/cuda-11.8  100       auto mode
  1            /usr/local/cuda-10.2  50        manual mode
  2            /usr/local/cuda-11.8  100       manual mode
  3            /usr/local/cuda-12.1  110       manual mode

Press <enter> to keep the current choice[*], or type selection number:

จุดสำคัญ

  • เมื่อรัน update-alternatives --config cuda จะแสดงรายการ CUDA ที่ติดตั้ง
  • เลือกหมายเลขเพื่อสลับเวอร์ชันที่ต้องการ
  • มีทั้ง auto mode และ manual mode หากต้องการกำหนดเองให้เลือก manual

วิธีที่ 2: ตั้งค่า Symbolic Link ด้วยตนเอง

สามารถใช้ symbolic link เพื่อกำหนด CUDA เวอร์ชันที่ใช้งานอยู่ได้เช่นกัน

ตรวจสอบ symbolic link ปัจจุบัน

ls -l /usr/local/cuda

ตัวอย่างผลลัพธ์

lrwxrwxrwx 1 root root 20 Feb  1 12:34 /usr/local/cuda -> /usr/local/cuda-11.8

เปลี่ยนเวอร์ชัน CUDA

sudo rm /usr/local/cuda
sudo ln -s /usr/local/cuda-12.1 /usr/local/cuda

ตรวจสอบอีกครั้ง

ls -l /usr/local/cuda

จุดสำคัญ

  • /usr/local/cuda คือ path เริ่มต้นของ CUDA การเปลี่ยน symbolic link จะเป็นการเปลี่ยนเวอร์ชันที่ใช้งาน
  • ใช้คำสั่ง ln -s เปลี่ยน symbolic link ได้ง่ายและรวดเร็ว

ด้วยวิธีเหล่านี้ จะสามารถสลับและใช้งาน CUDA หลายเวอร์ชันในระบบได้อย่างถูกต้อง

5. คำถามที่พบบ่อย (FAQ)

รวมคำถามและปัญหาที่พบบ่อยเกี่ยวกับการตรวจสอบเวอร์ชัน CUDA เพื่อใช้อ้างอิงเมื่อเกิดปัญหา

Q1: ใช้ nvcc -V ไม่ได้?

ถ้าไม่พบคำสั่ง nvcc อาจเป็นเพราะ PATH ไม่ถูกต้อง

วิธีแก้ที่ 1: ตรวจสอบว่าติดตั้ง CUDA แล้วหรือไม่

ls /usr/local/cuda/

วิธีแก้ที่ 2: เพิ่ม PATH ของ nvcc

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

ตั้งค่าแล้วให้ลองรัน nvcc -V อีกครั้งเพื่อดูเวอร์ชัน

Q2: ทำไมเวอร์ชัน CUDA ที่แสดงใน nvidia-smi ไม่ตรงกับที่ติดตั้งจริง?

เวอร์ชัน CUDA ที่ nvidia-smi แสดงคือเวอร์ชันสูงสุดที่ Driver รองรับ

วิธีตรวจสอบ:

nvidia-smi

ตัวอย่างผลลัพธ์:

CUDA Version: 12.1

หากต้องการดูเวอร์ชัน CUDA ที่ติดตั้งจริงให้ใช้ nvcc -V หรือดูที่ version.txt

Q3: ตรวจสอบความเข้ากันได้ของ CUDA กับ cuDNN ได้อย่างไร?

ควรดู Support Matrix อย่างเป็นทางการของ NVIDIA สำหรับข้อมูลล่าสุด

เว็บไซต์ทางการ:

NVIDIA cuDNN Support Matrix

หรือเช็คเวอร์ชันที่ติดตั้งอยู่ด้วยคำสั่งเหล่านี้

ตรวจสอบเวอร์ชัน CUDA

nvcc -V

ตรวจสอบเวอร์ชัน cuDNN

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

การจัดการสภาพแวดล้อมอย่างถูกต้องจะช่วยป้องกันปัญหาเกี่ยวกับ CUDA และ cuDNN ได้

6. สรุป

บทความนี้ได้อธิบายรายละเอียดเกี่ยวกับการตรวจสอบเวอร์ชันของ CUDA บน Ubuntu
ขอสรุปจุดสำคัญอีกครั้ง

วิธีตรวจสอบเวอร์ชัน CUDA

วิธีคำสั่งจุดเด่น
nvidia-sminvidia-smiดูเวอร์ชัน CUDA ที่ Driver รองรับ
nvcc -Vnvcc -Vดูเวอร์ชันของ CUDA Toolkit ที่ติดตั้งจริง
version.txtcat /usr/local/cuda/version.txtเช็คเวอร์ชันด้วยตนเอง

วิธีตรวจสอบเวอร์ชัน cuDNN

วิธีคำสั่งจุดเด่น
cudnn_version.hcat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2ตรวจสอบเวอร์ชันจาก header file
dpkg คำสั่งdpkg -l | grep libcudnnดูเวอร์ชัน cuDNN ที่ติดตั้งในระบบ

วิธีสลับเวอร์ชัน CUDA

วิธีคำสั่งจุดเด่น
update-alternativessudo update-alternatives --config cudaสลับเวอร์ชัน CUDA หลายตัว
Symbolic Linksudo ln -s /usr/local/cuda-XX.X /usr/local/cudaเปลี่ยนเวอร์ชัน CUDA ด้วยตนเอง

จุดสำคัญในบทสรุป

  • ต้องรู้จักเวอร์ชัน CUDA ที่ใช้งานจริง
  • ตรวจสอบความเข้ากันได้กับ cuDNN ทุกครั้ง
  • ถ้ามีหลายเวอร์ชัน ต้องเข้าใจวิธีสลับให้เหมาะสม

หากจัดการสภาพแวดล้อมอย่างถูกต้อง จะใช้งาน CUDA ได้เต็มประสิทธิภาพ
หวังว่าบทความนี้จะเป็นประโยชน์สำหรับการตรวจสอบเวอร์ชัน CUDA บน Ubuntu ของคุณ

บทความที่เกี่ยวข้อง

บทความที่เกี่ยวข้อง

1. บทนำ CUDA (Compute Unified Device Architecture) เป็นแพลตฟอร์มการประมวลผลแบบขนานและ API ที่ NVIDIA พัฒนาขึ้นมา ซึ่งช่[…]

บทความที่เกี่ยวข้อง

1. เหตุผลที่ควรใช้ไดรเวอร์ Nvidia บน Ubuntu Ubuntu มีไดรเวอร์ Nouveau แบบโอเพนซอร์สให้เป็นค่าเริ่มต้น แต่การติดตั้งไดรเ[…]

บทความที่เกี่ยวข้อง

1. บทนำ เมื่อใช้งาน GPU บน Ubuntu สิ่งสำคัญคือต้องตรวจสอบสถานะอย่างถูกต้อง โดยเฉพาะอย่างยิ่งสำหรับงาน Deep Learning หรื[…]