問題タブ [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.
c++ - ブースト付きCuda
現在、CUDA アプリケーションを作成しており、boost::program_optionsライブラリを使用して、必要なパラメーターとユーザー入力を取得したいと考えています。
私が抱えている問題は、NVCCがブーストファイルのコンパイルを処理できず、次のany.hpp
ようなエラーが発生することです
オンラインで検索したところ、NVCCはブースト コードで使用されている特定の構造を処理できないため、NVCCはホスト コードのコンパイルを C++ コンパイラに委任する必要があることがわかりました。私の場合、Visual Studio 2010 を使用しているため、ホスト コードを に渡す必要がありますcl
。
NVCC が混乱しているように見えたので、boost の周りに簡単なラッパーを書き、別の.cpp
(代わりに.cu
) ファイルに貼り付けましたが、それでもビルド エラーが発生します。main.cu
奇妙なことに、代わりにmy をコンパイルするとエラーがスローされますが、ブーストコードが含まれていなくwrapper.cpp
ても、ブーストが原因で発生します。main.cu
この問題の解決策または回避策を知っている人はいますか?
templates - nvccを使用してCUDAでテンプレート関数をコンパイル中にエラーが発生しました
私は次のCUDAコードを持っています:
コンパイルすると、次のエラーが発生します。
プログラミングガイドのセクションD.1.4(4.0、私が使用しているツールキットのバージョン)は、テンプレートが機能するはずだと示唆していますが、それらを取得できません。
誰かがこのコードをコンパイルするための変更を提案できますか(テンプレートを削除せずに!)?
cuda - CUDA を使用して GPU が CPU より優れていることを示す最も単純な例
GPU が一貫して CPU よりも優れている CPU (g++ を使用) と GPU (nvcc を使用) の両方でコーディングできる、可能な限り最も簡潔な量のコードを探しています。どのタイプのアルゴリズムも受け入れられます。
明確にするために:私は文字通り2つの短いコードブロックを探しています。1つはCPU用(g ++でC ++を使用)、もう1つはGPU(nvccでC ++を使用)用で、GPUが優れています。できれば秒またはミリ秒のスケールで。可能な限り短いコード ペア。
cuda - NVCC コンパイラに関する PTX と CUBIN の違いは何ですか?
CUDA 4.0 がインストールされており、Compute Capability 2.0 (GTX 460 カード) を備えたデバイスがあります。
「cubin」ファイルと「ptx」ファイルの違いは何ですか?
cubin は GPU のネイティブ コードなので、これはマイクロ アーキテクチャ固有のものであり、ptx は JIT コンパイルを介して Fermi デバイス (Geforce GTX 460 など) で実行される中間言語です。ソース ファイルをコンパイルするときに.cu
、ptx または cubin ターゲットを選択できます。cubin ファイルが必要な場合は、code=sm_20
. しかし、ptx ファイルが必要な場合は、code=compute_20
.
それが正しいか?
linker - nvcc: extern と定数を組み合わせる
C++ のように、コンパイルの最後にリンクされるように、CUDA コードを個別のオブジェクト ファイルに編成したいと考えています。__constant__
そのために、ヘッダー ファイルでメモリへの extern ポインターを宣言し、その定義を .cu ファイルの 1 つに配置できるようにしたいと考えています。これも C++ のパターンに従います。しかし、そうすると、nvcc は「extern」を無視するようです。各宣言を定義として使用します。これを回避する方法はありますか?
コードとエラーについてより具体的に説明するために、ヘッダー ファイルに次のように記述します。
.cu ファイルでこれが続きます。
コンパイル時に次のエラーが発生します。
私の現在の解決策は、Makefile マジックを使用して、すべての .cu ファイルをまとめて、実質的に 1 つの大きな翻訳単位を作成することですが、ファイル構成は似ています。しかし、これはすでにコンパイルを著しく遅らせています。なぜなら、私のクラスのいずれかを変更すると、それらすべてを再コンパイルすることになるからです。さらにいくつかのクラスを追加する予定です。
__constant__
編集:テキストと__device__
例に入れていることがわかります。質問は両方に当てはまります。
c++ - nvcc/cuda 3.1 - 「declared static」の ghtr-default.h フラッドが定義されていない警告
nvcc (cuda 3.1 を使用) でプロジェクトをコンパイルすると、gthr-default.h から大量の警告が表示されます。
私はあちこち掘り下げましたが、本当にやりたくない -Wall を削除する以外に、このノイズを抑制する方法を見つけることができないようです。これは誰にとっても見覚えがありますか?
私の CXXFLAGS は次のとおりです。
$(CUDA_INCLUDE_DIR) を -Xcompiler オプションにも追加しようとしましたが、役に立ちませんでした。設定から Wall を削除したくありません... 他に選択肢はありますか?
makefile - makefileエラーでcudaファイルをコンパイルしています
ファイルをコンパイルするためにmakefileを作成しました。
しかし、私はこの問題を抱えています:
app.cpp:26:26:エラー:cuda_runtime.h:そのようなファイルまたはディレクトリはありませんapp.cpp:27:18:エラー:cuda.h:そのようなファイルまたはディレクトリはありません
これが私がapp.cppにそれらを含める方法です:
なぜこの問題なのですか?
私はグーグルで何かを検索します、彼らはapp.cppが常にapp.cuでなければならないと言いました、それは本当ですか?
前もって感謝します。
cuda - nvcc でコンパイルできない
Debian に CUDA をインストールしましたが、cuda フォルダー内の C フォルダーで make ファイルを正常に実行しましたが、nvcc で matMult.cu のような個々のファイルを実行しようとすると、次のエラー エラーが発生します:matrixMult.cu: no such file or directory エラー:cutil_inline:no such file or directory
n また、他のヘッダファイルについて不平を言っています...助けてください
c++ - nvccがboost::spiritを使用してCUDAファイルをコンパイルできないのはなぜですか?
私はCUDAをboost::spiritを使用する既存のアプリケーションに統合しようとしています。
問題を特定すると、次のコードがnvccとコピーされないことがわかりました。
main.cu
:
でコンパイルすると、ここnvcc -o cudaTest main.cu
で確認できる多くのエラーが発生します。
しかし、ファイル名をに変更し、main.cpp
を使用して再度コンパイルするとnvcc
、機能します。ここで何が起こっているのですか、どうすれば修正できますか?
c++ - 同等の CPU のみの関数を置き換える CUDA カーネルを作成する
.cpp
流体の流れをモデル化するための粒子法である平滑粒子流体力学を実装するファイルがいくつかあります。
これらの粒子手法で最も時間のかかるコンポーネントの 1 つは、シミュレーションのすべての時間ステップですべての粒子の最近傍 (K 最近傍または範囲検索) を見つけることです。
現在、GPU と CUDA を使用して近隣探索ルーチンを高速化し、現在の CPU ベースの近隣探索ルーチンを置き換えたいと考えています。シミュレーションの残りの部分は CPU で処理されますが、GPU では近隣探索のみが実行されます。
私の質問は、コード全体をコンパイルするにはどうすればよいですか? より具体的には、近隣探索カーネル関数を file に記述したとしますnsearch.cu
。
次に、以前のすべての ファイルの名前.cpp
をファイルとして変更し、.cu
セット全体を (nsearch.cu と共に) を使用して再コンパイルする必要がありnvcc
ますか? 少なくとも単純な例では、nvccは拡張子を持つ CUDA コードをコンパイルでき.cpp
ません。つまりnvcc foo.cu
、コンパイルはしますが、nvcc hello.cpp
しません。
要するに、この CUDA プラグインの構造はどのようなもので、どのようにコンパイルすればよいのでしょうか?
私はUbuntu Linux 10.10、CUDA 4.0、NVIDIA GTX 570 (コンピューティング機能 2.0)、およびgccコンパイラーを仕事に使用しています。