問題タブ [tesla]
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.
cuda - Cuda、カードとの最初の接続 (失われた時間)
プログラムとカード (Tesla K20c) との通信を開始すると、コード内でカードへの最初の呼び出しを行うときに多くの時間を失いましたが、その理由はわかりません。彼が可能なすべてのカードを検索しようとするたびにそうです。cudasetdevice() を使用してカードを定義すると、同じ問題が発生します。
ユーザー時間 (秒): 1.420
システム時間 (秒): 4.660
経過時間 (秒): 6.490
システム時間は、この失われた時間を表します。GeForce GTX 560 Ti (性能が低く古いカード) を搭載した別のコンピューターでプログラムを実行すると、システム時間が正常であることがわかります。
ユーザー時間 (秒): 1.620
システム時間 (秒): 0.700
経過時間 (秒): 3.120
この問題はプログラムの 2 倍の時間であり、その理由は理解できます。カードでこのような問題が発生したのはこれが初めてです。
カードが最近のもので、cuda ライブラリがまだ最適化されていないためですか?
バージョン5.0のcudaを使用しています。
eclipse - cudaMemcpyToSymbol 使用の詳細
Tesla C1060 (compute 1.3) でデータ構造をホストからコンスタント メモリに移動しようとしています。次の関数を使用します。
データ構造 (ヘッダー ファイル内):
問題は、値が GPU の定数メモリにコピーされていないように見えることです。
cudaMemcpyToSymbol do not copy dataに記載されているように再宣言する必要があり__constant__ますか。どこか
で使うべきですか?\\mem.cuextern
エラーはなく、値は常に 0 に設定されます。
windows - cudaGetDeviceCount が 2 ではなく 1 を返す
2 つの Tesla M2050 で構成される GPU クラスターがあり、コードを実行すると、cudaGetDeviceCount は 1 のみを返します。cudaSetDevice でデバイス 1 を設定しようとすると、次のエラーが表示されます。Windows のデバイス マネージャーでは、両方のデバイスが一覧表示されます。必要に応じて、これは私のソースコードです
任意の助けをいただければ幸いです
編集: deviceQuery.exe の出力
c - 同時カーネル起動の例 - CUDA
非常に複雑な CUDA カーネルの同時カーネル起動を実装しようとしているので、簡単な例から始めようと思いました。合計削減を行うカーネルを起動するだけです。十分に単純です。ここにあります:
次のようにコンパイルされます。
テスラ K20X を 1 台使用しています。
この簡単な例を実行すると、次の出力が得られます。
ご覧のとおり、各カーネルは正しい結果を取得し、約 4.5 秒かかります。これは、以前の 1 つのカーネル バージョンで得られたものです。すごい!ただし、aprun の出力からわかるように、ウォール タイムは実際には約 10 秒であり、1 カーネル バージョンよりもはるかに長くなっています。そのため、カーネルが並行して起動していないか、カーネルの同時起動で期待していた速度向上 (2 倍) に近づいていないようです。
この質問を解決するには:
- 私のコード例に欠けているものはありますか? カーネルは実際に並行して起動していますか?
- Tesla K20X でどのようなスピードアップを期待できますか? カーネルを正確に並行して実行し、2 倍の作業を同時に完了させるべきではありませんか? 並列で効率的に実行できるカーネルの数はいくつですか?
助けてくれてありがとう。
linux - Linux でのオフスクリーン レンダリングにヘッドレス Tesla K20X で OpenGL を使用する
Windows の場合、nvidia-smi を使用して WDDM モードに切り替える必要があります。これは、コンピューティングのパフォーマンスに悪影響を及ぼしますが、OpenGL を使用できるようにします。残念ながら、これは Linux では機能せず、Linux でコマンドを実行すると、このプラットフォームではサポートされていないというエラーが表示されます。これまでのところ、Linux でこれを有効にする方法が見つからないようです。
opencl - OpenCL: 非同期コマンドの送信が遅すぎる
私の OpenCL プログラム(怖がらないでください。これは 3D CFD 用に自動生成されたコードです) が奇妙な動作を示します。多くの時間が opencl_enq_job_* プロシージャ (opencl_code.c) に費やされ、非同期 OpenCL コマンドのみが使用されます。
プログラム出力では、opencl_enq_job_* に費やされた時間が次のように表示されます。
OCL 廃棄物: 0.60456248727985751
その手順に費やされた時間の平均は 60% です。
ほとんどの時間 (92%) が clEnqueueReadBuffer 関数に費やされ、約 5% が clSetEventCallback に費やされます。
なぜそんなに?このコードのどこが間違っていますか?
私の構成:
更新: Nvidia はこれをバグとして受け入れました。
Update1: 私のラップトップ (MBP15、AMD GPU、Apple OpenCL) では、プログラムは同様の動作を示しますが、clFlush でさらに待機します (>99%)。CUDA SDK では、プログラムは clFlush なしで動作し、Apple プログラムでは clFlush なしでハングします (送信されたタスクが終了しません)。
gpu - NVIDIA Tesla で単精度と倍精度の間に関係はありますか?
モデル Tesla K20 では、単精度浮動小数点のピーク パフォーマンスは約 3.52 TFlops ですが、倍精度は 1.17 TFlops であるため、比率は 3 です。割合が繰り返されるようです。私の質問は、比率が2ではなく3になる理由があるかどうかです。単精度と倍精度の違いがあるため、それは私には論理的に思えます。GPUS と GPGPUS について学んでいるので、あまり詳しくありません。
この pdf の 2 ページ目に仕様表があります。 NVIDIA-Tesla-Kepler-Family-Datasheet.pdf
opencl - OpenCL とテスラ M1060
GPGPU の計算には Tesla m1060 を使用しています。次の仕様があります。
OpenCL を使用すると、次のボード情報を表示できます。
GPU カード情報を OpenCL メモリ情報に関連付けるにはどうすればよいですか?
例えば:
- "Memory Interace" とはどういう意味ですか? ワークアイテムにリンクされていますか?
- GPU の「240 コア」を Work Groups/Items に関連付けるにはどうすればよいですか?
- ワークグループをそれにマップするにはどうすればよいですか (使用するワークグループの数はいくつになりますか)?
ありがとう
編集:
次の回答の後、まだ不明な点があります。
私が使用しているカーネルのCL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE値は 32 です。
ただし、私のデバイスのCL_DEVICE_MAX_COMPUTE_UNITS値は 30 です。
OpenCL 1.1 Api では、次のように記述されています (p. 15)。
コンピューティング ユニット: OpenCL デバイスには、1 つ以上のコンピューティング ユニットがあります。ワークグループは単一の計算ユニットで実行されます
ここで何かが一貫していないか、ワークグループと計算ユニットの違いを完全には理解していないようです。
前述のように、ワーク グループの数を 32 に設定すると、プログラムは次のエラーで失敗します。
Entry function uses too much shared data (0x4020 bytes, 0x4000 max).
値 16 が機能します。
補遺
これが私のカーネル署名です:
ホスト コード部分: