Cấu trúc của CUDA

Một phần của tài liệu Mô phỏng song song sử dụng khối xử lý đồ họa GPGPU (Trang 39 - 41)

Sự cạnh tranh trong ngành công nghiệp video-game để thể hiện chân thực cuộc sống hơn và trình diễn đồ họa 3D ở độ phân giải cao đã mở ra sự

cạnh tranh giữa các nhà sản xuất GPU để cung cấp phần cứng tốt hơn tới các game thủ. Nhờ có xử lý đồ họa tự nhiên, các sản phẩm được phát hành mới

đây cung cấp các bộ xử lý song song tốc độ cao với băng thông bộ nhớ cao và sức mạnh tính toán lên tới hàng teraflops trên giây. Các GPU hiện đại được thiết kế để hỗ trợ tính toán song song dữ liệu, tức là có nhiều luồng thực thi cùng một mã nguồn với mỗi phần tử dữ liệu. Xử lý song song dữ liệu có thể được miêu tả ngắn gọn bởi các phần tử dữ liệu ánh xạ vào các luồng xử lý song song. Hiệu năng nâng lên nếu có ít hoặc không có rẽ nhánh, chính xác là một mã nguồn được thực thi cho mọi luồng song song đang chạy. Các nhân xử lý ảnh và các phép toán ma trận nằm trong các ứng dụng đặc thù để thu

được nhiều lợi ích nhất từ kiến trúc này. Song ý nghĩa của việc tăng tốc độ

tính toán có thể thu được bởi việc áp dụng kiến trúc song song dữ liệu này cho các thuật toán đang tồn tại khác. Trong tương lai gần, các nhà phát triển phần cứng sẽ cung cấp những GPU tốt hơn với nhiều luồng xử lý song song hơn nữa. Trách nhiệm của các nhà phát triển phần mềm đó là sử dụng năng lực xử

lý lạ thường của GPU để có thể so sánh được với năng lực xử lý của các cụm máy tính hiệu năng cao.

Khi người ta không thể đưa ra các cải tiến cho các giải pháp đang tồn tại về mặt thuật toán, thì người ta quan tâm vào việc phát triển các GPU mới với khả năng chạy nhiều luồng xử lý hơn để nâng cao hiệu năng tính toán.

Điều này có nghĩa là mã nguồn đã được thiết kế cho dòng NVidia 8 sẽ chạy nhanh hơn với dòng NVidia GTX mà không cần thêm những cải tiến về mã nguồn.

35 Ba điều được rút ra dưới đây đảm bảo song song dữ liệu và song song luồng tốt, giúp cho các lập trình viên CUDA cảm thấy dễ dàng hơn:

• Sự phân cấp nhóm luồng: các luồng (thread) được dồn vào trong các khối (block), các khối này cũng được dồn vào trong các lưới đơn (grid).

• Các bộ nhớ chia sẻ: CUDA cho phép các luồng sử dụng 6 kiểu bộ nhớ khác nhau được thiết kếđểđáp ứng cho các yêu cầu khác nhau.

• Barrier đồng bộ hóa: có chức năng đồng bộ hóa các luồng bên trong một khối đơn và tạo một luồng đợi các luồng khác để kết thúc công việc tính toán liên quan, trước khi tiếp tục công việc khác.

C for CUDA làm cho CUDA có thể viết các hàm chạy trên GPU bằng việc sử dụng ngôn ngữ lập trình C. Các hàm này được gọi là các “kernel”,

được thực thi bởi mỗi luồng một cách song song, không như các hàm lập trình tuần tự thông thường được chạy chỉ một lần tại một thời điểm.

Kiến trúc của CUDA cung cấp sự phân cấp luồng theo thứ tự trên xuống như sau:

1) Lưới (Grid): chứa các khối một hoặc hai chiều.

2) Các khối (Blocks): chứa các luồng một, hai hoặc ba chiều. GPU hiện tại cho phép một khối chứa tối đa 512 luồng. Các khối được thực thi một cách độc lập và trực tiếp với các bộ xử lý có sẵn để

phân chia tỷ lệ.

3) Luồng (Thread): là phần tử thực thi cơ sở.

Cấu trúc và sự phân cấp này được mô tả ở hình 2.4 dưới đây. Ví dụ: nếu có 1048576 công việc cần xử lý một cách độc lập bằng cách song song và kích thước khối là 512, thì số khối là 2048 khối.

36 Hình 2.4. Phân cấp luồng CUDA. [9]

Một phần của tài liệu Mô phỏng song song sử dụng khối xử lý đồ họa GPGPU (Trang 39 - 41)

Tải bản đầy đủ (PDF)

(87 trang)