GNU/Linux >> Linux の 問題 >  >> Linux

致命的なエラー:cuda.h:そのようなファイルまたはディレクトリはありません

自分で cuda プロジェクトをコンパイルしたことはありませんが、ライブラリをコンパイラにリンクする必要があると思います。

いくつかの簡単なグーグルは、Nvidiaにはすべてを処理するコンパイラがあると言っています。したがって、それをインストールするだけで、準備完了です。 NVVCといいます。インストールしたら、実行するだけです:

nvcc helloworld.cu -o hello.out

このような外部ライブラリでは、ほとんどの場合、それらをリンクする必要があります。リンカはすでにライブラリの場所を認識しているため、標準ライブラリに対してこれを行う必要はありません。


このための適切なインクルード ヘッダー ファイルは cuda.h ではありません しかし cuda_runtime.hgcc を使用したい場合 このコードのコンパイラとして。他の回答が指摘しているように、 nvcc を使用できます (既にマシンにインストールされています) このコードのインクルード ヘッダーはまったく必要ありません。

nvcc を使用する場合 おそらく、適切な PATH を確認する必要があります 環境変数が設定されています。この情報およびその他の有用な情報は、Linux インストール ガイドに含まれています。

したがって、コードを次のように変更すると:

#include <cuda_runtime.h>

int main ()
{
    int deviceCount;
    cudaError_t e = cudaGetDeviceCount(&deviceCount);
    return e == cudaSuccess ? deviceCount : -1;
}

次のようなコマンドを使用して、正常にコンパイルできるはずです:

gcc -I/usr/local/cuda/include -L/usr/local/cuda/lib64 has_cuda.c -lcudart -o has_cuda

-I の後のパス スイッチには cuda_runtime.h へのパスが含まれている必要があります あなたのマシンで。通常は上記のように設定されますが、 cuda が symlink があなたのマシンにセットアップされています。また、インクルード ディレクトリが異常な場所にあるようです。つまり、

/usr/local/cuda-8.0/targets/x86_64-linux/include

find を使用できます

同様に、-L の後のパス switch は cuda lib64 へのパスである必要があります ディレクトリには libcudart.so とそのいとこが含まれます。繰り返しますが、これは通常、私が示したパスでシンボリック リンクされますが、マシンのインストールは私の期待に沿わない可能性があります。 find を使用できるはずです 正しいパスを見つけます。

他の回答に示されているように、 nvcc を使用する場合 -I を明示的に選択する必要はありません。 と -L 道。これを機能させる最も簡単な方法は、ファイルの名前を has_cuda.c から変更することです has_cuda.cu へ 、次のようにコンパイルできるはずです:

nvcc has_cuda.cu -o has_cuda

最後に、Ubuntu 16.10 は現時点で CUDA の公式にサポートされているディストリビューションではないため、マシンへのインストール方法について予期しないことがいくつかある可能性があります。以前にリンクされたインストール ガイドを読むことをお勧めします。このガイドには、環境変数の設定や、CUDA インストールを「検証」する方法など、インストール後のセットアップ手順に関する有用な情報が含まれています。

CUDA コードを実行していて何らかの問題が発生した場合は、必ず適切な cuda エラー チェックを使用し、次のように cuda-memcheck でコードを実行してください。

cuda-memcheck ./has_cuda

報告されたエラー情報を理解していなくても、助けようとしている人にとっては役に立つかもしれません.


Linux
  1. 実行できませんそのようなファイルまたはディレクトリはありません[修正]

  2. コンパイル エラー:g++:'cc1plus' を実行しようとしてエラーが発生しました:execvp:そのようなファイルまたはディレクトリはありません

  3. arm-linux-gnu-gcc 致命的なエラー:stdio.h:そのようなファイルまたはディレクトリはありません

  1. sys/types.h:そのようなファイルまたはディレクトリはありません

  2. conda コマンドでエラーが表示されます:Bad Interpreter:No such file or directory

  3. touch:`foo' に触れられません:そのようなファイルやディレクトリはありません

  1. エラー:xenstore-読み取り:xs_open:DomUにそのようなファイルまたはディレクトリはありません[解決済み]

  2. エラー:Xend Start – / proc / xen /capabilities:そのようなファイルまたはディレクトリはありません[解決済み]

  3. 致命的なエラーopenssl/evp.h:そのようなファイルまたはディレクトリはありません:[解決済み]