Tổng quan về tính toán đa dụng GPU (GPGPU)

Một phần của tài liệu Giải pháp thiết kế và đánh giá hiệu năng siêu máy tính sử dụng CPU GPU (Trang 48 - 49)

Sử dụng GPU để xử lý các bài toán không liên quan đến đồ họa đƣợc gọi là tính toán đa dụng GPU (GPGPU - General Purpose GPU). Thông thƣờng các bài toán không đồ họa là các tác vụ có mật độ tính toán cao để tận dụng kiến trúc song song cao cấp của GPU xử lý dữ liệu một cách song song nhằm giảm thiểu thời gian xử lý. Sức mạnh tính toán của GPU nằm ở số lƣợng các đơn vị tính toán lớn, kiến trúc phần cứng tối ƣu hóa cho việc song song dữ liệu cùng các giao diện lập trình ứng dụng hỗ trợ song song code. Việc sử dụng GPU cho các ứng dụng GPU đƣợc hỗ trở bởi các trạng thái/ giai đoạn hỗ trợ lập trình và các tác vụ có xu hƣớng thiên về xử lý dữ liệu dấu phẩy động. Ngoài ra các phép toán có độ chính xác cao cũng nằm trong khả năng xử lý của GPU.

Với sự hấp dẫn từ các đặc tính ƣu việt không thể chối từ của GPU, số lƣợng các lập trình viên cố gắng hƣớng các ứng dụng của họ trở nên hƣớng GPGPU hơn. Ƣu điểm của lập trình GPU cũng làm cho nhiều lập trình viên bắt đầu viết lại ứng dụng của họ sử dụng GPGPU để có thể tận dụng đƣợc khả năng tính toán cấp cao của GPU. Chƣớng ngại vật lớn nhất khi lập trình viên lập trình GPGPU là làm cách nào để có thể tạo một môi trƣờng tính toán song song dữ liệu nhiều nhất có thể. Vì tính chất song song của GPU đƣợc triển khai ở nhiều tầng nên việc thực thi song song trên nhiều dữ liệu luôn là một yếu tố quan trọng trọng việc thiết kế các ứng dụng GPGPU.

Việc song song hóa đƣợc thực hiện từ việc chuyển dữ liệu từ vô hƣớng sang dạng véc tơ. Bộ xử lý véc tơ có thể thực thi hơn một lệnh trong một chu kì và các véc tơ đƣợc tính toán song song nếu các đặc tính của nó độc lập với nhau. Đặc tính này giúp song song hóa ở tầng lệnh mà có thể tận dụng đƣợc ở GPU.

Có rất nhiều bộ phát triển phần mềm và giao diện lập trình ứng dụng cho lập trình GPU hƣớng GPGPU hơn là đồ họa nhƣ NVIDIA CUDA, ATI Stream SDK, OpenCL, RapidMind, HMPP,… Việc lựa chọn cách tiếp cận nào để cải thiện tốc độ

50

cho phần mềm phụ thuộc vào một số các nhân tố bao gồm: loại ngôn ngữ đang sử dụng, tính di động, các chức năng phần mềm hỗ trợ và các yếu tố khác.

Ở thời điểm hiện tại, CUDA đang là lựa chọn chính cho việc lập trình GPGPU mặc dù nó chỉ hỗ trợ cho GPU của NVIDIA. Trong tƣơng lai, OpenCL hứa hẹn sẽ là một ngôn ngữ lập trình GPGPU chuẩn không phụ thuộc vào nhà sản xuất. Vì OpenCL phần lớn dựa trên CUDA nên nhiều khả năng các lập trình viên sẽ không gặp khó khăn khi chuyển từ ngôn ngữ lập trình độc quyền CUDA sang OpenCL.

Một phần của tài liệu Giải pháp thiết kế và đánh giá hiệu năng siêu máy tính sử dụng CPU GPU (Trang 48 - 49)

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

(126 trang)