Saya sendiri belum pernah mengompilasi proyek cuda, tetapi menurut saya Anda perlu menautkan perpustakaan ke kompiler.
Beberapa googling cepat mengatakan Nvidia memiliki kompiler untuk ini yang akan menangani semuanya. Jadi, Anda hanya perlu menginstalnya dan Anda harus melakukannya dengan baik. Ini disebut NVVC. Setelah diinstal, jalankan saja:
nvcc helloworld.cu -o hello.out
Dengan pustaka eksternal seperti ini, Anda hampir selalu perlu menautkannya. Anda tidak perlu melakukannya untuk pustaka standar karena penaut sudah mengetahui di mana menemukannya.
File header penyertaan yang tepat untuk ini bukan cuda.h
tapi cuda_runtime.h
, dengan asumsi Anda ingin menggunakan gcc
sebagai compiler untuk kode ini. Seperti yang ditunjukkan oleh jawaban lain, Anda bisa menggunakan nvcc
(yang sudah diinstal pada mesin Anda) yang sama sekali tidak memerlukan header penyertaan untuk kode ini.
Jika Anda ingin menggunakan nvcc
Anda mungkin harus memastikan bahwa PATH
yang sesuai variabel lingkungan ditetapkan. Ini dan informasi berguna lainnya terdapat dalam panduan pemasangan linux.
Jadi jika Anda memodifikasi kode Anda seperti ini:
#include <cuda_runtime.h>
int main ()
{
int deviceCount;
cudaError_t e = cudaGetDeviceCount(&deviceCount);
return e == cudaSuccess ? deviceCount : -1;
}
Anda seharusnya dapat mengompilasinya dengan sukses menggunakan perintah seperti ini:
gcc -I/usr/local/cuda/include -L/usr/local/cuda/lib64 has_cuda.c -lcudart -o has_cuda
Jalur setelah -I
switch harus berisi jalur ke cuda_runtime.h
di mesin Anda. Biasanya itu akan diatur seperti di atas, tapi saya tidak yakin apakah cuda
symlink sudah diatur di mesin Anda, dan sepertinya direktori sertakan Anda mungkin berada di tempat yang tidak biasa, yaitu
/usr/local/cuda-8.0/targets/x86_64-linux/include
tetapi Anda dapat menggunakan find
seperti yang telah Anda lakukan untuk menemukannya.
Begitu juga dengan jalur setelah -L
switch harus menjadi jalur ke cuda lib64
Anda direktori, yang akan berisi libcudart.so dan dan sepupunya. Sekali lagi, itu biasanya disinkronkan pada jalur yang telah saya tunjukkan, tetapi pemasangan mesin Anda mungkin tidak sesuai dengan harapan saya. Anda harus dapat menggunakan find
untuk menemukan jalur yang benar.
Dan seperti yang ditunjukkan pada jawaban lain, jika Anda menggunakan nvcc
(yang sudah Anda temukan), Anda tidak perlu memilih -I
secara eksplisit dan -L
jalur. Cara termudah untuk membuatnya berfungsi adalah dengan mengganti nama file Anda dari has_cuda.c
ke has_cuda.cu
, maka Anda harus dapat mengkompilasi seperti ini:
nvcc has_cuda.cu -o has_cuda
Terakhir, Ubuntu 16.10 saat ini bukan distribusi yang didukung secara resmi untuk CUDA, jadi mungkin ada beberapa hal yang tidak terduga tentang cara menginstalnya di mesin Anda. Saya mendorong Anda untuk membaca panduan pemasangan tertaut sebelumnya, karena berisi informasi berguna tentang langkah-langkah penyiapan pasca pemasangan, seperti menyetel variabel lingkungan, dan juga cara "memverifikasi" pemasangan CUDA.
Setiap kali Anda menjalankan kode CUDA, dan mengalami masalah apa pun, pastikan untuk menggunakan pemeriksaan kesalahan cuda yang tepat dan menjalankan kode Anda dengan cuda-memcheck, seperti:
cuda-memcheck ./has_cuda
Meskipun Anda tidak memahami informasi kesalahan yang dilaporkan, informasi ini mungkin berguna bagi mereka yang mencoba membantu Anda.