Môi trường lập trình với CUDA (6)

Một phần của tài liệu NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI (Trang 53 - 58)

Để chương trình CUDA hoạt động được trong môi trường windows hoặc linux, cần phải có các thư viện hỗ trợ. Các thư viện này do NVIDIA cung cấp gồm có các phần sau: Trình điều khiển thiết bị đồ họa cho GPU của NIVIDA, bộ công cụ phát triển CUDA (gọi là CUDA Toolkit), và bộ CUDA SDK.

- 42 -

20. Cách tải phần mềm:

Tải từ trang http://www.nvidia.com/object/cuda_get.html#windows tương ứng với số serial của card. (chưa xong)

21. Cách cài đặt Cuda driver

Cài mặc định vào C:\NVIDIA\ (phần này chưa xong, có nên để hình bày cách cài đặt).

2.2.4.2. Cài đặt CUDA toolkit

Sau khi đã cài đặt driver cho card ban cần phải cài bộ công cụ hỗ trợ lập trình cho CUDA. Bạn cần download 2 file “NVIDIA_CUDA_Toolkit_1.0.exe” và

“NVIDIA_CUDA_SKD_1.0.exe” tại site

http://www.nvidia.com/object/cuda_get.html#windows . Tùy thuộc vào OS của máy bạn là 32 hay 64-bit (nếu 32-bit bạn chọn Architecture là “x86” và nếu là 64-bit bạn chọn “x86-64”).

2.2.4.3. Cài đặt CUDA SDK

NVIDIA_CUDA_SKD_1.0.exe này là bộ SDK của NVIDIA. Trong file này sau khi cài đặt sẽ chứa các dự án mẫu. Các dự án này rất quan trong trong việc tự nghiên cứu của bạn. Sau khi download file “NVIDIA_CUDA_SDK_1.0.exe” (hoặc mới hơn) bạn double click vào file này để cài đặt vào hệ thống. Sau khi double click vào file này thì chương trình cài đặt tự động “Install Shied Wizard” sẽ được kích hoạt.

2.2.4.4. Kiểm tra kết quả cài đặt

Sau khi tiến hành cài đặt trình điều khiển thiết bị đồ họa cho GPU của NVIDIA, để kiểm tra kết quả cài đặt chúng ta có thể bấm phím chuột phải trên màn hình desktop và chọn mục ‘NVIDIA Control Panel’. Trong trường hợp không quan sát thấy mục ‘NVIDIA Control Panel’ sau khi đã bấm phím chuột phải, quá trình cài đặt trình điều khiển thiết bị đã không được hoàn tất đúng cách và cần phải được tiến hành lại sau khi đã khởi động lại máy tính.

- 43 -

Để kiểm tra phiên bản trình điều khiển đồ họa đã được cài đặt, chọn mục ‘System Information’ ở bên trái cuối cửa sổ hội thoại NVIDIA control panel, xuất hiện hộp thoại System Information như sau:

Ở phần item là nơi liệt kê các GPU của NVIDIA có trong hệ thống máy tính của người dùng. Hiện tại là GeForce 9500 GT. Tham số dirver version cho biết phiên bản của trình điều khiển đồ họa đã được cài đặt trên máy (257.51) và số lượng nhân CUDA có trong mỗi GPU kiểu GetForce 9500 (32 nhân).

2.2.4.5. Cách thiết lập 1 dự án CUDA trên Microsoft Visual C++ 2005

Trong phần này sẽ hướng dẫn cách thức tạo ra một dự án CUDA. Để đơn giản ta sẽ tạo một dự án console. Mở Microsoft Visual C++, vào menu “File->New-

- 44 -

>Project…” hộp thoại “New Project” hiển thị vào “Visual C++->Win32” sau đó chọn “Win32 Console Application”. Bạn có thể đặt tên cho dự án là “CudaStep1” và solution “CudaProgram”. Sau đó bạn click “OK->Next->Finish”. Cho đến thời điểm này bạn đã có 1 dự án console nhưng chưa phải là dự án cuda. Xem hình dưới.

Hình 5.1. Hình này chưa có

