2012-12-15 18 views
5

Tôi đang sử dụng tesla k20 với khả năng tính toán 35 trên Linux với CUDA 5.Với một hạt nhân con đơn giản gọi nó là đưa ra một lỗi biên dịch: Unresolved extern function cudaLaunchDevicecuda 5.0 lỗi song song động: ptxas gây tử vong. chưa được giải quyết chức năng extern 'cudaLaunchDevice

dòng lệnh của tôi trông giống như:

nvcc --compile -G -O0 -g -gencode arch=compute_35 , code=sm_35 -x cu -o fill.cu fill.o 

Tôi thấy cudadevrt.a trong lib64 .. Chúng ta có cần thêm nó hoặc cần thực hiện coukd nào để giải quyết không? Nếu không có hạt nhân con gọi tất cả mọi thứ hoạt động tốt.

Trả lời

11

Bạn phải biên dịch rõ ràng với mã thiết bị có thể định vị lại được bật và liên kết thư viện thời gian chạy thiết bị để sử dụng tính song song động. Vì vậy, lệnh biên dịch của bạn phải bao gồm --relocatable-device-code true và liên kết liên kết (mà bạn chưa hiển thị cho chúng tôi) phải bao gồm -lcudadevrt.

Quy trình này được mô tả chi tiết trong phần "H SUP TRỢ TOOLKIT CHO ĐỘNG LỰC ĐỘNG LỰC" của Hướng dẫn lập trình song song động pdf, có sẵn here.

+0

tôi đã thêm thư viện vào thư viện liên kết nlc eclipse cuda nhưng vẫn có lỗi. – Zahid

+0

Bây giờ dòng lệnh trông nvcc --compile -G -O0 -g -gencode arch = compute_35, mã = ​​sm_35 -x cu -o "fill.o" ../fill.cu -lcudadevrt tôi đã thử cả đường dẫn thư viện và sao chép cudadevrt lib vào tệp dự án. vẫn tồn tại lỗi .. – Zahid

+0

@Zahid: Lệnh bạn đang viết chỉ biên dịch mã thiết bị vào một tệp đối tượng. Bạn cần thêm lệnh -lcudadevrt vào lệnh liên kết ứng dụng. Bạn đã đọc bản pdf tôi đã liên kết chưa? – talonmies

5

Có lẽ tôi phần nào tắt chủ đề, nhưng tôi muốn đề cập đến rằng tôi đã có cùng một vấn đề trong Windows/Visual Studio 2010 và tôi đã giải quyết vấn đề bằng cách sử dụng bình luận cuối cùng bởi talonmies trong vài bước.

1) View -> Property Pages 
2) Configuration Properties -> CUDA C/C++ -> Common -> Generate Relocatable Device Code -> Yes (-rdc=true) 
3) Configuration Properties -> CUDA C/C++ -> Device -> Code Generation -> compute_35,sm_35 
4) Configuration Properties -> Linker -> Input -> Additional Dependencies -> cudadevrt.lib 

Tôi hy vọng rằng thông tin này hữu ích.