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

10
GPUコンピューティングにはどのような問題が役立ちますか?
だから、私が取り組んでいる問題がシリアルで最良のものであり、それを並行して管理できるものについて、まともな頭を持っています。しかし、現時点では、CPUベースの計算によって何が最適に処理され、GPUに何をオフロードする必要があるのか​​についてはあまり知りません。 私はその基本的な質問を知っていますが、私の検索の多くは、なぜ、またはやや漠然とした経験則を正当化することなく、どちらか一方を明確に主張する人々に巻き込まれます。ここでより有用な応答を探しています。
84 gpu 

1
2013年後半のCUDAとOpenCL
プログラマーの観点から、2013年後半のCUDAとOpenCLはどのように比較されますか?私のグループは、GPUコンピューティングを利用しようと考えています。OpenCLのみをサポートし、CUDAはサポートしないハードウェアを選択することにより、自分自身を大幅に制限することになるでしょうか? もう少し具体的に言うと、次の仮定は正しいですか? CUDAで可能なことはすべてOpenCLでも可能です ライブラリを使用していない限り、特定のタスクはどちらのライブラリでも実行するのがそれほど簡単ではありません(またはより困難ではありません) CUDAの主な利点は、ライブラリの可用性です どちらも3つのメインプラットフォーム(Win / OSX / Linux)をすべてサポートしています。
34 hpc  gpu  cuda  opencl 

4
現在利用可能なGPUは倍精度浮動小数点演算をサポートしていますか?
24個のIntel Xeon CPUを含むノードで構成されるUbuntu Linuxクラスターで分子動力学(MD)コードGROMACSを実行しました。私の特定の関心のある点は、浮動小数点演算の精度に多少敏感であることが判明したため、GROMACSは、倍精度の計算コストが高いにもかかわらず、単精度ではなく倍精度で実行する必要がありました。そのため、クラスターでは、GROMACSを倍精度でコンパイルしました。 CPUに対して相対的な高速化(「GPUアクセラレーション」)が行われる可能性があるため、GPUの購入を検討しています。ただし、倍精度演算を実行できるGPUが必要です。そのようなハードウェアが市販されているかどうか知っていますか?GROMACSメーリングリストの最近の投稿は、倍精度のGPUは市販されていないことを示唆しています: ハードウェアはそれをサポートしていません[倍精度演算]まだ知らない。 このウィキペディアのページは、倍精度GPUは非効率的である可能性があるため、一般的でないことを示唆しているようです。 Nvidia GPUでの浮動小数点の実装は、ほとんどがIEEEに準拠しています。ただし、これはすべてのベンダーに当てはまるわけではありません。これは、いくつかの科学的応用にとって重要であると考えられている正確さに影響を及ぼします。CPUでは64ビット浮動小数点値(倍精度浮動小数点数)が一般的に使用可能ですが、これらはGPUでは普遍的にサポートされていません。一部のGPUアーキテクチャはIEEE準拠を犠牲にし、他のGPUアーキテクチャは倍精度を完全に欠いています。GPUで倍精度浮動小数点値をエミュレートする努力がありました。ただし、速度のトレードオフは、そもそもGPUに計算をオフロードする利点を無効にします。 このNVIDIA Teslaページは、チャートの「ピークの倍精度浮動小数点パフォーマンス」を参照する際に、実際には、GPUで倍精度計算を実行できることを示唆しているようです(計算コストは​​高くなりますが)。 だから、私は何を信じるべきですか?この問題の経験はありますか?

4
GPUはCPUよりも高速な統計手法はどれですか?
私はデスクトップにNvidia GT660グラフィックカードをインストールしましたが、苦労してRとのインターフェイスを管理しました。 GPU、特にgputoolsを使用するいくつかのRパッケージで遊んでおり、GPUとCPUが基本的な操作を実行するのにかかる時間を比較していました。 行列の反転(CPU高速) qr分解(CPU高速) 大きな相関行列(CPU高速) 行列乗算(GPUがはるかに高速!) 私は主にgputoolsで実験しているので、他のパッケージの方がパフォーマンスが良いかもしれません。 大まかに言うと、私の質問は次のとおりです。CPUではなくGPUで実行する価値のある日常的な統計演算は何ですか?
17 r  gpu 

