問題タブ [nvcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
6213 参照

c++ - コマンドラインから nvcc を実行する際の問題

コマンドラインから nvcc を使用して cuda .cu ファイルをコンパイルする必要があります。ファイルは「vectorAdd_kernel.cu」で、次のコードが含まれています。

次のコマンドを使用しました (.cubin ファイルを取得する必要があります)。

コンパイラはファイル vectorAdd_kernel.cpp4.ii および vectorAdd_kernel.cpp1.ii を作成し、次の出力で停止します。

この問題を解決するために私を助けてもらえますか?

0 投票する
1 に答える
1738 参照

c++ - NVCC での「名前」への未定義の参照

実行しようとしているマシンへのルート アクセス権がないため、gpgmg CUDA シミュレーションを非標準の方法でコンパイルしようとしています。

このシミュレーションは、HDF5 ライブラリ (http://www.hdfgroup.org/HDF5/) を広範囲に使用します。root アクセス権のないマシンでこれを実行しているため、HDF5 をインストールできません。includeしたがって、ファイルをダウンロードしてディレクトリに貼り付けました。次のコマンドで NVCC を使用してコンパイルします (はい、これは makefile 形式にする必要があることはわかっています)。

これは問題なくコンパイルされますが (-c フラグを使用するだけの場合)、リンクしようとすると次のエラーが発生します。

私の最初の考えは、main()それは定義されていないということでしたが、そうです。main.cpp は次のとおりです。

これはピアレビューされたコードであるため、エラーはリンクの仕方にあると思います....

うまくリンクするにはどうすればよいでしょうか?

0 投票する
1 に答える
391 参照

c++ - device_memory 内に cusp::coo_matrix の Thrust::host_vector を作成できませんか?

のベクトルを作成しようとしていますが、この方法でcusp::coo_matrixは使用できないようです。thrust::host_vector次のコードを検討してください。

からこのエラー メッセージが表示されますnvcc

興味深いのは、代わりにまったく同じエラーが発生することですcusp::host_memory(まあ、ほぼ同じです):

それで、私の質問は、それは本当に欠点ですか、それとも私が何か間違ったことをしているのですか? どんな助けでも大歓迎です。

さらに、std::vector代わりにテストしましたがthrust::host_vector、正常に動作します。私は Thrust ライブラリの大ファンというわけではありませんが、興味があるだけです。thrust::host_vectorさらに、適切でない場合 (thrust::findおよび他の関数が使用されている場合)に備えて、少しコードを書き直す必要があります。

また、カスプ行列の配列を作成する他の方法はありますか? 私は生のポインターとは思わず、new/deleteとにかく よりも優れていますstd::vector、そうですか?

0 投票する
2 に答える
457 参照

c - プリプロセッサコマンド(#if定義されている場合)がCUDAプログラムで機能していませんか?

このコードスニペットでは、MatrixMultiplication()メソッド内の「printf」コマンドがそのテキストを表示することを期待しています。前の行で「size」が宣言されていて、「test」が1に設定されていても、そうではありません。コードは次のとおりです。

私はこのコマンドでコンパイルしています:

この種の「#ifdefined」コマンドが機能しないnvccについて何かありますか?私は以前、gccを使用するネイティブCおよびC ++コードでこの種の構文を使用しましたが、問題なく機能しました。

この問題に関する照明は素晴らしいでしょう!

Pastebinの完全なコードは次のとおりです:http://pastebin.com/SusnpgFc

0 投票する
4 に答える
49447 参照

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

gcc に cuda_runtime.h の /usr/cuda/local/include を強制的に検索させるにはどうすればよいですか?

C ラッパーを使用して CUDA アプリケーションをコンパイルしようとしています。Ubuntu 10.04 を実行しています。

次のコマンドを使用して、CUDA アプリケーションを .so に正常にコンパイルしました。

次のコマンドを使用して C ラッパー ファイルをコンパイルしようとすると、次のようになります。

次のエラーが表示されます。

cuda_runtime.h が実際に /usr/local/cuda/include に存在することを確認しました

0 投票する
1 に答える
830 参照

c - cuda を gcc でコンパイルすると、エラー: 'threadIdx' が宣言されていません

コード内の threadIdx 行を使用して GCC を強制的にコンパイルするにはどうすればよいですか?

cuda アプリケーションを ac ラッパーでコンパイルしようとしています。

.so ファイルを生成するには、次を実行します: nvcc -arch=sm_11 -o libtest.so --shared -Xcompiler -fPIC main.cu

次に、gcc -std=c99 -I/usr/local/cuda/include -o main -L で C ラッパーをコンパイルしようとします。-ltest main.c

これにより、コードの数層下に次のエラーが発生します(インクルードファイルへのインクルード): エラー: 'threadIdx' 宣言されていません

注: すべては、C ラッピングなしで GPU アプリケーションとして問題なくコンパイルおよび実行されます。

0 投票する
2 に答える
2391 参照

cuda - CUDA でグローバル デバイス変数のアライメントを指定する方法

CUDA でグローバル デバイス変数のアライメントを宣言したいと思います。具体的には、文字列宣言があります __device__ char str1 = "some pre-defined string"; 。通常の gcc では、次のようにコンパイラにアライメントを要求できます。 __device__ char str1 __attribute__ ((aligned (4))) = "some pre-defined string";

ただし、nvcc でこれを試したところ、コンパイラはこれらの要求を無視しました。これを行う理由は、これらの文字列をカーネルのバッファーにコピーするためです。一度に単語をコピーする方が、一度にバイトをコピーするよりもはるかに高速ですが、src 文字列を揃える必要があります。nvcc コンパイラからアラインメントを要求する方法を教えてください。

0 投票する
2 に答える
2465 参照

cuda - NVCC5.0およびOpenACC

NVIDIAのウェブサイトによると:

「CUDAツールキットは、OpenACCディレクティブを使用したプログラミングを補完し、完全にサポートします。」

OpenACCプログラム(pargmaとAPI)をnvccコンパイラーでコンパイルできるということですか?または、ランタイムルーチン呼び出しのみがサポートされていることを意味しますか?

残念ながら、最近はCUDAToolkit5.0をインストールして答えを得ることができません。ありがとう!

0 投票する
1 に答える
358 参照

cuda - CUDAコンテキストの作成の違い

私は3つのカーネルを使用するプログラムを持っています。スピードアップを得るために、私は次のようにコンテキストを作成するためにダミーのメモリコピーを実行していました。

これは、次のように時間を計りたいカーネルの前に起動されます。

cudaFree(0)また、またはとしてコンテキストを作成する他の最も簡単な方法についても読みましたcudaDevicesynchronize()。ただし、これらのAPI呼び出しを使用すると、ダミーカーネルを使用するよりも時間がかかります。

コンテキストを強制した後のプログラムの実行時間は0.000031、ダミーカーネルの場合は秒0.000064、cudaDeviceSynchronize()とcudaFree(0)の両方の場合は秒です。時間は、プログラムの10回の個別実行の平均として取得されました。

したがって、私が到達した結論は、カーネルを起動すると、標準的な方法でコンテキストを作成するときに初期化されないものが初期化されるということです。

では、カーネルを使用する方法とAPI呼び出しを使用する方法の2つの方法でコンテキストを作成することの違いは何ですか?

LinuxでCUDA4.0を使用して、GTX480でテストを実行します。

0 投票する
1 に答える
32000 参照

cuda - nvcc:コマンドが見つかりません

cuda sdk5.0を/optにインストールし、すべての例をコンパイルしましたが、nvccを実行できません。これがいくつかのコンソール出力です: ここに画像の説明を入力してください 私はlinuxmint13を使用しています。