Trên thực tế, có những thuật toán và cấu trúc dữ liệu vốn dĩ nó đã tương thích với mô hình lập trình song song, trong khi có một số khác thì lại không. Thật khó để có thể tìm thấy một khuôn mẫu vạn năng cho các thuật toán và cấu trúc dữ liệu khác nhau tương thích với mô hình lập trình song song, và thậm chí một số trong đó không thể lập trình song song được. Tuy nhiên, các nghiên cứu cơ bản về các vấn đề này vẫn tiếp diễn và bất kỳ phát minh nào trong những lĩnh vực này sẽ làm thay đổi sâu sắc bối cảnh của khoa học máy tính.
Một trong số những nghiên cứu nổi bật trong lĩnh vực này là nghiên cứu của Kim [27] với thuật toán tìm kiếm trên cây với cả GPU và CPU. Công việc của Kim tập trung vào việc tối ưu hóa thuật toán tìm kiếm trên cây đồng thời trên cả CPU và GPU. Ông đã đưa ra một thuật toán được đáp ứng cho cả
CPU và GPU. Không dễ để song song hóa việc tìm kiếm trên cây bởi mỗi mức tìm kiếm tiếp theo của cây luôn phụ thuộc vào kết quả tìm kiếm tới từ
mức trước đó. Sự phụ thuộc dữ liệu đã khử mất khả năng có thể tìm kiếm trên toàn bộ cây (mọi mức trên cây) tại cùng một thời điểm. Thuật toán của Kim, thay bằng việc cố gắng cải thiện thời gian thực thi các truy vấn tìm kiếm riêng lẻ, thì nó tập trung vào việc gia tăng thông lượng của các truy vấn. Với GPGPU, một lượng lớn các truy vấn có thể được thực hiện một cách đồng thời và vì thế việc cải tiến hiệu năng sẽ thu được hiệu quả khi cần tìm kiếm một lượng dữ liệu lớn. Tương tự thuật toán GPGPU, thuật toán của Kim với CPU tận dụng tốt mô hình ống SIMD, như Intel’s Streaming SIMD Extensions (SSE) và AMD’s 3D. Thuật toán đã phải dành sự quan tâm đặc biệt tới việc truyền dữ liệu đểđảm bảo rằng các bộ nhớ L1 cache, L2 cache và bộ nhớ đệm của hệ thống được tận dụng một cách tối đa. Do cấu trúc bộ nhớ
30 cache đơn giản hơn nhiều nên cấu trúc thuật toán GPGPU không phức tạp như các thuật toán trên CPU.
Kích thước của cây con được lựa chọn một cách cẩn thận để dữ liệu nút cây con vừa vặn với khối bộ nhớ chia sẻ trên GPU và bộ nhớ truy nhập tối thiểu cần để xử lý truy vấn trong cây con. Việc thực hiện GPGPU hoạt động nhanh xấp xỉ 2 lần so với phiên bản trên CPU. Mặc dù việc tăng tốc này không đáng kể nhưở các ứng dụng khác nhưng do quá trình tìm kiếm trên cây vốn dĩ đã không hỗ trợ song song hóa tốt, nên công bằng mà nói GPGPU một lần nữa lại có hiệu năng tốt hơn CPU.
Thiết kế GPGPU hiện đại đã được mở rộng để tối ưu hóa cấu trúc cho các loại bài toán này, và việc xem xét các vấn đề tối ưu này có ý nghĩa khác so với việc xem xét thông thường trong các kiến trúc CPU.
31
CHƯƠNG 2
CÔNG NGHỆ NVIDIA CUDA
VÀ TÍNH TOÁN SONG SONG TRÊN BỘ XỬ LÝ ĐỒ HỌA GPGPU