タグ付けされた質問 「gpgpu」

24
最長の固定長6整数配列
Stack Overflowの別の質問(この質問)に答えると、興味深い副問題に遭遇しました。6つの整数の配列をソートする最も速い方法は何ですか? 質問は非常に低いレベルなので: ライブラリが利用可能である(および呼び出し自体にコストがかかる)とは想定できません。プレーンなCのみです。 (コストが非常に高い)命令パイプラインが空になるのを避けるために、分岐、ジャンプ、およびその他すべての種類の制御フローの中断(&&またはのシーケンスポイントの背後にあるものなど)を最小限に抑える必要があり||ます。 部屋には制約があり、レジスタとメモリの使用を最小限に抑えることが問題です。理想的には、並べ替えが最善です。 本当にこの質問は、ソースの長さを最小化することではなく、実行時間を目標とする一種のゴルフです。マイケル・アブラッシュとその続編による『Zen of Code optimization』という本のタイトルで使用されているように、私はそれを「Zening」コードと呼んでいます。 なぜそれが興味深いのかについては、いくつかの層があります: この例はシンプルで理解しやすく、測定も簡単で、Cのスキルはそれほど必要ありません これは、問題に対して適切なアルゴリズムを選択した場合の効果だけでなく、コンパイラーと基礎となるハードウェアの効果も示しています。 これが私のリファレンス(素朴で最適化されていない)の実装とテストセットです。 #include <stdio.h> static __inline__ int sort6(int * d){ char j, i, imin; int tmp; for (j = 0 ; j < 5 ; j++){ imin = j; for (i = j + 1; i < 6 …

2
CUDAブロック/ワープ/スレッドはどのようにCUDAコアにマッピングしますか?
私は数週間CUDAを使用していますが、ブロック/ワープ/スレッドの割り当てに疑問があります。 私は教訓的な観点から大学を研究しているので(大学のプロジェクト)、ピークパフォーマンスに到達することは私の関心事ではありません。 まず最初に、これらの事実を正直に理解したかどうかを理解したいと思います。 プログラマーはカーネルを作成し、その実行をスレッドブロックのグリッドに編成します。 各ブロックは、ストリーミングマルチプロセッサ(SM)に割り当てられます。いったん割り当てられると、別のSMに移行できません。 各SMは独自のブロックをワープに分割します(現在、最大サイズは32スレッドです)。ワープ内のすべてのスレッドは、SMのリソース上で同時に実行されます。 スレッドの実際の実行は、SMに含まれるCUDAコアによって実行されます。スレッドとコアの間に特定のマッピングはありません。 ワープに20スレッドが含まれているが、現在は16コアしか使用できない場合、ワープは実行されません。 一方、ブロックに48個のスレッドが含まれている場合、十分なメモリが利用可能であれば、2つのワープに分割され、並列に実行されます。 スレッドがコアで開始されると、メモリアクセスまたは長い浮動小数点演算のためにスレッドが停止し、別のコアで実行が再開される可能性があります。 彼らは正しいですか? 現在、私はGeForce 560 Tiを持っているので、仕様によると、それぞれに48個のCUDAコア(合計384個のコア)を含む8つのSMが搭載されています。 私の目標は、アーキテクチャのすべてのコアが同じ命令を実行することを確認することです。私のコードが各SMで利用可能なものよりも多くのレジスターを必要としないと仮定して、私は異なるアプローチを想像しました: 各SMが実行する1つのブロックを持つように、それぞれ48スレッドの8ブロックを作成します。この場合、48スレッドはSMで並列に実行されますか(それらに使用可能な48コアすべてを利用します)? 6スレッドの64ブロックを起動しても違いはありますか?(それらがSM間で均等にマッピングされると仮定) スケジュールされた作業でGPUを「サブマージ」する場合(たとえば、1024スレッドの1024ブロックを作成する場合)、すべてのコアが特定の時点で使用され、同じ計算を実行すると想定するのが妥当です(スレッドがストールしないでください)? プロファイラーを使用してこれらの状況を確認する方法はありますか? このものへの参照はありますか?「大規模並列プロセッサのプログラミング」と「CUDAアプリケーションの設計と開発」で、CUDAプログラミングガイドとハードウェアアーキテクチャ専用の章を読みました。正確な答えは得られませんでした。

14
C#でのGPUの使用[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 2年前休業。 この質問を改善する グリッドからより多くの処理能力を引き出そうとしています。 私はすべてのCPU /コアを使用していますが、C#でGPUを利用することは可能ですか? 誰もがライブラリを知っているか、サンプルコードを手に入れましたか?
135 c#  gpu  gpgpu 

10
NVIDIA vs AMD:GPGPUパフォーマンス
両方のコーディングの経験がある人から聞いてください。私自身、NVIDIAの経験しかありません。 NVIDIA CUDAは、競合他社よりもはるかに人気があるようです。(このフォーラムの質問タグを数えると、「cuda」は「opencl」3:1を上回り、「nvidia」は「ati」15:1を上回り、「ati-stream」のタグはまったくありません)。 一方、ウィキペディアによると、ATI / AMDカードは、特に1ドルあたりの可能性がはるかに大きいはずです。現在の市場で最速のNVIDIAカードであるGeForce 580($ 500)は、1.6の単精度TFlopsと評価されています。AMD Radeon 6970の価格は370ドルで、定格は2.7 TFlopsです。580には、772 MHzで512の実行ユニットがあります。6970には、880 MHzで1536の実行ユニットがあります。 NVIDIAに対するAMDの紙の利点はどれほど現実的ですか、そしてほとんどのGPGPUタスクで実現される可能性がありますか?整数タスクはどうなりますか?
105 cuda  opencl  gpgpu  nvidia  ati 

8
JavaのGPGPU / CUDA / OpenCLに最適なアプローチは?
グラフィックスプロセッシングユニットでの汎用コンピューティング(GPGPU)でのは、あらゆる種類のコンピューティングにGPUの能力を活用するための非常に魅力的なコンセプトです。 画像処理、パーティクル、高速な幾何演算にGPGPUを使用したいです。 現在、この分野の2つの候補はCUDAとOpenCLのようです。知りたい: OpenCLはWindows / MacのJavaからまだ使用できますか? OpenCL / CUDAにインターフェースするライブラリーの方法は何ですか? JNAを直接使用することはオプションですか? 何か忘れてる? 実世界での経験、例、戦争の話は大歓迎です。
94 java  cuda  gpgpu  opencl 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.