GNU/Linux >> Belajar Linux >  >> Linux

Kesalahan fatal:cuda.h:Tidak ada file atau direktori seperti itu

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.


Linux
  1. Kesalahan:xenstore-read:xs_open:Tidak ada file atau direktori seperti itu di DomU [Terpecahkan]

  2. Kesalahan:Xend Start – /proc/xen/capabilities:Tidak ada file atau direktori seperti itu [Terpecahkan]

  3. Mkdir:Tidak Dapat Membuat Direktori:Tidak Ada File Atau Direktori Tersebut?

  1. Ssh – Mencoba Masuk Ssh Ke Server Dan Mendapatkan Key_load_public:Tidak Ada Kesalahan File Atau Direktori Tersebut?

  2. Tidak ada kesalahan file atau direktori saat menjalankan biner

  3. Mengapa ENOENT berarti Tidak ada file atau direktori seperti itu?

  1. kesalahan fatal arm-linux-gnu-gcc:stdio.h:Tidak ada file atau direktori seperti itu

  2. Bash:Tidak ada file atau direktori seperti itu?

  3. sys/types.h:Tidak ada file atau direktori tersebut