Khả năng mở rộng của CUDA

Một phần của tài liệu Nghiên cứu một số thuật toán thám mã sử dụng công nghệ tính toán song song trên các bộ xử lý đồ họa (Trang 51 - 53)

Sự xuất hiện của các CPU đa lõi và GPU nhiều lõi cho thấy rằng xu thế chủ đạo của các chip xử lý bây giờ là các hệ thống song song. Hơn nữa, đặc tính song song của chúng tiếp

51

tục gia tăng theo luật của Moore. Sự thách thức là để phát triển phần mềm ứng dụng mở rộng (scale) trong suốt về tính song song để tận dụng đƣợc sự gia tăng về số lƣợng của các lõi xử lý, càng có nhiều các ứng dụng 3D mở rộng (scale) một cách trong suốt tính song song của nó tới các GPU nhiều lõi với các số lƣợng thay đổi lớn của các lõi.

Mô hình lập trình CUDA đƣợc thiết kế để vƣợt qua thách thức này trong khi vẫn duy trì một độ khó về học tập thấp cho các ngƣời lập trình quen thuộc với ngôn ngữ lập trình chuẩn nhƣ C.

Trong nhân của CUDA là ba khái niệm trừu tƣợng chính – một cơ chế phân cấp của các nhóm thread, các bộ nhớ chia sẻ, và rào chắn đồng bộ – đơn giản đƣợc bộc lộ tới ngƣời lập trình nhƣ là một tập nhỏ các mở rộng về ngôn ngữ.

Các khái niệm trừu tƣợng này cung cấp cơ chế song song dữ liệu và song song tiến trình nhỏ đƣợc lồng bên trong song song dữ liệu và song song tác vụ lớn. Chúng hƣớng ngƣời lập trình phân chia bài toán thành các bài toán con thô có thể đƣợc giải quyết độc lập một cách song song bởi các block gồm các tiến trình và mỗi bài toán con thành các phần mịn hơn mà có thể đƣợc giải quyết cùng nhau theo song song bởi tất cả các tiến trình bên trong block đó. Sự phân chia này biểu hiện khả năng của ngôn ngữ đó là cho phép các tiến trình phối hợp với nhau để xử lý mỗi bài toán con, và tại cùng một thời điểm cho phép mở rộng một cách tự động. Quả thực, mỗi block tiến trình có thể đƣợc lập lịch trên bất kỳ số lƣợng lõi xử lý nào đang có, theo bất cứ thứ tự nào, đồng thời hay là tuần tự, do đó một chƣơng trình CUDA đã biên dịch có thể chạy trên mọi số lƣợng lõi xử lý nhƣ đƣợc minh họa ở hình 4-5, và chỉ vào lúc chạy hệ thống mới cần biết số lƣợng lõi xử lý vật lý.

Mô hình lập trình có thể mở rộng này cho phép kiến trúc CUDA mở rộng một phạm vi thƣơng mại rộng lớn bằng cách là đơn giản mở rộng số lƣợng lõi xử lý và các phân vùng bộ nhớ: từ các GPU dành cho tính toán hiệu năng cao GeForce và các sản phẩm cao cấp Quadro và tính toán Tesla tới một số đa dạng các loại rẻ hơn, dòng chính là các GPU GeForce.

Một chƣơng trình đa luồng đƣợc phân chia thành các block tiến trình và chúng đƣợc thực thi độc lập với nhau, do đó một GPU nhiều lõi sẽ tự động thực hiện chƣơng trình đó nhanh hơn một GPU có ít lõi hơn.

52

Hình 4.5. Khả năng tự mở rộng

Một phần của tài liệu Nghiên cứu một số thuật toán thám mã sử dụng công nghệ tính toán song song trên các bộ xử lý đồ họa (Trang 51 - 53)