問題タブ [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.
python - CUDA: Unaligned Memory Access Not Supported: What am I missing?
There are a few questions similar to this but in this case, its a bit weird; NVCC 3.1 doesn't like this but 3.2 and 4.0RC do;
#xA;Where p is passed by reference to the function (int *p) coming from...
#xA;To add a bit of context, before the p's get to the 'top' function, they are populated by (I'm cutting out as much irrelevant code as i can for clarity)
#xA;Beyond that the only operations on pivot are 3-step-swaps with integer temporary values.
After all that p_pivot is passed to the 'top' function by (&p_pivot[0])
For anyone looking for more detail, the code is here and the only change that should be needed to flip between 3.2/4.0 to earlier is to change the cudaDeviceSynchronise(); to cudaThreadSynchronize();. This is my dirty dirty experimental code so please don't judge me! :D
As noted, all of the above works fine in higher versions of NVCC, and I'm working to get those put onto the machine in question, but I'd be interested to see what I'm missing.
It must be the array-lookup indexing that's causing the issue, but I don't understand why?
cuda - cuda with mingw - 更新
Linux でコードを開発していますが、Windows 実行可能ファイルをコンパイルしたいと考えています。古い非 GPU バージョンは、Windows の mingw で問題なくコンパイルされるため、CUDA バージョンでも同じことができると期待していました。
戦略は、カーネル コードを Visual Studio で nvcc でコンパイルし、残りを mingw で gcc でコンパイルすることです。
これまでのところ、Visual Studio で (カーネルとカーネルの起動を含む) .cu ファイルを簡単にコンパイルできました。ただし、まだ mingw で c コードをコンパイルすることはできません。c コードには などの cuda api 呼び出しと などのcudaMalloc
cuda タイプが含まれてcudaEvent_t
いるため、cuda.h と cuda_runtime.h を含める必要があります。ただし、gcc はこれらのヘッダーに対して警告とエラーを表示します。次に例を示します。
と
これらのヘッダーを含めて、コードの c 部分をコンパイルする方法について何かアイデアはありますか?
c++ - CUDAがデバイスにデータを静的に割り当てる
私は、各カーネル関数からアクセスできる変数を割り当てようとしています。私の試みは以下に添付されたコードですが、カーネルがアクセスしてdArrayを表示できないため、コンパイルされません。C ++では、変数を一番上に配置するか、プログラム全体のすべてのスコープで静的にアクセスすることを宣言します。
macros - NVCC にマクロ定義情報を含めるにはどうすればよいですか?
通常、gcc では -g でデバッグ情報のレベルを指定できます。-g3 を使用すると、gdb などのデバッガーが読み取ってデバッグ中に使用できる実行可能ファイルにプリプロセッサ マクロ定義が含まれます。CUDA プログラムをデバッグするために nvcc でこれを行いたいと思います。
現在、SDK のテンプレート プログラムを変更して作業しているため、デフォルトの Makefile と Makefile に含まれる common.mk を使用しています。「ifeq ($(dbg), 1)」ブロック内の common.mk で、次のことを試しました。
- -g3 を COMMONFLAGS の下に置く
- -g3 を NVCCFLAGS の下に置く
- -g3 を CXXFLAGS と CFLAGS の下に置く
- --compiler-options -g3 を NVCCFLAGS の下に配置します。
最初の 2 つは、認識できないオプション エラーを示します。cuda-gdb を使用してデバッグすると、マクロ情報が得られないため、2 番目の 2 つはうまくいかないようです。
これを行う理由は、プログラム自体がそのメモリにアクセスするために使用するのと同じマクロを使用して、一部のメモリを検査したいからです。例えば、
非決定論的有限状態オートマトンの状態と矢印にアクセスするために使用するいくつかのマクロです。
ご協力ありがとうございました!
c++ - ローカル オブジェクトへの未定義の参照
nvcc を使用してプロジェクトをリンクする際に問題が発生しています。それらは、プロジェクト内で定義されたシンボルで発生します。cuda_bvh_constru.o ファイルでいくつかの関数シンボルが定義されています。これは、関連する関数の nm 出力です。
オブジェクトが正しく渡されていると思うので、これらのシンボルがリンカーによって検出されない理由がわかりません。これらのオブジェクトを配置するために必要な特定の順序はありますか? それとも別のものですか?
compiler-construction - コンパイル機能に応じてレジスタと共有メモリ?
ねえ、私がコンパイルすると、次のnvcc -arch=sm_13
ようになります。
私が使用すると、次のようnvcc -arch=sm_20
になります。
すべてのカーネルパラメータが共有メモリに渡されると思いましたが、sm_20の場合はそうではないようです...?!おそらく、それらはレジスターにも渡されますか?私の関数のヘッドは次のようになります。
これまでのところありがとう!
cuda - コンパイル時の CUDA デバイス プロパティとコンピューティング機能
ユーザーが を渡してthreads_per_block
カーネルを呼び出すコードがあるとします。次に、入力が有効かどうかを確認します (たとえば、計算能力 CC <2.0 の場合は <=512、CC >=2.0 の場合は 1024)。
nvcc -arch=sm_13
CC2.0 を搭載したコンピューターにグラフィックス カードを搭載しているときに、ユーザーがパスしたときにコードをコンパイルするとどうなるのだろうかthreads_per_block == 1024
? これは:
- 有効な入力 - 私が使用しているカードには CC2.0 があるため、または...
- CC1.3用にコンパイルしたので無効?
それともnvcc -arch=sm_13
、少なくとも CC1.3 は必要ですが、より高い CC で実行すると、それらのより高い機能を使用できるということですか?
cuda - CUDA をコンパイルするために前処理変数を NVCC に渡しますか?
NVCC を使用して CUDA コードをコンパイルし、コード内で既に前処理変数を定義している場合、たとえば#define DEBUG_OUTPUT 0
、コンパイル時にそのような変数をオンザフライで上書きする方法はありますか? NVCCオプションを指定しようとしまし-DDEBUG_OUTPUT=1
たが、これは機能しません:それは私に与えます:
警告 C4005: 'DEBUG_OUTPUT': マクロの再定義
cuda - NVCC の静的アサートとコンパイラのバグ
コンパイル時の設定に使用される構造体内に NVCC コンパイラの静的アサートを設定する最良の方法は次のとおりです。
以下はほとんどの場合機能しますが、NVCC がでたらめなエラー メッセージを生成し、コンパイルする必要がある場合でもコンパイルしないことがあります。
静的アサートは機能しません。わかりませんが、CUDA Compiler BUG があり、コンパイルすると STATIC_ASSERT(a == 15); がスローされることが通知されます。上記のコードが正しいためにコンパイルする必要がある場合でも、(A) をコメントアウトすると、突然動作します。基本的に Boost から取得した Thrust の STATIC_ASSERT を使用します。
誰かが同じ問題を経験しましたか?
コメントありがとうございます!
gcc - nvccを使用してコンパイルされたCuda共有ライブラリを使用してOpenCVコードをコンパイルするには?
テストのために、C(cuda) で行列乗算のコードを作成し、nvcc を使用してコンパイルし、次のコマンドを使用して共有ライブラリを作成しました。
次に、CでOpenCVコードを書き、次のコマンドでコンパイルしようとしました。
次のエラーが表示されます。
gcc でコードをコンパイルするときに cuda ライブラリを含める方法を教えてください。
OS: Ubuntu gcc: 4.4.0