.Các giải thuật ứng dụng trênGPU

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng (Trang 38 - 42)

Khi phát triển phần lớn vào các phép toán cơ bản trên, các chuyên gia đã biểu diễn nhiều thuật toán mức cao và các ứng dụng khai thác các lợi thế tính toán của GPU.

Sắp xếp (Sort): GPU đã có những bước tiến đáng kể trong sắp xếp từ khi các nhà nghiên cứu GPU đã nghiên cứu lại, áp dụng, và cải thiện các thuật toán sắp xếp, đáng chú ý là sắp xếp bitonic merge. Thuật toán "sorting network" này về bản chất là song song và mù, có nghĩa là được thực hiện bất kể đầu vào và tương tự nhau. Nhờ sử dụng hệ thống thiết kế cẩn thận và sự kết hợp của cải tiến nhiều thuật toán Govindaraju và các đồng nghiệp đã giành giải hiệu năng "PennySort" trong cuộc thi "TeraSort" năm 2005.

Tìm kiếm và truy vấn cơ sở dữ liệu : Các nhà phát triển cũng đã triển khai một số hình thức tìm kiếm trên GPU, như các thuật toán sắp xếp nhanh ở trên, tìm kiếm láng giềng gần nhất, tìm kiếm nhị phân,cũng như các thao tác cơ sở dữ liệu được xây dựng trên phần cứng đồ họa mục đích đặc biệt (gọi là bộ đệm độ sâu stencil) .

Phương trình vi phân : Cố gắng đầu tiên sử dụng GPU cho tính toán phi đồ họa tập trung vào giải quyết các tập lớn phương trình vi phân. một ứng dụng GPU phổ biến cho phương trình vi phân thường (ODEs) là phép tìm đạo hàm, được sử dụng rất nhiều trong các hiệu ứng trực quan cho các chò trơi trên máy tính và trong mô phỏng khoa học (ví dụ, hệ thống thăm dò lưu lượng của Kr¨uger ). GPU

đã được sử dụng nhiều để giải quyết các vấn đề trong phương trình vi phân riêng (PDEs) như phương trình Navier- Stokes cho dòng chảy tự do. ứng dụng đặc biệt thành công mà GPU PDE đã giải quyết bao gồm phương trình thiết lập phân chia âm thanh và các động lực chất lỏng.

Đại số tuyến tính : chương trình đại số tuyến tính là các khối tạo dựng cốt lõi cho một rất lớn các thuật toán số học, bao gồm cả giải pháp PDE . Ứng dụng của nó bao gồm chứa mô phỏng các hiệu ứng vật lý như: bức xạ, hiệu ứng quang học như lĩnh vực độ sâu và chất lỏng, nhiệt, và tương tự, qua đó vấn đề đại số tuyến tính trên GPU đã nhận được nhiều sự chú ý. Điển hình là sản phẩm của Kr ¨uger và Westermann đã giải quyết một lớp rộng của các vấn đề đại số tuyến tính bằng cách tập trung vào biểu diễn ma trận và vectơ trong tính toán trên GPU dựa trên đồ họa (đóng gói các vector dày đặc (dense) và thưa thớt (sparse) vào các kết cấu, bộ đệm vector, v.v..). Một sản phẩm đáng chú ý khác là giải pháp cho các hệ thống tuyến tính dày đặc của Gallapo và đồng nghiệp, và các phân tích về phép nhân ma trận dày đặc của Fatahalian và đồng nghiệp. Tác giả đã cho thấy có hiệu suất lớn hơn, và thậm chí các triển khai ATLAS tối ưu hoá mức cao. Ứng dụng của các tầng trực tiếp tính toán như CTM và CUDA vừa đơn giản hoá đồng thời cải thiện hiệu suất của đại số tuyến tính trên GPU. Như NVIDIA cung cấp uBLAS, một gói đại số tuyến tính dày đặc thực thi trong CUDA và sau đó là các quy ước BLAS phổ biến. Các nhà nghiên cứu mong có mã nguồn thưa thớt để kiểm chứng lợi ích tương tự hoặc lớn hơn từ tầng tính toán mới GPU và các thuật toán đại số tuyến tính thưa thớt có nhiều biến đổi và phức tạp hơn so với loại dày đặc đang là một lĩnh mở và hướng nghiên cứu tích cực.

CHƯƠNG II: XỬ LÝ SONG SONG TRÊN THIẾT BỊ ĐỒ HỌA GPU VỚI CUDA

2.1. Khái quát về CUDA

Là từ viết tắt của thuật ngữ Compute Unified Device Architecture, CUDA tạm dịch là kiến trúc thiết bị hợp nhất cho tính toán. Bắt đầu xuất hiện từ tháng bảy năm 2007 với vai trò ban đầu là một bộ công cụ phát triển phần mềm dựa trên ngôn ngữ lập trình C. Hiện nay CUDA đang tiến hóa thành kiến trúc điện toán GPU, hay còn gọi là GPGPU của NVIDIA. CUDA có mặt trên hầu hết các GPU đời mới của NVIDIA, từ Quadro giành cho điện toán hình ảnh chuyên nghiệp, dòng Tesla cho tính toán hiệu năng cao và dòng GeForce giành cho giải trí.

Bộ phần mềm CUDA có các lớp mô tả trong Hình 11, gồm: API lập trình, bộ điều khiển (dirver) cho phần cứng, hai thư viện toán học mức cao hơn của các hàm thường dùng: CUFFT và CUBLAS và môi trường thực thi. Phần cứng được thiết kế để hỗ trợ bộ điều khiển hạng nhẹ và lớp môi trường thực thi. Kết quả là làm cho GPU có tốc độ cao .

Thư viện lập trình của CUDA bao gồm các hàm mở rộng của ngôn ngữ C. Hình 12 mô tả CUDA cung cấp cách đánh địa chỉ DRAM thường dùng cho việc lập trình linh hoạt hơn, bao gồm cả thao tác thu hồi bộ nhớ và cấp phát bộ nhớ. Giống như CPU nhìn từ góc độ lập trình, điều đó tương ứng với khả năng ghi và đọc dữ liệu tại bất kỳ địa chỉ nào trong DRAM.

Hình 12: Thao tác cấp phát và thu hồi bộ nhớ

Ngôn ngữ CUDA có đặc điểm lưu dữ liệu đệm song song, bộ nhớ chia sẽ trên bộ vi xử lý với tốc độ đọc ghi rất cao, các luồng dùng bộ nhớ này để chia sẻ dữ liệu với nhau. Ứng dụng có thể đạt kết quả tốt bằng cách tối thiểu việc lấy/trả dữ liệu từ DRAM, như mô tả trong hình. Qua đó giảm phụ thuộc băng thông truyền bộ nhớ DRAM.

Hình 13: Vùng nhớ dùng chung mang dữ liệu gần ALU hơn

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng (Trang 38 - 42)