3

1
倍精度の最新GPUを備えたPythonを使用した科学計算
Pythonを使用して、新世代(K20など)GPUで倍精度科学計算を使用した人はいますか? この技術は急速に進化していることを知っていますが、現在これを行う最善の方法は何ですか?GPUは、人気のある科学的なPythonライブラリnumpyとscipyの範囲外であり、theanoを使用したかったのですが、GPUにはfloat32精度しか使用していないようです。googleがpython gpuの検索結果を提供できることは承知していますが、メーカーに会うために道を進んでいるかどうかに関係なく、プロジェクトのリストよりも多くの洞察を望んでいます。
14 python  gpu  precision 

2
GPUでODEシステムを解くためのオプション?
ODEの解法システムを「自明な並列処理」設定でGPUに展開したいと思います。たとえば、512の異なるパラメーターセットを使用して感度分析を行います。 理想的には、フォワードオイラーのような固定タイムステップではなく、CVODEのようなスマートアダプティブタイムステップソルバーを使用してODEソルビングを実行したいのですが、CPUの代わりにNVIDIA GPUで実行します。 誰かこれをやったことがありますか?ライブラリはありますか?
14 ode  gpu 

4
非同期セルオートマトン用の並列(GPU)アルゴリズム
非同期セルラーオートマトンと呼ばれる計算モデルのコレクションがあります。これらのモデルはイジングモデルに似ていますが、少し複雑です。このようなモデルは、CPUではなくGPUで実行することでメリットが得られるようです。残念ながら、そのようなモデルを並列化することは非常に簡単ではなく、どのように実行するかはまったくわかりません。私は主題に関する文献があることを知っていますが、それはすべて、私が実装できるものの説明を望んでいる私のような人ではなく、アルゴリズムの複雑さの詳細に興味がある筋金入りのコンピュータ科学者を対象にしているようです、その結果、私はそれをかなり浸透していません。 明確にするために、私はCPU実装を大幅に高速化する可能性があるCUDAで迅速に実装できるものほど最適なアルゴリズムを探していません。このプロジェクトでは、プログラマーの時間はコンピューターの時間よりもはるかに制限要因です。 また、非同期セルオートマトンは同期セルオートマトンとはかなり異なるものであり、同期CA(Conwayの生活など)を並列化する技術はこの問題に簡単に適応できないことを明確にする必要があります。違いは、同期CAはすべてのセルをタイムステップごとに同時に更新するのに対して、非同期CAはランダムに選択されたローカルリージョンをタイムステップごとに更新することです。 並列化したいモデルは、〜100000セルからなる格子(通常は六角形)に実装されています(さらに使用したいのですが)、それらを実行するための非並列化アルゴリズムは次のようになります。 隣接するセルのペアをランダムに選択します 「エネルギー」機能計算これらの細胞の周囲の局所近傍に基づきますΔ E△E\Delta E 依存確率で(とβ Aパラメータ)、いずれか2つのセルの状態を入れ替えるか、何もしません。e- βΔ Ee−β△Ee^{-\beta \Delta E}ββ\beta 上記の手順を無期限に繰り返します。 境界条件にはいくつかの複雑な問題もありますが、並列化にそれほど困難はないと思います。 ちょうど平衡状態ではなく、これらのシステムの過渡的なダイナミクスに興味があることに言及する価値があるため、同じ平衡分布に近づくだけではなく、上記と同等のダイナミクスを持つものが必要です。(したがって、チェッカーボードアルゴリズムのバリエーションは、私が探しているものではありません。) 上記のアルゴリズムを並列化する際の主な困難は衝突です。すべての計算はラティスのローカル領域のみに依存するため、近傍が重複していない限り、多くのラティスサイトを並行して更新できます。問題は、このような重複を回避する方法です。いくつかの方法を考えることができますが、実装するのに最適な方法があるかどうかはわかりません。これらは次のとおりです。 CPUを使用して、ランダムグリッドサイトのリストを生成し、衝突をチェックします。グリッドサイトの数がGPUプロセッサの数と等しい場合、または衝突が検出された場合、座標の各セットをGPUユニットに送信して、対応するグリッドサイトを更新します。これは簡単に実装できますが、おそらくCPUでの衝突のチェックはCPUで更新全体を行うよりもそれほど安くないので、おそらく速度をあまり上げません。 ラティスをリージョン(GPUユニットごとに1つ)に分割し、そのリージョン内のグリッドセルをランダムに選択および更新するGPUユニットを1つ用意します。しかし、このアイデアには解決方法がわからない多くの問題があります。最も明白なのは、ユニットがその領域の端に重なる近傍を選択したときに正確に何が起こるかです。 システムを次のように近似します。時間を個別のステップで進めます。格子を上に分割します別のものに事前に定義されたスキームに従ってタイムステップごとに領域のセットを作成し、各GPUユニットが、領域の境界と重なり合わないグリッドセルのペアをランダムに選択および更新します。境界はタイムステップごとに変化するため、領域が比較的大きい限り、この制約はダイナミクスにあまり影響しません。これは簡単に実装でき、高速であるように見えますが、ダイナミクスをどれだけ近似するか、または各タイムステップで領域境界を選択するための最適なスキームはどれかわかりません。「ブロック同期セルオートマトン」への参照をいくつか見つけましたが、これはこの考えと同じである場合とそうでない場合があります。(メソッドの説明はすべてロシア語であるか、アクセスできないソースにあるようですので、わかりません。) 私の具体的な質問は次のとおりです。 上記のアルゴリズムのいずれかは、非同期CAモデルのGPU並列化にアプローチする賢明な方法ですか? もっと良い方法はありますか? このタイプの問題に対応する既存のライブラリコードはありますか? 「ブロック同期」メソッドの明確な英語の説明はどこにありますか? 進捗 適切な非同期CAを並列化する方法を考え出したと思います。以下に概説するアルゴリズムは、私のように隣接するセルのペアではなく、一度に1つのセルのみを更新する通常の非同期CA用です。私の特定のケースにそれを一般化することにはいくつかの問題がありますが、私はそれらを解決する方法を考えていると思います。ただし、以下で説明する理由により、どれだけの速度のメリットが得られるかはわかりません。 考え方は、非同期CA(以降ACA)を、同等に動作する確率的同期CA(SCA)に置き換えることです。これを行うには、まずACAがポアソンプロセスであると考えます。つまり、時間は継続的に進み、各セルは、他のセルとは無関係に、その更新機能を実行する単位時間あたりの一定の確率として進行します。 バツ私はjバツ私jX_{ij}t私jt私jt_{ij}t私はj( 0 )〜経験(λ)t私j(0)〜Exp⁡(λ)t_{ij}(0) \sim \operatorname{Exp}(\lambda)λλ\lambda 値を任意に選択できるパラメーターです。) 各論理タイムステップで、SCAのセルは次のように更新されます。 k 、lk、lk, li 、j私、ji,jtk l&lt; t私はjtkl&lt;t私jt_{kl}<t_{ij} バツ私はjバツ私jX_{ij}バツk lバツklX_{kl}Δ トン〜経験(λ )△t〜Exp⁡(λ)\Delta t \sim \operatorname{Exp}(\lambda)t私はjt私jt_{ij}t私はj+ Δ ...

