.BiếnBuilt-in trong CUDA

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 50 - 51)

Biến build-in để xác định chiều của lưới và khối, chỉ số khối và luồng :  blockDim là biến kiểu dim3 và chứa kích thước của một khối.  threadIdx là biến kiểu unit3 và chứa các chỉ số luồng trong khối  gridDim là biến kiểu dim3 và chứa các kích thước của lưới.

Hình 17: Chiều của lưới và khối với chỉ số khối và luồng

2.3.4. Biên dịch CUDA thông qua NVCC

Bao gồm biên dịch mã thiết bị sang dạng nhị phân hoặc các đối tượng cubin và luồng công việc cơ bản trong việc tách mã thiết bị từ mã Host. Mã Host sinh ra là đầu ra có thể là mã C để được biên dịch bằng cách sử dụng một công cụ khác.

Ứng dụng tải đối tượng cubin vào thiết bị và khởi động mã thiết bị sử dụng trình điều khiểu API của CUDA hoặc liên kết tới mã Host sinh ra, trong đó bao gồm các đối tượng cubin được xem như mảng dữ liệu khởi tạo toàn cục và chứa một bản dịch các cú pháp thực thi cấu hình thành mã cần thiết khởi động trong thời gian chạy CUDA để nạp và khởi động mỗi lần biên dịch hạt nhân.

Là một trình điều khiển biên dịch bằng việc đơn giản hóa quá trình biên dịch mã CUDA. NVCC cung cấp các dòng lệnh đơn giản và quen thuộc thực hiện chúng bằng cách gọi tập hợp của các công cụ với công đoạn biên dịch khác nhau.

Frond end của trình biên dịch xử lý các tập tin nguồn CUDA theo cú pháp quy định C++. Tuy nhiên, chỉ có các tập con C của C++ được hỗ trợ. Điều này có nghĩa là những đặc tính đặc trưng của C++ như các lớp (classes), sự kế thừa hoặc việc khai báo các biến trong khối cơ bản là không được hỗ trợ. Như một hệ quả của việc sử dụng cú pháp C++, con trỏ void (ví dụ như trả lại malloc()) không thể được gán tới những con trỏ non-void mà không có ép kiểu .

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 50 - 51)