Host: Là cấu trúc phần cứng, phần mềm và những tác vụ và được xử lý bởi CPU.
Device: Là cấu trúc phần cứng, phần mềm và những tác vụ và được xử lý bởi GPU.
Cách hoạt động được mô tả như sau:
Bước đầu tiên là sao chép dữ liệu cần tính toán từ bộ nhớ Host sang bộ nhớ Device trước khi muốn thực hiện trên Device bởi dữ liệu cần tính toán luôn ở trên bộ nhớ của Host.
Sau khi sao chép dữ liệu, device sẽ thực hiện việc tính toán trên dữ liệu đó. Khi tính toán xong, dữ liệu cần được sao chép lại từ bộ nhớ Device sang bộ nhớ Host.
Đồng xử lý đa luồng mức cao
GPU được xem như là một thiết bị tính toán có khả năng thực hiện một số lượng rất lớn các luồng song song trong lập trình CUDA. GPU hoạt động như một bộ đồng xử lý với CPU chính. Có thể nói phần tính toán chuyên dụng của các ứng dụng chạy trên host, dữ liệu song song được tách rời khỏi thiết bị.
Được gọi là bộ nhớ host và bộ nhớ thiết bị, cả hai Host và Device duy trì DRAM riêng của nó. Sử dụng cơ chế truy cập bộ nhớ trực tiếp tốc độ cao thiết bị, có thể sao chép dữ liệu giữa DRAM của Host và Device thông qua API đã tối ưu hóa.
Cụ thể một phần của một ứng dụng được thực hiện nhiều lần, độc lập về mặt dữ liệu, và nhóm thành một chức năng được thực hiện trên thiết bị như nhiều luồng khác nhau. Thực hiện bằng việc một chức năng được biên dịch thành các tập lệnh của thiết bị và tạo ra chương trình, gọi là nhân, được tải vào thiết bị.
Gom lô cácluồng
Lô các luồng thực hiện được nhân (kernel) tổ chức thành một lưới các khối luồng được thể hiện trong các phần sau.
Khối luồng
Một khối luồng là một tập các luồng, có thể đồng thời xử lý với nhau bằng cách thực thi đồng bộ để phối hợp truy cập bộ nhớ và dùng dữ liệu trong bộ nhớ dùng chung. Nói chính xác hơn, nơi các luồng trong khối sẽ dừng cho đến khi tất cả các luồng tới điểm đồng bộ, có thể xác định các điểm đồng bộ trong nhân.
Mỗi luồng được xác định bởi số hiệu của luồng trong khối là ID. Để hỗ trợ việc định địa chỉ phức tạp dựa trên ID luồng, một ứng dụng cũng có thể xác định từng luồng bằng cách sử dụng chỉ số hai hoặc ba thành phần để thay thế hoặc chỉ định một khối như một mảng hai hoặc ba chiều có kích thước tùy ý. Đối với các khối kích thước hai chiều (Dx, Dy), ID luồng của phần tử có chỉ số (x, y) là (x + y Dx) và đối với khối kích thước ba chiều (Dx, Dy, Dz), ID luồng của phần tử (x, y, z) là (x + yDx + z Dx Dy) .
Lưới các khối luồng (Grid of Thread Blocks)