2.2.Cơ chế lập trình và cách thức hoạt động của CUDA
2.2.1. Cơ chế lập trình
Cần phải có các thư viện hỗ trợ để chương trình CUDA hoạt động được trong môi trường windows hoặc linux. Do NVIDIA cung cấp Các thư viện này, gồm có các phần sau: Bộ công cụ phát triển CUDA (gọi là CUDA Toolkit) và bộ CUDA SDK Trình điều khiển thiết bị đồ họa cho GPU của NIVIDA.
2.2.2.Cách thức hoạt động của CUDA
Mong muốn chương trình chạy nhanh hơn nhờ khả năng xử lý song song nên sử dụng CUDA. Vậy ta cần loại bỏ các ảnh hưởng làm một chương trình chạy chậm đi. Ảnh hưởng chính đến tốc độ của 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. Một chương trình CUDA hoạt động theo mô hình SIMD (single instruction multiple data) đ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. Việc này biến một chương trình song song theo mô hình SIMD thành mô hình nối tiếp.
Kích thước dữ liệu phải bằng 4, 8, 16 bytes vì kích thước của kiểu dữ liệu rất quan trọng trong việc truy cập dữ liệu một cách thống nhất (coalescing). Để 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ẻ) khi số lệnh tính toán lớn thì nên sao chép dữ liệu từ bộ nhớ chung (global memory) vào bộ nhớ chia sẻ (shared memory).
Một chương trình CUDA thường sử dụng hai hàm: Một hàm kernel dùng cho việc xử lý dữ liệu, Một hàm dành cho việc truy cập dữ liệu.
Để hiểu cách hoạt động một chương trình CUDA, cần thừa nhận một số các khái niệm sau: