問題タブ [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.
visual-studio-2010 - VS2010 コンパイラと cuda エラー: リンケージ仕様は以前の「ハイポット」と互換性がありません
デバッグ 64 ビット構成で VS 2010 を使用して 64 ビット Windows 7 でプロジェクトをビルドしようとすると、他の 2 つのエラーと共にこのエラーが発生します。
エラー: リンケージ仕様は math.h 行 161 の以前の "hypot" と互換性がありません エラー: リンケージ仕様は math.h 行 161 の以前の "hypotf" と互換性がありません エラー: 関数 "abs(long long)" は math_functions で既に定義されています.h 行 534
32 ビット ビルドではこれらのエラーは発生しません。また、64 ビット ビルドは VS2008 で動作しました。この問題に対する適切な回避策はありますか、それとも nvcc が VS 2010 コンパイラをサポートするまで待つべきですか?
cuda - nvcc -Xptxas –v コンパイラ フラグは無効です
私はCUDAプロジェクトを持っています。これは、アプリケーション ロジックを含むいくつかの .cpp ファイルと、複数のカーネルと__host__
それらを呼び出す関数を含む 1 つの .cu ファイルで構成されています。
ここで、カーネルが使用するレジスタの数を特定したいと考えています。私の通常のコンパイラ呼び出しは次のようになります。
nvcc -arch compute_20 -link src/kernel.cu obj/..obj obj/..obj .. -o bin/..exe -l glew32 ..
.
残念ながら、この呼び出しに "-Xptxas –v" コンパイラ フラグを追加しても効果はありません。コンパイラは、以前と同じテキスト出力を引き続き生成します。コンパイルされた .exe も以前と同じように動作しますが、例外が 1 つあります。私のフレームレートは 80 fps から 1800 fps に跳ね上がります。
cuda - nvcc を使用する場合の arch および code オプションのデフォルト値は何ですか?
CUDA コードをコンパイルするときは、コードが生成されるアーキテクチャを選択する必要があります。nvcc
基本的に、このアーキテクチャを指定する 2 つのパラメーターを提供します。
arch
compute_10
、compute_11
などの仮想アーキテクチャを指定します。code
sm_10
、sm_11
などの実際のアーキテクチャを指定します。
したがって、次のようなコマンドです。
1.3 コンピューティング機能を備えたデバイス用の「cubin」コードを生成します。私が間違っている場合は、私を修正してください。これら 2 つのパラメーターのデフォルト値はどれですか? またはの値が指定されていない場合に nvcc が使用するデフォルトのアーキテクチャはどれですか? arch
code
cuda - PTXファイルを実行するにはどうすればよいですか
からファイルを生成する方法と.ptx
からファイルを生成する方法を知っていますが、最終的な実行可能ファイルを取得する方法がわかりません。.cu
.cubin
.ptx.
具体的には、にsample.cu
コンパイルされたファイルがありますsample.ptx
。次に、nvccを使用してにコンパイルsample.ptx
しsample.cubin
ます。ただし、この.cubin
ファイルはホストコードなしで直接実行することはできません。.cubin
ファイルを元の.cu
ファイルにリンクして、最終的な実行可能ファイルを作成するにはどうすればよいですか?
c - Cuda コード #define エラー、")" が必要です
次のコードで、#define N 65536 を #if FSIZE よりも大きくすると、次のエラーが発生します。
float1vsfloat2.cu(10): エラー: ")" が必要です
この問題は少し厄介で、なぜそれが起こっているのか本当に知りたいです. 本当にばかげたものを見落としているような気がします。ところで、このコード セクションはファイルの先頭にあります。その前に #include すらありません。可能な説明があれば本当に感謝します。
warnings - CUDA: 式の制御に関する NVCC 警告は定数です
nvcc.exeは、.cu ホスト コードでwarning: controlling expression is constant
次のassert()に対してa をスローします。
アサートに文字列を含めると警告が生成されるのはなぜですか? この警告の回避策はありますか? 私は assert に有益な文字列を含めるのが好きで、Visual C++ コンパイラで警告なしで正常にコンパイルされます。
cuda - CUDA: sm_20 に対して誤った lmem 統計が表示される?
オプションでコンパイルされた CUDA カーネルは、 GPU アーキテクチャが指定されている場合、--ptxas-options=-v
誤った lmem (ローカル メモリ)統計を表示しているようです。sm_20
同じことで、アーキテクチャに関する意味のある lmem 統計が得られsm_10 / sm_11 / sm_12 / sm_13
ます。
sm_20 lmem 統計を別の方法で読み取る必要があるかどうか、またはそれらが明らかに間違っているかどうかを明確にすることはできますか?
カーネルは次のとおりです。
--ptxas-options=-v
およびsm_20
報告:
--ptxas-options=-v
およびsm_10 / sm_11 / sm_12 / sm_13
報告:
sm_20 は4 バイトの lmem を報告しますが、カーネルで 4x1000 バイト配列が使用されている場合、これは単に不可能です。古い GPU アーキテクチャは、正しい4000 バイトのlmem 統計を報告します。
これはCUDA 3.2で試しました。NVCC マニュアル(v3.2) の「コード生成統計の印刷」セクションを参照しましたが、この異常の説明には役立ちません。
cuda - make_uint4 関数をオーバーロードできません
make_uint4
次の方法でオーバーロードしようとしています。
しかし、コンパイルしようとすると、nvcc はエラーを返します。
これらのエラーはすべて、"return…"
行を指しています。
cuda - Surface の低レベル CUDA API を呼び出すコードをコンパイルすると、奇妙なエラーが発生する
この最小限の例:
次のようにコンパイルすると失敗します。
次のエラー メッセージが表示されます。
私は自分が間違っていることを理解できません。CUDA 3.2 を使用して、Linux Ubuntu 64 ビット マシンでコンパイルしています。
cuda - Cuda (nvcc) でファイル ポインタを閉じる
gcc では、close 関数を使用してファイル ポインターを閉じます。ただし、私の nvcc コンパイラはそれを許可しません。cuda 固有の呼び出しまたはエイリアスが見つからないようです。
特別なcudaファイルポインタが閉じていますか?
これは私が得るエラーです。
error: identifier "close" is undefined
この単純なコードの場合。
FILE* fp = fopen(filename,"r");
if(fp == NULL)
{
return NULL;
}
close(fp);