2013-11-25 14 views
11

Có thể biên dịch chương trình CUDA mà không cần thiết bị có khả năng CUDA trên cùng một nút, chỉ sử dụng bộ công cụ NVIDIA CUDA ...?Tôi có thể biên dịch chương trình cuda không có thiết bị cuda

+6

Có. Trình điều khiển trình biên dịch 'nvcc' không liên quan đến sự hiện diện vật lý của một thiết bị, do đó bạn có thể biên dịch ngay cả khi không có GPU có khả năng của CUDA. Theo cùng một lý do, bạn có thể biên dịch mã CUDA cho một kiến ​​trúc khi nút của bạn lưu trữ một GPU có kiến ​​trúc khác nhau. Tất nhiên, trong cả hai trường hợp, bạn sẽ không thể chạy mã thành công. Hãy nhớ rằng mô phỏng thiết bị là do một số thời gian không được chấp nhận, vì vậy nếu bạn không có một thiết bị có khả năng CUDA, bạn có thể thử gpuocelot (nhưng tôi không có bất kỳ kinh nghiệm với điều đó). – JackOLantern

+0

@RobertCrovella Cảm ơn bạn đã làm rõ. Tôi đã chuyển đổi nhận xét thành câu trả lời đầy đủ. Xin vui lòng, cảm thấy tự do để chỉnh sửa nó hoặc thêm ý kiến ​​nếu tôi đang thiếu một cái gì đó. – JackOLantern

Trả lời

13

Câu trả lời cho câu hỏi của bạn là CÓ.

Trình điều khiển biên dịch nvcc không liên quan đến sự hiện diện vật lý của thiết bị, do đó bạn có thể biên dịch mã CUDA ngay cả khi không có GPU có khả năng CUDA. Tuy nhiên, hãy cảnh báo rằng, theo Robert Crovella, thư viện điều khiển CUDA libcuda.so (cuda.lib dành cho Windows) đi kèm với trình điều khiển NVIDIA và không có trình cài đặt bộ công cụ CUDA. Điều này có nghĩa là các mã yêu cầu API trình điều khiển (có các điểm vào có tiền tố là cu, xem Phụ lục H của Hướng dẫn lập trình CUDA) sẽ cần cài đặt trình điều khiển "gần đây" mà không có sự hiện diện của GPU NVIDIA, chạy trình cài đặt trình điều khiển riêng biệt với công tắc dòng lệnh --help.

Theo cùng lý do, bạn có thể biên dịch mã CUDA cho kiến ​​trúc khi nút của bạn lưu trữ GPU của một kiến ​​trúc khác. Ví dụ, bạn có thể biên dịch mã cho GeForce GT 540M (khả năng tính toán 2.1) trên máy lưu trữ GT 210 (khả năng tính toán 1.2).

Tất nhiên, trong cả hai trường hợp (không có GPU hoặc GPU có kiến ​​trúc khác nhau), bạn sẽ không thể chạy thành công mã.

Đối với các phiên bản đầu của CUDA, có thể biên dịch mã theo phương thức mô phỏng và chạy mã được biên dịch trên CPU, nhưng mô phỏng thiết bị là do thời gian không được chấp nhận. Nếu bạn không có một thiết bị có khả năng CUDA, nhưng muốn chạy mã CUDA, bạn có thể thử sử dụng gpuocelot (nhưng tôi không có bất kỳ kinh nghiệm nào với điều đó).

Các vấn đề liên quan