Trong bộ công cụ phát triển phần mềm CUDA do NVIDIA cung cấp miễn phí tại địa chỉ http://developer.nvidia.com/object/cuda_2_3_downloads.html, CUDA SDK là một tập hợp các mã chương trình mẫu rất hữu ích cho việc học lập trình CUDA. Có thể nói nó bao gồm rất nhiều ‘tuyệt chiêu’ độc đáo trong việc cài đặt xử lý song song trên GPU với CUDA và các giao diện lập trình có liên quan như OpenGL, DirectX, … Kể từ phiên bản 2.3, tên gọi chính thức của CUDA SDK đã được thay đổi thành GPU Computing SDK, nhằm phản ánh quan điểm của NVIDIA giờ đây xem CUDA như một kiến trúc nền tảng cho xử lý song song trên GPU, và trên đó có thể triển khai các ứng dụng dựa trên nhiều ngôn ngữ và giao diện lập trình khác nhau tùy theo yêu cầu công việc, sở thích của lập trình viên (xem hình 1).
Hình 1 – Kiến trúc xử lý song song CUDA cho tính toán trên GPU
Cùng với sự thay đổi về tên gọi, cấu trúc của cây thư mục CUDA SDK cũng được thay đổi. Trong CUDA phiên bản 2.3, chúng ta có thể quan sát thấy có một thư mục con tên ‘C’ chứa tổng cộng 75 chương trình mẫu viết bằng ngôn ngữ C/C++. Với CUDA 3.0, chúng ta sẽ có thêm 2 thư mục con nữa cho giao diện lập trình ứng dụng mới trong Windows 7 do Microsoft đưa ra gọi là DirectCompute và giao diện lập trình song song chuẩn mở OpenCL được giới thiệu bởi Apple. Số lượng các chương trình mẫu cũng tăng lên, với 77 chương trình được viết bằng C/C++, 30 chương trình viết dựa trên OpenCL, và 4 chương trình viết dựa trên DirectCompute.
Với số lượng khá lớn các ứng dụng mẫu trong bộ GPU Computing SDK cùng các kỹ thuật phức tạp được sử dụng trong đó, người mới học lập trình CUDA sẽ bị choáng ngợp và không biết nên bắt đầu từ đâu. Mục đích của loạt bài viết này là nhằm giúp các bạn tiếp cận có hệ thống với các kỹ thuật lập trình song song bằng CUDA từ đơn giản đến phức tạp thông qua việc phân tích chi tiết các mã nguồn có trong bộ SDK này.
Trước hết tôi sẽ giới thiệu cách thức cài đặt và tổ chức của nó trên 2 hệ điều hành thông dụng nhất là Windows và Linux.
Để chạy được các ứng dụng trong bộ GPU Computing SDK, cũng như các ứng dụng được viết dựa trên công nghệ CUDA khác, sau đây là những thứ bạn phải có trên hệ thống máy tính của mình:
- NVIDIA GPU có hỗ trợ CUDA. Danh sách chi tiết có ở đây:
http://www.nvidia.com/object/cuda_gpus.html
Trong trang này, phần ‘Frequently Asked Questions’ sẽ chỉ cho bạn cách kiểm tra đời GPU trên máy của mình, và xác định xem liệu nó có chạy được ứng dụng CUDA hay không. - Trình điều khiển thiết bị CUDA. Bạn có thể download nó ở link tôi đã chỉ ra trên phần đầu của bài viết này, tùy theo hệ điều hành bạn sử dụng là Windows hay Linux, 32-bit hay 64-bit, máy của bạn ở dạng PC hay notebook hay máy chủ. Các trình điều khiển được liệt kê trong link tôi đã nêu là những trình điều khiển đã được kiểm tra chạy tốt với CUDA phiên bản 2.3 và bạn có thể dùng nó khi học CUDA. Tuy nhiên, do sự thật là trình điều khiển thiết bị CUDA được nhúng bên trong trình điều khiển thiết bị đồ họa tương ứng với GPU của bạn do NVIDIA cung cấp, bạn cũng có thể cài đặt bản mới nhất thích hợp cho máy của mình theo hướng dẫn ở trang này:
http://www.nvidia.com/Download/index5.aspx?lang=en-us
Nếu máy của bạn ở dạng PC, bạn nên sử dụng mục có tựa là ‘Download The Latest Graphics Drivers For Your Desktop PC!’, còn nếu bạn dùng notebook thì nên nhìn sang cột bên trái, click vào chỗ có tựa là ‘NVIDIA Verde Notebook Driver Program’. Link trực tiếp cho notebook driver ở đây:
http://www.nvidia.com/object/notebook_drivers.html
Trình điều khiển thiết bị đồ họa do NVIDIA cung cấp cho PC trên Windows thường có phiên bản mới nhanh hơn so với Linux. Ở thời điểm của bài viết này, phiên bản mới nhất của trình điều khiển trên Windows là 196.75, còn trên Linux là 190.53. Phần cài đặt trình điều khiển thiết bị trên Linux phức tạp hơn nhiều so với trên Windows, nên tôi tách riêng ra và hướng dẫn chi tiết trong phần ‘Cài đặt GPU Computing SDK trên Linux’. - Bộ công cụ phát triển ứng dụng CUDA. Bạn có thể download nó từ cùng link tôi đã cho ở phần đầu bài viết này. Bộ công cụ này cung cấp môi trường phát triển ứng dụng cơ bản, bao gồm trình biên dịch, trình gỡ rối, trình đo đạc hiệu năng, các thư viện nền cần thiết cho mọi ứng dụng CUDA.
- DirectX phiên bản mới nhất thích hợp với hệ điều hành Windows trên máy của bạn.
- Thư viện OpenGL & GLUT cho môi trường Linux. Chi tiết xem trong phần ‘Cài đặt GPU Computing SDK trên Linux’.
* Cài đặt GPU Computing SDK trên Windows
Thao tác cài đặt GPU Computing SDK trên môi trường Windows rất đơn giản. Bạn chỉ cần chú ý xem hệ điều hành Windows trên máy của mình là 32-bit hay 64-bit rồi download phiên bản thích hợp từ link có ở đầu bài viết và install nó vào máy của mình. Để kiểm tra hệ điều hành của bạn là 32-bit hay 64-bit, với Windows Vista/7 hãy ấn phím mouse bên phải trên mục Computer trong Start Menu của Windows, chọn Properties, sau đó tìm chỗ có thông tin về System Type. Với Windows XP, chọn Start–>Run, nhập vào lệnh dxdiag, chọn No để bỏ qua mục ‘verify drivers’, sau đó quan sát cửa sổ sau cùng, tìm dòng Operating System. Nếu trên dòng đó có con số 64 hoặc từ Itanium thì máy chạy hệ điều hành 64-bit, ngược lại là 32-bit.
Sau khi install xong, bạn có thể kiểm tra nơi lưu các chương trình mẫu đã được biên dịch sẵn như sau:
-
<CUDA_SDK_INSTALLED_PATH>\C\bin\win32\Release (cho hệ điều hành 32-bit), hoặc
<CUDA_SDK_INSTALLED_PATH>\C\bin\win64\Release (cho hệ điều hành 64-bit), trong đó <CUDA_SDK_INSTALLED_PATH> là nơi bạn đã chọn cài đặt bộ SDK này.
Nếu muốn thực thi các chương trình mẫu này từ cửa sổ lệnh ‘Command Prompt’ (rất có ích nếu bạn muốn chỉ định thực thi chương trình trên 1 trong nhiều GPU mà bạn có trên máy, hoặc chỉnh sửa các tham số dòng lệnh của chương trình), bạn nên thêm đường dẫn nêu trên vào biến môi trường PATH của Windows. Chi tiết về các biến môi trường trong Windows và Linux có thể tham khảo ở đây. Phần mềm RapidEE ở cuối trang đó rất tiện lợi trong việc chỉnh sửa hay kiểm tra các đường dẫn không tồn tại trong hệ thống.
Phiên bản cài đặt trên Windows cũng sẽ cài đặt một icon trên màn hình desktop của bạn. Khi nhấn đúp chuột lên đó, một cửa sổ mới sẽ xuất hiện, cho phép bạn truy cập tiện lợi hơn đến các ứng dụng mẫu có trong bộ SDK, chẳng hạn như thực thi một chương trình bằng cách ấn vào nút Run, xem thêm phần giảng giải chi tiết hơn về các kỹ thuật được sử dụng trong từng chương trình qua mục Whitepaper, hoặc nếu cần thiết có thể truy cập ngay đến thư mục chứa các file tương ứng qua nút Files, tìm kiếm theo từ khóa qua mục Search, và chọn lọc các ứng dụng cần xem theo thể loại qua mục Categories (xem hình 2). Với phiên bản CUDA 3.0 đang trong giai đoạn beta test công khai, ngoài tag ‘CUDA C Samples’, chúng ta còn có tag ‘OpenCL Samples’ và ‘DirectCompute Samples’ cho một số các ứng dụng mẫu đã được cài đặt bằng C/C++ và được viết lại bằng công cụ OpenCL hay DirectCompute.
Hình 2 – Giao diện đồ họa cho GPU Computing SDK trong Windows
(Còn tiếp …)


![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=e50a00a1-7d60-4d87-bc31-475f336b8e0b)