Trước khi sử dụng các công cụ của Nvidia trong việc profile thì chúng ta phải có kiến thức về nguyên lí hoạt động của cuda nên ở bài mình sẽ đề cập tới 2 khái niệm thường được nhắc đến khi nói về cuda là cuda toolkit - cuda driver
Mình sẽ giải thích 1 cách đơn giản và không đi quá sâu vào chi tiết nên đừng lo lắng nha
cuda toolkit - cuda driver
Trước khi giải thích 2 thuật ngữ này thì mình sẽ lấy 1 ví dụ cho các bạn dễ hiểu: giả sử trong 1 trò chơi, nhân vật của bạn lv10 và đang trang bị 1 vũ khí lv5 thì lực chiến tổng của bạn sẽ là 100, chúng ta sẽ có 2 cách để tăng lực chiến cho nhân vật của bạn:
- Dễ: Kiếm 1 vũ khí lv10 (phù hợp với lv của bạn)
- Khó: tăng lv nhân vật
1 lưu ý nhỏ: chúng ta không thể trang bị vũ khí có lv cao hơn lv của nhân vật
Ở đây cuda cũng giống như vậy, nếu chúng ta muốn tối ưu 1 chương trình cuda ( ngoại trừ các yếu tố liên quan đến code ) thì chúng ta có 2 cách: tăng lv cuda toolkit hoặc tăng lv cuda driver
- cuda driver: là khả năng của máy tính các bạn (giống như lv của nhân vật ) máy tính càng mạnh thì chạy càng lẹ và mỗi máy tính sẽ có 1 mức lv nhất định
- cuda toolkit: là phiên bản cuda của chúng ta ( giống như lv của vũ khí ) phiên bản càng cao thì CÓ THỂ CHẠY NHANH HƠN phiên bản cũ ( vì phiên bản mới đương nhiên sẽ được tối ưu hơn và có nhiều function xịn hơn phiên bản cũ )
Tóm lại cuda driver là physical, là khả năng tối đa mà chương trình cuda có thể chạy, còn cuda toolkit là logical, là mức độ sử dụng cuda, phiên bản càng cao thì mức độ sử dụng càng xịn
Khi code chúng ta có 2 góc nhìn: coder view ( logical view ) và hardware view (physical view ), tức là khi chúng ta code, việc chúng ta tối ưu code thì sẽ là tối ưu ở mức độ logical và đoạn code đó sẽ được đưa về mã nhị phân để phần cứng chạy và tối ưu. Ở đây cuda toolkit/driver cũng giống vậy, chúng ta dùng cuda toolkit để tối ưu cuda code và cuda driver sẽ tối ưu phần hardware cho chúng ta
Câu hỏi đặt ra là làm sao để chúng ta xác định được cuda driver/toolkit để dùng?
Rất đơn giản, chúng ta sẽ dùng NVIDIA driver để xác định máy tính chúng ta dùng driver tới mức nào.
Đây là ví dụ về máy tính của mình
Ở đây bạn sẽ thấy driver phù hợp với mình là phiên bản 535 từ đó mình sẽ tới driver 535 và sau khi tải xong mở terminal lên và gõ lệnh này để xem cuda toolkit phù hợp
$nvidia-smi