• ベストアンサー

GPUを使った並列コンピューティングの最先端

GPUを使った並列コンピューティングの最先端について教えてください。 CUDAとOpenCLなどを聞いたことがあるのですが、 主流としては、どのような言語やライブラリを使って、 どんな環境(エミュレータ? 仮想PC? 実機? etc・・・)で 並列コンピューティングを行っているのでしょうか? というより既に廃れ始めている感じなのでしょうか?(あまり最近聞かないような気がするので・・・)

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

無料で使えることもありCUDAで書いている人が多いと思います。 私自身はopenACCを使っています。 CやFortranのソースコードに並列化指示を加えていくだけです。openMPと同じような感じですが、並列化可能かはコンパイラが判断します。どちらかというと自動並列化に近いです。 CUDAの場合は全面的に書き替えないといけませんし、GPUを使ったからといって速くならないことも多いので、openACCのような自動並列化が主流になってくるのではないかと思います。 対応しているのは市販コンパイラしかまだないので普及は遅れていますが、GCCが対応を表明しています。 思ったほと使われていないと感じられるなら、GPUによる並列化が適した分野が思ったほど多くはなかったいうことだと思います。 私の感覚では、普段作ってCPUで並列化できるようなもので、GPUに移行して速くなるのは10%程度です。openACCだと気楽に試せますので、いろいろやってみています。 GPUのCPUはかなり低性能ですので、それを数千個束めて使えるほど並列化メリットがあるものだけです。

okwaver85758
質問者

お礼

回答有難うございます。 OpenAcc、さっそく調べさせていただきました。 たぶんあとから改善されていくのだろうと思いますが、やっぱりCUDAより性能落ちるのですね。ですがたしかに使いやすそうな印象を受けました。 OpenMPのGPU特化型派生と聞いたので、もしかするとそのうちまた他のが出てくるかもしれません。 ありがとうございました。