2
GPUシステムでのBLAS / LAPACKまたはその他の線形代数ルーチンの最速の実装は何ですか?
たとえば、nVidiaにはCUBLASがあり、7-14倍の高速化が約束されています。簡単に言えば、これはnVidiaのGPUカードの理論的なスループットに近いものではありません。GPUでの線形代数の高速化における課題は何ですか?また、より高速な線形代数のルーティングが既に利用可能ですか?

3
GPUプログラミングの推力
私はGPGPUプログラミングに非常に慣れていないので、質問が特に適切でない場合はご容赦ください。私が理解していることから、GPUプログラミングは、通常のCPUプログラミングと比較すると、非常に複雑なエンジニアリング作業です。分岐の問題、タイリング、固定されたメモリ割り当て、およびホストとデバイスの通信/デバイスの計算のオーバーラップについては、非常に注意する必要があります。 少し調べたところ、C ++ STLを模倣しようとしているように見えるスラストライブラリが見つかりました。これはかなりいいです。ただし、私の非常に限られた経験と、優れたパフォーマンスを得るために必要なすべてのマイクロ管理を見てきたので、私はパフォーマンスについて少し懐疑的です。推力は、すべての複雑なプログラミング部分を内部で効率的に処理できますか?PETScなどのいくつかの非常に有名なライブラリは、このパッケージを使用しているようです。 低レベルのCUDAプログラミングと比較した場合、CUDAの経験が豊富で推力のある人がパッケージのパフォーマンスについて一言、または二言言うことができるかと思いました。いつ推力を使用できますか?いつCUDAに戻す必要がありますか?

