CUDA 8.0 & cuDNN 5.0 ra lò

Sau một thời gian dài thử nghiệm, phiên bản CUDA 8.0 RC đã được cho ra lò hôm nay. Trọng tâm của CUDA 8.0 là hỗ trợ kiến trúc GPU mới với mã hiệu Pascal.

Bạn nào muốn dùng thử có thể vào các liên kết dưới đây nhé.

  1. Giới thiệu về kiến trúc GPU Pascal (bài viết, bài thuyết trình tại hội nghị GTC 2016)
  2. Download CUDA 8.0 RC
  3. Các tính năng mới của CUDA 8.0 (bài viết, bài thuyết trình tại hội nghị GTC 2016)

Cùng với CUDA 8.0, phiên bản cuDNN 5.0 hỗ trợ tính toán hiệu năng cao cho các ứng dụng Deep Learning cũng đã được phát hành. Thông tin chi tiết có thể tham khảo ở đây.

Tôi sẽ có các bài viết chuyên sâu về CUDA 8.0 & cuDNN 5.0 trên trang này.

 

Komrade – Thư viện C++ cho CUDA

Hôm nay NVIDIA chính thức công bố thư viện lập trình C++ cho CUDA đầu tiên, với tên gọi Komrade.

http://code.google.com/p/komrade/

Với thư viện này, NVIDIA đã cung cấp một công cụ tuyệt vời cho những ai yêu thích vẻ đẹp đơn giản của lập trình định hướng đối tượng, đặc biệt là các tín đồ C++ giáo, cùng với sức mạnh của GPU trong tính toán song song. Sau đây là một chương trình hoàn chỉnh để tính tổng của 100 số ngẫu nhiên trên GPU, mà tôi mạn phép sao chép từ trang chính của Komrade.

#include <komrade/host_vector.h>
#include <komrade/device_vector.h>
#include <komrade/generate.h>
#include <komrade/reduce.h>
#include <komrade/functional.h>
#include <cstdlib>

int main(void)
{
   // generate random data on the host
   komrade::host_vector h_vec(100);
   komrade::generate(h_vec.begin(), h_vec.end(), rand);
   // transfer to device and compute sum
   komrade::device_vector d_vec = h_vec;
   int x = komrade::reduce(d_vec.begin(),
                           d_vec.end(),
                           komrade::plus());
   return 0;
}

Trong hàm main() ở đoạn chương trình trên, rõ ràng chúng ta không cần quan tâm gì đến chuyện khởi động thiết bị (GPU), rồi cấp phát bộ nhớ trên RAM và trên bộ nhớ toàn cục của GPU, sao chép dữ liệu từ RAM vào phần bộ nhớ trên GPU, kích hoạt kernel để tính toán, sau cùng lấy dữ liệu từ GPU trả trở về cho CPU, như thường thấy trong lập trình CUDA.

Các bạn thử chạy chương trình trên với số lượng các số ngẫu nhiên không phải là 100, mà 1000, hay 10000 coi nó có nhanh hơn phiên bản do các bạn tự sáng tác ra, hay tìm được đâu đó trên NET 🙂 không?

Komrade chỉ dùng được với CUDA 2.2 trở lên. Phiên bản này với rất nhiều cải tiến mới mẻ sẽ được công bố chính thức một ngày không xa 🙂 . Hiện tại các bạn có thể đăng ký và dùng thử ở đây: http://www.nvidia.com/object/cuda_get.html (tìm cụm từ CUDA 2.2 Beta).

Tài liệu tham khảo – Tháng 3/2009

Tạp chí Dr.Dobbs vừa có thêm một mục mới là “This Week’s Multicore Reading List”, giới thiệu những tài liệu hay cho những ai lập trình đa lõi. Bạn nào quan tâm có thể vào link dưới đây.

http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=215802127

Đáng đọc nhất là quyển “Programming with POSIX Threads” giới thiệu lập trình pthread một cách chi tiết của David R. Butenhof và phần giới thiệu về “Programming Clojure” của Stuart Halloway. Có dịp tôi sẽ bàn nhiều hơn về pthread + CUDA cho các Tesla cluster.

Ngoài ra bài giảng của tôi tại HPC Asia 2009 đã được ban tổ chức upload lên ở đây:

http://www.nchc.org.tw/event/2009/hpcasia/program/advanced.php (Tutorial 1)

Cập nhật (13/03/2016): link mới cho các bài giảng tại HPC Asia 2009 là

http://event.nchc.org.tw/2009/hpcasia/program/advanced.php (Tutorial 1)

Trong bài giảng này tôi đã cập nhật gần đầy đủ các thông tin mới nhất liên quan đến CUDA.