関連するQ&A

  • GPUプログラミング

    GPUのプラグラミングで興味がわき、参考になるサイトを探しているのですが、見つかりません。 「GPU プログラミング」などで検索してみたのですが、CUDAを使ったものばかりです。 自分のPCはAMD Radeon機なため、NVIDIA用のライブラリであるCUDAでは参考になりません。 まずはGPUに「1+1=2」をやらせるところから始めようとおもうのですが、AMD Radeon向けの解説をしているところはないでしょうか。 言語はC#か、VB.NETを想定しています。

  • 並列計算用GPU、5万円なら

    並列計算で機械学習とかさせだいと思っています。 業務利用のトライアルというかちょっとしたお試しに近い感じです。 それに伴い、GPU処理の利用も試したいと思っています。 単精度重視で、倍精度はあればいいな程度。 たいおうしている環境、ライブラリも考慮に入れたいです。 サーバは4コア位のものはいくつか転がってるのですが、それらとして比較してアプリケーションによっては優位に差が出るレベルが期待値です。 耐久性や精度は取りあえず除外で、複数スロット使える前提で、コスパの良い構成はどんなものがあるか、おすすめの製品を教えて下さい。 中古でも新品でも構いません。 刺し先はスロットに余裕あるサーバを探します、ssdも要るかと考えています。 ニッチな分野ですが、詳しい方お願い致します。

  • 仮想の高性能GPUを使えるサービスを探しています

    今、私が使っているノートPCは、Core i7 7700HQというCPU搭載です。これからAIを動かしたいのですが(ちなみに囲碁AIですが、囲碁の知識などはここでは関係ありません)、なるべく性能の良いGPUでAIが最大限の能力を出せるようにしたいと思っています。しかし、高性能GPU搭載のPCを買う余裕もないので、今使っているノートPCで仮想のGPUが使える環境を提供してくれるサービスを探しています。 調べてみたところ、Google Compute Engineとアマゾンクラウドサービスの2つを見つけました。この2つに関して、どちらがおススメなどアドバイスがあれば、また他にこんなものがあるよ、などありましたら、教えてもらえると嬉しいです。

  • Nvidia のGPUの使用方法について

    GPUのハードウェアもだいぶ前からあるようなので古いものはご利益もないかなとは思いますが、練習にはなるかもしれないと思っています。 手持ちの、GPUですが、NVIDIA GeForce GT 750M という5,6年前のものです。 これを使ってGPUの処理の練習が可能なのでしょうか。 CUDAの環境を持ってきてソースプログラムの高速性を見るとか、あるいはパッケージ化されているソフト(スイッチでGPUを指定)でやってみるとかです。 古すぎてネットから環境をダウンロードしても対応してないものでしょうか。あ、なるほど早いなあ、と思わせるような簡単な材料がないかなと思っているのですが。 PCはWindowsなのですが、もともと7だったのをアップして10にしているのでドライバなどが対応しているのかどうかイマイチ不明なのですが、Nvidiaコントロールパネルは動作してサンプルの動画などはスムーズに出ています。それでも最高のパフォーマンスなのかどうかも実はわからない、というのが本音ですが、実用面では支障はないという状態なのです。よろしくお願いします。 ※実はSSD換装する前は動作が遅く、期待もしていなかったのですが、換装したらサクサク動くようになり、だったら搭載しているGPUはどうなの?と思っているわけです。古いパソコンで廃棄かなと思っていたものが次々に現役復帰しています。 パソコンがダメになる=HDDがダメになる だったんだなと思います(話題が逸れました)。

  • 並列処理についてですが、

    並列処理についてですが、 SCOREという並列環境を構築するソフトで、4つのPC(CPU:Quad Core)を、並列化させ、 ある逐次プログラム(C言語、ラプラス方程式を差分法で解くプログラムですがプログラム内容はあまり関係ないので、あるプログラムとさせていただきます)を並列処理させたところ、 1つのPCで、4つのプロセッサを使用し、合計4ノードで並列処理を行った場合と、・・・(1) 4つのPCで各PC1台につき1つのプロセッサずつ、合計4ノードで並列処理を行った場合では、・・・(2) 同じ4ノードであるにかかわらず、 (2)がノード数に比例的に演算性能が良くなることに対して、 (1)の場合、ノード数が増えても関数log(x)(雰囲気です)をグラフにしたような形で、演算性能がうまく良くなりません このような質問を以前したところ、 ・スレッド切り替えのオーバーヘッドが影響しているのではないか ・実行環境が違うことと、ひとつのプロセスですべてのコアを占有する thread はコアを2個使えば2倍、3個使えば3倍それぞれ速くはならない。一方、PCを組み合わせて使う場合、それは完全に独立しており、データ並列のために分割されて計算量が縮小された分、PC組み合わせ数にほぼ比例して速くなる。 という回答をいただくことができました。 なんとなくで意味は分かるのですが、何卒PC初心者なもので、あまり理解することができません。 ここからが質問です。 ・「スレッド切り替え」とは一体どういったものなんでしょうか ・いただいた回答で、「ひとつのプロセスですべてのコアを占有するスレッド」とはどういうことでしょうか このことについて教えていただきたいです。スレッドとは、など部分部分での単語は調べてみましたが、 どういったように動いているのかが分かっていないせいか、上記質問のようなことが分かりません。 回答をせっかくいただいたのに自分の語彙力のせいで度重なる質問をさせていただくことを申し訳なく思いますが、みなさん回答の方よろしくおねがいします。

  • 動画変換について

    最近、PSPに動画を入れるためによくTMPGEnc Video Mastering Works 5を購入して使用して動画を変換しています。 うちのPCは自作で、GPUがCUDAに対応しているGTS 250なのでCUDAを試そうと思いました。 で、試したのですがよく設定方法がわかりません。パフォーマンスの最適化後は、普通に今までどおりの設定で動画変換するだけでCUDAが有効になるでしょうか?環境設定ではCUDAのところにすべてチェックがついております。 またモバイル向け出力でPSPを選択すると、映像エンコーダーをいう項目がありますが、x264とCUDAの二つがありますがx264の方ではCUDAが有効にはならないのでしょうか。 長文で申し訳ありません。回答お待ちしております。

  • Intel+WindowsPCの並列化処理

    いまどきのPCですが、Core-i5, メモリ4G, 64ビットにintel Visual Fortran11.1.048をインストールし、コマンドプロンプトにコマンドを入力しながら利用しています。 このような状況でもCPUの分割による並列計算ができると思っています。 自分のプログラム(流体計算系)を以下のようにしてコンパイル、実行してみました。 ifort /Qparallel abc.f↓ abc.exe <ret>↓ 一応、トコトコと最後まで走っていきますが、コンパイラオプション /Qparallelをつけずにコンパイルした場合と速度はほぼ変わりません(同じと言ってもいいぐらい)。自分が何か間違っているか、並列処理では効率が上がりにくいつくりになっているのかわかりませんが。ただ、このコンパイラオプションは自動並列化で、ソースの作り方が少々悪くても対応するのではないかと思っています。 (悪いのは悪いのなりに、比率の比較はできるだろうと思うのですが) また、コンパイラオプションですが、いろんなサイトを見ると、-parallel となっている場合が多いですが、ifort -helpでオプションを調べると、/Qparallel と表示されます、これでいいでしょうか。 もう1つお願いなのですが、フォートランのプログラムで並列化オプションの有無ではっきりパフォーマンスの違いがわかる簡単なサンプルコードがないでしょうか。ラプラス方程式とかポアソンソルバーとか割とソース事態は短くて、並列効果が顕著なコードですが。ネットで見るとあることはありますが、C言語だったりします。 自分で作ると、あまり効果がわからないので、これぞ、並列効果というのがわかるとありがたいです。 また、それによって、自分の環境ががんばり次第で並列化で高速化できるという自信にもなります。 (今効果が出ないのは、ひょっとしたら並列環境のインストールにミスがあるのではないか、私が何か勘違いしているのではないかと疑いもあるからです。) 並列化の処理速度以外でこのコンパイラの動作に異常はないようです。 以上、よろしくお願いします。

  • Linuxマシンの複数台による並列計算環境の構築

    LinuxのPCが複数台、ルータ(ハブ)で接続されています。 これを用いて並列計算環境を構築したいと思います。サイトなどで調べたら以下のようにあっさりと書いてあります。 ○ OpenMPのインストール sudo apt-get install openmpi-bin openmpi-dev ○ 公開鍵認証を使い、パスフレーズなしで各ノードにsshでログインできるようにしておく。 その後は、実際に計算例などが出ていました。これだけで環境構築ができるらしいです。OpenMPだけでなく、MPICHによる環境の構築も出ていましたが。 そこで質問ですが、 1.OpenMPのインストールは複数台あるPCの中の1台だけでやるのでしょうか。それとも全部でやるのでしょうか。sudo ...以下のコマンドラインは各PC(ノード)でやるのでしょうか。 2.コンパイラは各PC(ノード)に個別にインストールされている必要があるでしょうか。 3.最近のGCCにはすでにOpenMPが含まれているとのことです。これは1つのPCでCPUを分割して計算する場合に用いるらしいですが、グリッドコンピューティングの場合、やはり別途OpenMPの環境設定が必要なのでしょうか。 4.gccの場合、gfortranもインストールされるようです。intel fortranで利用する場合、OpenMP(あるいはMPICH)の環境が設定できれば実行可能なのでしょうか。 5.OpenMPとMPICHによる並列環境が両方共確立しているということは無意味でしょうか。あるいは不可能なものでしょうか。使い分けができるかどうかということでもありますが。 6.話がころっと変わりますが、MACの場合、もっと簡単にできると聞いたことがあります。最近はMACにもgccが標準で入っているようで、1つのPCでの並列化はコンパイラにオプションをつけて実行できるようです。これが複数台のPCではどうなるでしょうか。 以上、よろしくお願いします。

  • Windows95 環境で作動するCD-ROM を WindowsXP で再生

    Windows95(IBM-PC) or PC98(NEC)環境で作動するCD-ROM を WindowsXP で再生すると ↓ 「このプログラムを起動するには、最低 3MB の使用可能な仮想記憶が必要です。」 ↑ と表示されました。 (^^? 再生する方法は有りますか? Win95 用のエミュレータで動作しますか? (エミュレータの知識は有りません) Win95/MS-Dos 用「仮想記憶」領域は作れますか? よろしくご教授お願いします。

  • サーバ仮想化パフォーマンスの調べ方

    基本的な質問かもしれませんが、、、 実機PCで動いているソフトウェアが、仮想化環境で動く時に、CPU負荷、メモリ、DISKアクセス、ネットワーク負荷や使用量にどう影響があるのか調べたいと思っています。 気になるのは、仮想化によるオーバーヘッドでしょうか? 実機PC(Windows7), VMware vSpere 5.0, Hyper-V 2.0でどのような比較を行えば いいでしょうか? ご存じの方、経験がある方よろしくお願いします。