3
GPGPUアクセラレーション用のNvidia K20XとGeForce Titan
アカデミックコンピューティング、特にDGEMMコンポーネント用のこれら2つのグラフィックカードの違いを理解しようとしています。 生の統計を見ると、どちらも同じGK110チップを備えており、事実上すべてのカテゴリで同等の統計があり、コアアーキテクチャも同じだと思います。割引前のK20Xは、タイタンの約4倍のコストです。効率の観点からは、K20XよりもTitanを使用する方が理にかなっているようです。 ここで違いを理解するのに苦労しています、誰かが状況を解明できますか? メモとして、私はこれらのカードをラックサーバー用に購入し、基本的にカードが死ぬまで完全に傾けて実行することを検討しています。ただし、1つのジョブで複数のGPUを使用する効率が特に重要だとは思いません。

2
大きな共分散行列の並列計算
サイズがから100000 × 100000の範囲の共分散行列を計算する必要があります。GPUとクラスターにアクセスできます。これらの計算を高速化するための最適な並列アプローチは何でしょうか。10000×1000010000×1000010000\times10000100000×100000100000×100000100000\times100000

2
共有メモリのGPUで小さな非対称行列の固有ペアを見つける最速の方法
小さな(通常は60x60よりも小さい)非対称行列のすべての正(固有値は正)の固有ペアを見つける必要があるという問題があります。固有値が特定のしきい値より小さい場合、計算を停止できます。私は固有値が実在することを知っています。最高のパフォーマンスを絞り出すために使用できるアルゴリズムに関する提案はありますか?私はこれらの分解を数千回行わなければならないので、速度が重要です。 前もって感謝します。 編集:これをGPUの共有メモリで行う必要があります。行列も必ずしも同じサイズではありません。現在、これを行うライブラリーについては知りません。問題に適しているアルゴリズムの提案をいただければ幸いです。

3
GPUで実行されるIPOPTのような制約付き非線形最適化ライブラリはありますか?
私のチームの誰かがIPOPTを並列化したいと考えています。(少なくともその機能のいくつか)。それまたは同様のパッケージのGPU実装を見つけることができませんでした。また、ドキュメントには何も見つかりませんでした。 だから問題は、GPUにすでに実装されている代替案があるかどうかです。または、少なくとも誰かがGPUに移植して、一緒に作業できるようにしていますか?

3
線形代数演算に使用するGPUライブラリ
私が持っているコードを高速化するGPUライブラリを探しています。その主要な「高性能」領域には、特異値分解、QR分解、固有値、固有ベクトル計算があります。CuBLAS、MagmaなどのツールでNvidiaのWebサイトを確認しましたが、Cudaでコードを記述したくありません。 SVD、QRなどのメインCコードから「呼び出す」ことができるライブラリがあり、GPUで計算が行われるとすばらしいと思います。つまり、要約すると、集中的な線形代数演算が加速される通常のCコードがあります。これを行うことができるオープンソース(できれば)ライブラリを知っている人はいますか? ありがとう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.