Tôi đã viết hạt nhân OpenCL trong tệp .cl
. Nó cố gắng để #include
một số tiêu đề.bao gồm tiêu đề cho tệp OpenCL .cl
Biên dịch của nó không thành công, vì các tệp tiêu đề được bao gồm "không tìm thấy". Tôi biết rằng clBuildProgram
có thể thực hiện tùy chọn -I dir
, thêm thư mục dir
vào danh sách các thư mục cần tìm kiếm các tệp tiêu đề.
Trong diễn đàn trang web khronus bài đăng này http://www.khronos.org/message_boards/viewtopic.php?f=37&t=2535 nói về vấn đề này.
Chúng đề xuất sử dụng clCreateProgramWithSource
chỉ định tất cả các nguồn (bao gồm tệp .h).
Tôi có một câu hỏi liên quan đến vấn đề này:
- Những lựa chọn tốt hơn? (
clBuildProgram
vàclCreateProgramWithSource
, như được mô tả ở trên) - Nếu tôi sử dụng
clCreateProgramWithSource
trình biên dịch biết phải bao gồm những gì? Ý tôi là, nguồn nào viết tắt bao gồm tên tệp? - Nếu tôi sử dụng
clBuildProgram
và có một số thư mục có tệp bao gồm, làm cách nào để chỉ định chúng?
AMD APP có vấn đề với -Tôi quá từ kinh nghiệm của tôi (nó chỉ đơn giản không hoạt động), mặc dù Intel xử lý nó một cách hoàn hảo. – Thomas
Thật thú vị. Tôi mặc dù tôi đã thử nghiệm nó trên CPU. Tôi không có GPU AMD nên tôi không thể thử nghiệm trên GPU. Có lẽ đó là vấn đề về GPU và CPU? –
Không, tôi đã thử nó dưới cả hai thiết bị trong Windows, trình biên dịch đơn giản dường như không xử lý các đường dẫn tương đối bao gồm. Về cơ bản, tôi có "-I cl /" trong dòng lệnh trình biên dịch của mình, và các hạt nhân của tôi được sắp xếp gọn gàng trong thư mục cl /, và trong khi nó hoạt động tốt dưới Intel/Linux, AMD sẽ không có bất kỳ thứ gì. những gì tôi thử và giải pháp duy nhất tôi tìm thấy là mã hóa đường dẫn tuyệt đối * của mỗi tệp .cl trong #include chỉ thị hoặc thêm cl/thư mục của tôi vào hệ thống $ PATH. Nó có thể là cài đặt của tôi bị hỏng mặc dù, tôi không duy trì hệ thống Windows của tôi nhiều như Linux của tôi. – Thomas