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.

 

Môi trường phát triển đầu tiên cho OpenCL

Sau nhiều ngày chờ đợi, từ hôm nay, giới lập trình song song trên GPU lại có thêm một công cụ mạnh mẽ trong tay, đó là môi trường phát triển cho OpenCL, do NVIDIA phát hành. Bộ môi trường phát triển này bao gồm trình điều khiển thiết bị riêng cho OpenCL chạy trên các GPU của NVIDIA, và bộ OpenCL SDK.

Thông tin chi tiết đến từ trang web của NVIDIA:

http://www.nvidia.com/object/io_1240224603372.html
http://www.nvidia.com/object/cuda_opencl.html

Để tham gia dùng thử bộ OpenCL SDK này, mọi người có thể tham gia chương trình “NVIDIA’s GPU Computing Registered Developer Program” bằng cách đăng ký ở đây:

http://nvdeveloper.nvidia.com/content/GPUComputingDeveloperApplication/
frmDeveloperRegistration.asp

Bộ công cụ phát triển này đang còn ở giai đoạn sơ khai (Alpha Test) nên chỉ bao gồm các chức năng quan trọng nhất nêu trong đặc tả chuẩn OpenCL 1.0 của tổ chức Khronos.

Lập trình trên OpenCL là một chủ đề mới khá thú vị mà tôi hy vọng sẽ có dịp trao đổi nhiều hơn khi có thêm thời gian 🙂

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).