CPUとGPUと計算高速化について、夜中に話したこと

前半は、IntelとかAMDの進めている、CPUとGPUの統合・融合についての話。 中盤に、GPGPUについて。 後半は、前半中盤から少し引き継いで、計算機の特化(具体化)と一般化(抽象化)の話とか。 基本的には @aokomoriuta@Tommy6 の間の会話ですが、時間帯が時間帯なので、双方とも「適当なこと言ってる」と自覚しながらしゃべってます。 続きを読む
3
masafumi @masafumi

@aokomoriuta 今となっては違いは少なくなってきてますね。ちょっと前まではGPUの制約が大きかったので、独特のパフォーマンスを出すためのテクニックが必要でしたが、そうしたものがなくなってくることで特別感はなくなってきますね

2010-07-21 00:08:54
青子守歌 @aokomoriuta

@masafumi ですね。一般的に(簡単に)なればなるほど、特別感がなくなって、そんなに注目しなくなる(興味がなくなる)ものなのかもです。

2010-07-21 00:11:16
青子守歌 @aokomoriuta

なんにしても、ある目的に特化したものと、汎用性を高めたものだと、そりゃ前者のほうが性能は高いことが期待されるよね。それが残るかどうかは別にして。

2010-07-21 00:00:53
Tommy6 @Tommy6

@aokomoriuta GPUに関していえば、前者を維持しているのがAMD(ATI)、後者に寄ろうとしているのがnVidiaですからね。

2010-07-21 00:05:40
青子守歌 @aokomoriuta

まぁ計算力学な観点からすると、CPU単独だろうがGPGPUだろうがCPU+GPUだろうが、計算が並列化されると言うだけで、そんな大きな違いはないんですけどね。

2010-07-21 00:06:37
青子守歌 @aokomoriuta

そのうち、粒子法も一般化して、特別視されなくなるんだろうなぁ。というかまぁ、既にそんな感じが漂い始めてる気がしないでもない。

2010-07-21 00:13:28
青子守歌 @aokomoriuta

漂い始めてるというか、もう大分侵食(?)されてる感が。

2010-07-21 00:13:55
青子守歌 @aokomoriuta

まぁ突き詰めてったら、計算機の将来とかそんな壮大なところまで行きそうなのでこの辺で止めとこうか!

2010-07-21 00:15:30
Tommy6 @Tommy6

OpenCL でいうところのデータ並列とタスク並列だと、CPUはどっちも並列度上げて高速化できるけど、GPUはタスク並列に関しては・・・・なので。ってまあ、そこらへんまで行くとアーキテクチャの話になってしまうのだけれども。

2010-07-21 00:13:58
Tommy6 @Tommy6

並列度1だと、GPUのパフォーマンスはCPUの数十分の1とかだからね。

2010-07-21 00:14:56
Tommy6 @Tommy6

まあ、利用する人みながアーキテクチャやら最適化やらを理解しないとパフォーマンス出せないというのも酷な話で、OpenCL はそのあたりをほんのちょっとだけ解消する入り口になるのかな。

2010-07-21 00:21:21
Tommy6 @Tommy6

そのあたりで頑張るのも、計算機屋さんとしては面白いのかもね。

2010-07-21 00:22:23
青子守歌 @aokomoriuta

あ、あと、計算の高速化の話だけど、もし本当に高速化したいなら、コンパイラなんて使わずに機械語(あるいはアセンブリ言語)使えよ!というのはよく聞くので、結局は、ただ性能が良ければよいってわけではないんですよね。広く受け入れられる(後世に残る)ためには。

2010-07-21 00:23:24
青子守歌 @aokomoriuta

計算手法なんかも同じで、複雑な式使って複雑に組んだ計算方法ですごいことやっても、あんまりすごさは認められないわけで。この辺がDEMなんかが、その計算パラメーターの曖昧さとかを含んでいてもなお使われている理由だったりしますからね。

2010-07-21 00:24:52
青子守歌 @aokomoriuta

DEM的な物体(不連続体)の計算は、その粒径以下のスケールで破壊その他の現象は起きない、かつ、破壊が起きるときはその粒径により定められた形で動くだろうことが前提となっていることを忘れがち(自戒を込めて

2010-07-21 00:45:17
青子守歌 @aokomoriuta

根本には「自然は単純で美しいはず」というのがあったりするかも?科学哲学とかの領域に入るから詳しくは論じれないけれども。

2010-07-21 00:25:42
Tommy6 @Tommy6

@aokomoriuta 最近のコンパイラは頭がいいらしいので、下手に手出すと余計遅くなるとか何とか。(そこか

2010-07-21 00:25:38
青子守歌 @aokomoriuta

@Tommy6 下手な人がやったらそりゃ遅くなりますよw。究極に突き詰めたい(つまりうまく出来る人)の話。

2010-07-21 00:26:20
masafumi @masafumi

@aokomoriuta 現在のコンパイラは賢いので自分でアセンブリ言語を書くのは効率や実際に出力されるコードもかなり最適化されたもの出るので効果的ではないという意見が多いですね

2010-07-21 00:26:30
青子守歌 @aokomoriuta

まぁ、高度に抽象化されていけば行くほど、その前の次元で出来た事ができなくなったり、その次元でのテクニックが使えなくなるのは仕方ないわけで・・・(そして特化と一般化の話に戻る

2010-07-21 00:28:09
Tommy6 @Tommy6

OpenCL でワークグループの数とローカルアイテムの数変えて実行時間とるとね、CPUとnVidiaがほとんど同じグラフの形になって、AMDだけぜんぜん違う形になるんだよね。

2010-07-21 00:31:42
Tommy6 @Tommy6

並列ならみんな同じって言うなら関係ない話だけど、そこらへんの差異に強い興味を持つのはまあ一応計算機屋ってことなのかな。

2010-07-21 00:33:20
青子守歌 @aokomoriuta

あ、思い出したのでついでに。計算力学やってると対称疎行列かつ正定値な行列を係数とする連立一次方程式の解を求めることはよくあることなので、それをするためだけに特化されたプロセッサなりユニットなりを作ることが出来るなら、そりゃそれを使った方が高速だよね、という話を前にしてました。

2010-07-21 00:31:25