Vào của sổ “Solution Explorer click phải vào “Header Files->Add->New Item…” hộp thoại “Add new Item - CudaStep1” hiển thị. Tiếp theo bạn vào ” Visual C++-> Code” chọn “Header File(.h)” và đặt tên “CudaHeader.h” rồi click Add (Figure 12). Tệp tin này sẽ chứa thông tin vế cấu hình của chương trình cuda và prototype của các hàm kernel mà bạn sẽ viết.

Tiếp theo cần tạo một file chứa mã nguồn cho một chương trình cuda, file này sẽ được mở rộng bằng “.cu” tương tự như bước 2 bạn vào của sổ “Solution Explorer click phải vào “Header Files->Add->New Item…” hộp thoại “Add new Item- CudaStep1” hiển thị. Tiếp theo bạn vào ” Visual C++->Utility” chọn “Text File (.txt)” và đặt tên là “CudaFunction.cu” rồi click Add.

Cho đến lúc này bạn đã tạo ra một dự án cuda, nhưng chương trình vẫn chưa hoạt động được vì bạn chưa viết mã cho chương trình. Để mô tả hoạt động chương trình ta cần một chương trình nhỏ xử lý một ma trận gồm 32 phần tử. Hàm cuda sẽ có nhiệm vụ tăng giá trị một phần tử lên một đơn vị. Mở file “CudaStep1.cpp” và khởi tạo một ma trận dùng làm dữ liệu mẫu để tính toán có thể copy đoạn chương trình sau: [xem phụ lục]

2.2.4.6. Cơ chế hoạt động một chương trình cuda

Ta sử dụng CUDA vì mong muốn chương trình chạy nhanh hơn nhờ khả năng xử lý song song. Vì thế tốt hơn hết chúng ta cần loại bỏ các ảnh hưởng làm một chương trình chạy chậm đi. Một chương trình CUDA hoạt động theo mô hình SIMD (single instruction multiple data) vì thế ảnh hưởng chính đến tốc độ của

- 45 -

chương trình là sự không thống nhất và tranh chấp vùng nhớ trong quá trình đọc và lưu dữ liệu. Điều này buộc trình biên dịch phải chọn giải pháp an toàn trong truy cập dữ liệu, điều này biến một chương trình song song theo mô hình SIMD biến thành mô hình nối tiếp.

Kích thước của kiểu dữ liệu rất quan trọng trong việc truy cập data một cách thống nhất (coalescing) kích thước dữ liệu phải bằng 4,8,16 bytes. Ngoài ra nếu số lệnh tính toán là lớn thì ta nên copy dữ liệu từ bộ nhớ chung (global memory) vào bộ nhớ chia sẻ (shared memory) để hạn chế việc truy cập thường xuyên vào bộ nhớ chung làm chậm chương trình (do việc truy cập vào bộ nhớ chung mất rất nhiều thời gian hơn truy cập vào bộ nhớ chia sẻ).

Pattern của một chương trình cuda thường sử dụng hai hàm (một hàm dành cho việc truy cập dữ liệu và hàm còn lại thường được gọi là hàm kernel dùng cho việc xử lý dữ liệu). (adsbygoogle = window.adsbygoogle || []).push({});

Để hiểu cách hoạt động một chương trình cuda ta cần thống nhất một số các khái niệm sau.

22. Host: là những tác vụ và cấu trúc phần cứng, phần mềm được xử lý từ CPU.

23. Divice: là những tác vụ và cấu trúc phân cứng, phần mềm được xử lý tại GPU.

- 46 -

Hình 6.1. Sơ đồ hoạt động truyền dữ liệu giữa Host và Device

Cách hoạt động được mô tả như sau:

24. Bước 1: Dữ liệu cần được tính toán luôn ở trên bộ nhớ của Host vì

vậy bước đầu tiên là truyền dữ liệu cần tính toán từ bộ nhớ Host qua bộ nhớ Device.

25. Bước 2: Sau đó Device sẽ gọi các hàm riêng của mình để tính toán

dữ liệu đó. Sau khi tính toán xong, dữ liệu cần được trả về lại cho bộ nhớ của Host.

Một phần của tài liệu NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI (Trang 53 - 58)