logmi・ログミーTech

エンジニア向け勉強会の書き起こしメディア

計算量はコンピュータ性能論の「入り口」にすぎない–専門家が語る、IT屋に知っておいてほしい基礎知識

計算量はコンピュータ性能論の「入り口」にすぎない–専門家が語る、IT屋に知っておいてほしい基礎知識

情報処理における全国のエキスパートが一堂に会したリクルート主催の「春の情報処理祭」。HPC(High Performance Computing)研究分野の専門家である、京都大学の中島浩教授は、HPCの役割や速さの秘密について説明するとともに、HPCがビジネス全体にもたらす影響を語ります。コンピュータの性能を生かすために知っておくべき、HPCの基礎知識とは?(春の情報処理祭in京都より)

シリーズ
春の情報処理祭 > 春の情報処理祭_ハイパフォーマンスコンピューティング
2015年3月16日のログ
スピーカー
京都大学 教授 中島浩 氏

ハイパフォーマンスコンピューティング(HPC)とは

中島浩氏 (BGM「Let It Be」を流しながら登場)さすがにビートルズの「Let It Be」ぐらいは知っているかな。皆さんが生まれるずいぶん前の歌ですけれども。 『アナ雪(アナと雪の女王)』というのがあって、あっちは「Let It Go」なんですね。こっちは「Let It Be」で、何が違うのか。英語のニュアンスはほとんど同じなんですけれども「Let It Go」のほうは少し積極的。 「Let It Be」は「まあ、いいじゃん」みたいな、そんな感じのニュアンスだと思います。 私、京都大学の中島と言いまして、今日はHPC、High Performance Computing(ハイパフォーマンスコンピューティング)の話を皆さんにしたいと思います。 皆さんのことをInfo Guysと書いていますけれども、IT屋さんの卵というかITリサーチャーの卵である皆さんに向けて、この分野というのはどういうものだということをお話しします。 これは結構クリティカルな分野で、皆さんの将来にすごく大きな影響が、少なくとも間接的には及ぼすという恐ろしいところもある話ですが、朝一番ですので真面目に聞いていてもしょうがない。 長丁場ですから、今日これが10個ぐらいあるという話で、最初から真面目に聞いていると本当に死んじゃいますので(笑)。適当にリラックスして聞いてください。 では中身ですが、一応リクルートさんのほうから注文があって、定義みたいな、これって何、というような話をしてくれというお話なので、一応定義はします。歴史もお願いしますと言われてますので、皆さんのお父さんが生まれるもっと前の頃から、私が生まれる前の話から始めます。歴史についてはTOP500というキーワードがあるんですけれども、それ以前と、それ以降という形でお話しします。 最後に「情報屋」というとちょっと聞こえが悪いんですけれども、ITの人たちにとってのHPCについてお話しします。「そんなの関係ないや」と思っていると非常にまずいという話と、何でまずいかという理由、つまり諸君の研究、あるいは将来のビジネスというのが、コンピュータの性能にかかっているということをお話しします。

コンピュータが速い理由

皆さんの将来は、コンピュータがどれだけefficientかというのにかかっているわけなんですけれども、それが何でefficientなんでしょう、という理由についてもお話しします。 コンピュータって速いと思っているか速くないと思っているかはよく知りませんけれども、速い理由というのが結構実はしょうもないという話があるので、それをお話します。そして最後に、我々からITの人たちへの期待というものでまとめたいと思います。 gazou01 まず非常に簡単な定義として、狭義のHPCについてお話しします。 自然科学とか工学、いわゆる理系分野、コンピュータサイエンスではない理系分野の問題を考えます。例えば地球温暖化がどうした、どうなるかとか、次の南海トラフはいつ来るんでしょうみたいな話を、一般にものすごく大きな数値計算問題に定式化してしまうと、それは例えば巨大な連立一次方程式になります。 連立一次方程式ぐらいはもちろん皆さんは知っているわけなのですが、どのぐらい巨大かというと、何十億元とか、そろそろ1兆元とかいう、未知数が1兆個ある連立一次方程式を解くことになります。1兆個あろうが3兆個あろうが何個あろうが一次方程式は一次方程式ですから、解こうと思えば解けるんですよ、一応。 ただ解くのには大変な手間がかかるわけで、それをどうやって頑張って解くかみたいな話が出てきます。これを高速、一般には速くするためには並列コンピュータというのを使うしかないのですが、それを解くための技術だったり、解くためにどういうようなコンピュータを作ったらいいんだとか、そういうような計算技術がHPCだというわけです。 次は簡単な例で、これがポアソン方程式です。「えー! 俺は情報なんだから電気のことはわからない」という人もいるかもしれません。私は35年ぐらい前にあなたたちの年の頃は、「電」と名がつく科目は一切取らないというポリシーで京都大学の情報工学科というところを卒業したので、ポアソン方程式なんて知ったこっちゃねえと思っていましたが、これぐらい知っている人は多いと思います。 別に難しい話じゃなくて、uという三次元の空間中に定義されたもののラプラシアンが、fという三次元の既知の関数に等しいということがわかっているとして、このときにuを求めましょうというのがポアソン方程式です。 ものすごく簡単な問題、空間が一次元だったりfがすごくわかりやすかったりすると、解析解というのがあって、よくあるのは三角関数になったり、三角関数と何とかの、くちゃくちゃくちゃっとしたふうになったりするんですが、空間が三次元になったりfが好き勝手いっていると、全く解析解がないということになります。 解析解がないという言い方が本当に正しいのかどうか知りませんが、解析的には解けないということで、相場が決まっているわけです。そこでこれを近似します。 近似するところまではまだ数学でして、例えばラプラシアンというのは一個一個バラバラにすると、uの空間に関する2階偏微分、つまりuのxとyとzに関する2階偏微分の足し算みたいなことで書けますので、これをテーラー展開か何かを使って、何とか以下を無視するという荒っぽいことをやると、まあまあの精度で右の近似式が出てきます。 そうするとこの中にΔx(デルタエックス)というのが出てくるわけなんですが、Δxは小っちゃい。1センチとか、適当に決めてやって、2階偏微分を近似します。そして、これを3つ足すとfになるよ、というわけです。fは既知だよと言っているのでx, y, zについてあらゆるところで既知ですから、このΔxきざみのところにfを定義することができます。つまりΔxきざみのところ、ΔyもΔzもありますけれども、そういう離散的なところにfとuを定義していって、そういう離散的なところでuはいくらになるんでしょう? ということを求めるためには、Au=fという連立一次方程式を解けばいいわけです。 解けばいいって、離散的であっても無限の空間では解けませんから、例えば1000×1000×1000とかという有限の空間を作ってやって、その中で問題を解くことになります。そうするとあっという間に離散的な点が10億個になるわけなんですけれども、とにかく10億元の連立一次方程式を解けばいいわけです。 解くやり方は山のようにありまして、本当にきりがなくなって、今日は細かい話には踏み込めませんが、大体の場合、最後はfor何とかかんとか、x=0が何たらとか、y=0が何たらとか、uという三次元配列があって、u[x][y][z]を+=すると書いていますから、自分に何かを足すというわけです。 この自分に足すという計算を、ぐるぐるぐるぐる山のように回してやると、方程式が何とか解けるということで、相場が決まっているわけです。そこで、この計算を高速にやろう、しかも並列にやろう、というわけです。並列にできるという理由は、多くの「何とか法」とか「かんとか法」とかいうのが、それぞれの(x,y,z)に関して独立に計算できる性質を持っていることです。つまり、このu[x][y][z]の計算は、こっちの点の計算とこっちの点の計算を、同時にやっても大丈夫だということが、大概の解き方で成り立つので、これは並列にできるということになります。

HPCの分野

gazou02 大体この世の中のHPCの90%ぐらいはこんなことをやっているわけですが、もうちょっと広くするといろんな分野があります。例えばジェノミクスですか、遺伝子何たらとか、バイオインフォマティクスとか、何か怪しい単語があるんですが、そういう分野もあります。 それとか下手すると経済学とか、株が上がるかどうかを計算で考えるとか、どんどん怪しくなっていくんですが、こういう分野にも巨大な計算問題がありますし、非数値計算問題もあります。数値じゃない計算問題って何だと思うかもしれませんが、非数値的な問題もあるんですね。 例えばグラフとかいうのは、グラフのノードに数値がぶら下がっていることが結構ありますけれども、グラフというそのものの形というのは別に数値ではないわけで、点と点の関係みたいなものです。この関係を数値で表すこともできますけれども、外面的には数値ではない。こういうようなグラフを探索するんだというのもHPCです。これをさっきと同じようにでかい、高速な並列コンピュータを用いて解く計算技術もHPCだというわけです。 例えば典型的でも簡単でもないのですが、例えば人と人とのつながりをグラフ、ソーシャルネットワークグラフみたいなものを相手にするのが、最近の流行りであるわけです。このグラフから、所与の条件を満たすものを探索するのがグラフ探索です。 例えば興味の一致度が高いとか、阪神ファンであるとか、そういうようなものを条件とします。つまり、人と人のつながりの中で好きな野球チームが同じであるような極大連結部分グラフを列挙するということです。連結部分グラフはわかりますよね? 全部のノードがつながっている部分グラフですよね。 極大だというのは、その部分グラフでは好きなチームが一致するけど、これ以上人を加えるともう一致しない、巨人ファンが入ってしまう、というのが極大なやつなんです。これを求める問題というのがありまして、例えばノードの数が1万5000ぐらいというかわいらしいグラフを考えて、5と書いていますけれども興味が一致する項目5以上になるという問題を考えます。 例えば、好きな野球のチームとサッカーのチームと何とかがみんな一緒、とかいうのを数えていくと、10の9乗ぐらいの答えが出てくるという、とんでもない問題です。しかも、極大のやつがこの中にちょっとだけ隠れているというわけです。 10の9乗というのは10億ですが、一般的にはこれはエクスポーネンシャルな問題になってしまっていて、2の1万5000乗ぐらいの計算時間が一番いいかげんな方法で解くとかかるという、こういう巨大な問題になります。こういうのもHPCの分野に入っています。

HPCマシンの歴史

gazou03 次に歴史なのですが、一番さかのぼると1946年までさかのぼりまして、今年で戦後70年とか言っていますから69年前です。最初のコンピュータだということになっているのがENIAC(エニアック)というもので、皆さんも名前ぐらいは聞いたことがあるかもしれません。 これの主要アプリというのが砲弾、大砲の弾を撃つとどこに飛んでいくかという計算ですが、これをリアルタイムに計算するわけではない。そんなことはできるはずがない。1946年ですから。 何をするかというと、風がこう吹いたらあそこに飛ぶとか、大砲を23度の仰角にするとどこに飛ぶ、とかというのを山のように、23度のときにはあそこに飛ぶ、22.5度のときはあそこに飛ぶ、みたいなことを山のように書いた表をつくるわけです。そして相手の軍艦が近くに来ると、どのぐらい遠いとか、風はどこからどう吹いているとかをもとに、バーッと表を見て、じゃあ21.3度だとかと言ってガーンと撃つための表というのをつくるための計算をするという、とんでもないまどろっこしいことをしていたわけです。 どれだけ速いコンピュータだったかが、さすがにもう動いているわけでもないのでよくわかりません。もちろん論文も残っているのですが、大体1秒間に100キロ回、ですから10万回ぐらい足し算と引き算ができたと言われております。速いっちゃあ速いし、人間よりはずいぶん速いわけですが、全然大したことがありませんね。 これ以降何の進歩がなかったわけじゃなくて、ちゃんと進歩してきたのですが、1964年に、もう私は生まれていて、ざっとですけれども君らのお父さんたちが生まれた頃に、最初の商用、売り物のハイパーパフォーマンスコンピューティングのコンピュータというのができました。CDC6600といいます。 この年、期を同じくして、IBMという有名な会社がありますが、これがSystem360という、コンピュータ関連の歴史を語る上でこれは外せないという、有名なコンピュータを発表しています。これはもちろん科学技術計算もできますけれども、どっちかというとビジネスの計算に向いたコンピュータでした。 CDC6600というものの性能が4MFlopsと言われていまして、Flops(フロップス)というのはFloating-point Operations Per Secondです。Floating-pointというのは知っていると思いますが浮動小数点数ですね、Cでいうとdoubleとか、floatとか言っているやつですけれども、それが4M回ですから400万回ぐらいできました。また大体System360というのはこれの4分の1ぐらいだったのではないかと言われています。4MFlopsというのはおもちゃです。自分で簡単につくれます、今は。

世界初のスーパーコンピュータの性能は

gazou04 その後1976年になって、Cray-1という世界最初のスーパーコンピュータができました。これは計算原理がちょっと違う、別にチューリングの定理を覆すような計算できるようになっているわけでも、ムーアの法則を覆すようなことをやっているわけでもないのですが、特徴として配列データの計算が得意なコンピュータでした。 特に、1次元の配列データに対して、ひたすら同一の演算をやっていくのが得意でした。つまり、全部の要素に10を掛けるとか、ベクトルとベクトルの足し算をするとか、ベクトルのノルムを取るとか、そういうことがすごく得意なマシンで、160MFlopsという性能になりました。 160MFlopsまで来ると、だんだん知っている性能になります。これが大体スマホの一桁か、一桁半落ちぐらいですね。5年前のガラケーはいい勝負だったかもしれないというぐらいの性能なんです。これがこんなにでかくて、何百キロワットという電力を食っていたというわけです。 これとほぼ同時に、ちょっと遅れてですけれども、インテルという有名な会社が8086という、これもコンピュータの歴史を語る上で外せないプロセッサーを出しました。この8086の横っちょに、8087というFloating-point計算ユニットというのをつけることができて、大体50KFlopsぐらいだったと言われております。50Kと160Mですから3桁ちょっと違う。つまり最初のスパコンは8086の3000倍ぐらい速かったというわけです。8086は今のXeonだったりCore i7だったりのご先祖様なんですけれども、当時は8086なんてまともなコンピュータになるとはみんな思っていなかった、という話もありますが。 1984年になると、Sequent Balanceという世界最初の商用multi-microprocessor(マルチマイクロプロセッサー)というものができました。これは要するに、8086だとか80186とか286だとか、その辺のマイクロプロセッサーをたくさんつないで並列計算をやろうというものです。 これは30プロセッサで0.79MFlopsだったというわけですから、Cray-1と比べると200分の1ぐらいの性能だったらしいということです。だったらしいというか、実は私も使っていましたので、そうだったね、みたいな感じなんですけれども、そんなものができたというわけです。

スパコン番付は大人の遊び

gazou05 ここまでがTop500前のという話で、Top500というわけのわからないものは1993年にスタートしました。これは世界で速いほうから500位までのスパコンの番付表を、年に2回必ず更新していくという大人の遊びです。 遊びで済んでいればいいんですけれども、もちろん速いコンピュータをつくっているメーカーは、うちのが速いと言いたいわけですから、し烈な争いも同時にあるんです。 1993年に始まったときに、この単位はGFlopsですから、もうすでにこのときは10Gを超えていて100Gに近づこうとしていました。Cray-1の単位はMでしたから、その1000倍ぐらいの性能からのスタートしたわけですね。 この赤い線とか青い線が性能なんですが、日本のやつも最近Kコンピュータというのが、名前ぐらい知っていると思いますが、これが世界で一番になりました、というのはTop500というリストの一番上に載ったという話です。 個々の話はいいのですが、1993年がここで、2014年がここで、今、中国のTianhe-2というのが世界で一番速いのですが、ここの間にビーッと線を引く。どのぐらい速くなったかなと線をひくと、世界一の性能が線の上に乗るというように見えます。 恐ろしいのは、こっちの横軸はリニアなんですね。1ずつふえています。ところがこっちの縦軸はよく見ると対数軸になっていて、1つ上がると10倍になっています。 こっちがリニアで、こっちが対数のグラフにビューっと線を引けるということは、これはエクスポーネンシャルに性能が上がっているということです。実は年率1.88倍という恐ろしいスピードで上がっています。 これはものすごい成長です。88%インフレと言うと、そういう時代も例えば日本でもありましたし、いろんな国で起こったことはありますけれども、それが20年続くということがあると、いくら金持っていてもだめです。10年ぐらいたつと1000倍近くなるわけです。500倍強ぐらいになります。というようなスピードで、ガーッと上がってきたわけです。

ムーアの法則は成り立つのか

同じようなエクスポーネンシャルなやつには、コンピュータサイエンスの世界ではムーアの法則という有名なやつがあって、トランジスタの集積度が、いろんな言い方がありますけれども、36か月で倍ぐらいになる、とかいうのがあります。これは1.58倍/年なので、スパコンの性能はそれよりも速いスピードで上がっているということになります。 これが伸び続けているというのが恐ろしい。実は一般のコンピュータというのも、これよりもっと下のほうですけれども、同じように伸び続けているというところに、IT産業の秘密があるんですね。 要するにどんな難しい問題を考え出しても、そのうちコンピュータが速くなって何とかなる。というところで我々はずっと暮らしてきたわけですが、これは本当に成り立つでしょうか? これからも。 実はちょっと危なくなっています。この1.58よりも1.88が大きいというのはどういうことでしょうか。ムーアの法則はトランジスタ数です。トランジスタの数がふえるとそれに比例して性能が伸びるというのは、1人でやるより2人でやったほうが倍になるよという、そういう話なのですが、それよりも速いってどういうことでしょうか。実はクロックスピードも上がってきたということです。この最初の頃は何MHz(メガヘルツ)と言っていたのが、この真ん中ぐらいの頃は何GHz(ギガヘルツ)と言うようになってきたわけです。 ところが何GHzというやつが、実はこの辺から止まっているんですね。今世紀になって、パソコンの周波数は全く上がっていません。3GHzぐらいで止まっています。今後はムーアの法則に頼るしかないという話があって、じゃあそれでやっていればいいじゃん、1.58倍でもいいじゃん、と思うかもしれません。 ところがこれがまた、私が35年前に大学を卒業した頃から、もう危ない、もうこれ以上集積度は伸びない、これこれこういう理由で、というのが言われていたんですが、これは本当かもしれない。もうトランジスタの大きさは10nmを切ろうとしていますが、10nmを切ると原子の個数で勘定できると、トランジスタ1個の幅が原子何十個とか何百個とか、これはもう危ないという話があるわけです。あるんだけれども、それは目をつぶって、とりあえずもうちょっとは何とかなるだろうと言うことにして話を続けます。 皆さんにとってのHPCというと、僕は物理屋でも気象屋でもないよという話があるわけですが、それでもでかい計算はしますよね。今はしてないかもしれませんが、そのうち何かでかい計算をすると思います。そうするとPCとかで計算をしていると時間がかかってしょうがない計算って山のようにあるわけで。これを解決するにはHPCでやるしかない。パラレルコンピュータでやるしかないわけです。 いや、私は別にそんなでかい計算はしません、私のアプリはスマホで動くためのものです、と言う人もいるかもしれません。だけどスマホも実はマルチコアになっちゃっているんですね。Nexusとかも4コアとかと言っていますから。その4つのCPUコアを使うということはHPCの基本中の基本で、これができないと、スマホだって周波数は絶対上がりませんから、どうしようもないことになります。スマホの周波数も1GHzまでは来ていますけれども、10GHzなんて絶対になりませんので、溶けちゃいますから。そうすると1GHzかそこらのコアを8つ積んだ新しいスマホができたときに、8つ分のいいことがないと、いいことが全く起こらないわけです。 最初に言いましたけれども、頑張らなくてもコンピュータって速くなりますよね、というのは前世紀の迷信でありまして、もう周波数は全然上がりません。頑張れば速くなる。つまり8つ、16、24、32とかふえていくものを、うまくキャプチアップできたときだけ、えらい速くなるというわけです。 これはつまり、コンピュータがそういう意味で速くなるということと、君のプログラムが速く動くこととは、全く関係ない話だということです。周波数が上がるなら、ボーッとしていても君のプログラムは来年になると周波数の分だけ性能が上がります。けれどもそうじゃなくって、コアが倍になるだけです。私のプログラムは1コアで動いているんですけれども、という人のプログラムの性能は一生上がらないわけですね。 gazou08 あらゆるコンピュータはスマホであれ、何であれ、高速な計算をやる原理というのが3つあるんですね。まず並列性というのがあって、実は同時にできる計算というのが山のようにあります。みんなそう思っていないかもしれないけれども、山のようにあります。 実際に多数の演算が同時にできるコンピュータが世の中にはあります。世界最大のTianhe-2というのは5000万個。1サイクルで5000万個できます。1GHzで動いていますので、1nsecに1回、5000万個の演算を同時にやることができる。何か想像を絶する数ですけれども。 これを同時にやるようにプログラムするというのが最大の課題でありまして、これができるかどうか? という話なわけです。 もう1つはLocality(局所性)という話です。配列のa[i]という要素に触りました。そうすると比較的短い時間の間にa[i]自身、あるいはもっとよく起こるのはa[i+1]というのを触るという習性があるんですね、人間が与えたプログラムには。 こういうことが多いので、コンピュータはこんなもんだろう世の中はと、高をくくっているわけです。きっとa[i]を触るとa[i+1]を触るようになると思っているわけですが、これを裏切るとものすごい、下手すると100倍とかというオーダーでプログラムの実行速度が遅くなるという秘密があります。 この2つは昔から有名な話なんですが、最近はRegularity(規則性)というのがありまして、基本的にコンピュータはアホだという話です。コンピュータの上で動いているプログラムは賢いかもしれない。土曜日に将棋で人間に負けちゃいましたが、あれは例外で、私だと何万回やったってやつらに将棋で勝てるはずはありません。けれどもそれはプログラムがお利口なだけで、動いているコンピュータはアホですから大したことはできません。少しでも複雑なことを言われると、特に速い計算ができません。複雑なことだって、やれと言われたことは確実にこなしますけれども、それを高速にできるかという問題です。 ひたすら同じことをわかりやすいパターンで繰り返すのが、コンピュータは得意中の得意なんですね。だからさっき言ったように、ダーッと100万要素とかいうベクターがあって、もう1つ別の100万要素というベクターがあって、この2つを足せとかというと、キャッキャ言ってやります。本当はキャッキャとは言いませんけれども、すごい速さで計算するわけです。ですから演算とか操作の最小化よりも、パターンの均一化のほうが優先することがあるんですね。 gazou06 例えばこういうしょうもないプログラムがあったとします。配列b[i]の中身をa[i]にコピーするプログラムです。これは比較的得意で、特に並列性と規則性の面では非常に得意です。局所性が△と書いてあるのは、このnがでかいと、なかなかa[i]に戻ってきてくれないみたいな話、つまり特定の同じことが2回起こってくれないのような話があるためです。 次に、右辺のほうにインデックス配列を使って間接参照をかましちゃうと、とたんに局所性とか規則性がぐじゃぐじゃになります。 これを左辺のほうにかましてやると、並列性も怪しくなってきます。最初のa[i]=b[i]が並列でできるというのはわかりますよね。a[i]=b[c[i]]も並列にできます。ではa[c[i]]=b[i]は何で並列にできないかというと、c[i]というのがpermutationになっているとは限らないからです。つまり、同じやつが2つ出てくるかもしれない。そうすると例えばi=1とi=2が同じところを書こうとしてるとすると、i=1で書いたやつをi=2でちゃんと上書きしてくれないと困るんだけれども、これを同時にやるとどっちが先に書いちゃうかわからないという話になって、並列性が危なくなります。 これがさらに、配列ではなくってリストになっていると。どうしようもない。こんなものを速くしてくれというお前がアホである、というぐらいどうしようもないわけです。実はITの人のプログラムって、どんどん後のほうなんです。つまりコンピュータが得意な前のほうではなくって、大体後のほうに行くので困ってしまうわけです。 gazou07 これが最後のスライドですが、いっぺん自分のプログラムの性能というのを考えてみるというのは重要かもしれません。自分のプログラムが動いているコンピュータの性能というのは、カタログを見るとわかりますので、ある時間にこれぐらい演算ができるはずであるというのはわかります。 次に自分のプログラムが、全体でどれだけ演算しているのかと数えるのはしんどいですけれども、例えばある部分だけ、一番時間がかかってそうなところというのが、どのぐらいの演算をしているかというのは、考えれば一応はわかると思います。 これが速いかどうか、本当にコンピュータの言い値のスピードで動いているのかどうかというのを、一度考えてみるというのはおもしろいと思います。 また計算量のオーダの話というのは性能論の入り口です。ごく初歩です。nの2乗よりもn log nが偉い。それはそうに決まっているわけなんですが、色々なn log nの中でも定数項の違いというのがあって、それが100 n log nなのか、1 n log nなのかでえらく違います。100倍違うわけです。 一般にアルゴリズムと実装というのは違います。アルゴリズムはアルゴリズムでいいんだけれども、これをどうプログラムに落とし込むかというのは実はひととおりでは全くないわけで、実装の良否で性能は一桁ぐらい簡単に変わります。特に並列計算をやると、二桁変わることが日常茶飯事で起こります。 自分のプログラムが高速化原理、特に並列性にのっとっているのかと考えてみてください。実際に並列に計算しなくてもいいですけれども、私のプログラムは並列に計算できるのかなということを、一度考えることが大事です。

HPCは計算のフロンティア

もう1つ、HPCというのは常に計算のフロンティアでありまして、先ほど言いましたけれども計算の高速化というのはITのdriving forceです。とにかく速くなってきたので、いろんなことができるようになった。いくらでも速くなると思っているので、いくらでも難しいことがわかると思ってきているわけです。 ところがもしかして、局所的で規則的な並列計算ができないとすると、勝手にコア数は増えるけど、これを使えないとなるとITの発展が止まる可能性があるという、恐ろしい話だということを理解してください。 皆さんは、いわゆる物理屋さんだとか天気屋さんだとか地震屋さんに比べて、コンピュータというものや計算というものを、体で知っているはずであると思います。キャッシュと言われただけで、それはこんなふうに動くよねとわかっている。習わなくてもわかっていることはないと思いますけれども、色々やっているうちに体でわかってくる。こういう人たちに、特にコンピュータをフルに活用する計算というのを考えてもらうというのが、非常に我々としては大きな期待になります。 あと1分前とキューが出ましたので、1分でおまけをしゃべりますが、明日からの情報処理学会の全国大会で特別講演があります。松岡聡さんというおじさんがおりまして、結構有名なおじさんなのですが、東工大のおじさんが明日の夕方の16時35分から、タイトルをちゃんと覚えていませんが、IT屋のIT屋によるIT屋のためのスーパーコンピューティングとか、何かそういうような話をします。彼もコンピュータサイエンスの人間ですので、そういう話をしてくれます。 また一般セッションをつらつら見ると、高性能計算とか並列処理とか演算加速機構とか、HPC関係のセッションがあって、ここに書いてある以外にもいくつかあると思いますので、ぜひお楽しみください。 今日1日長丁場ですが私は最後まで、この会場というか、ここにいるか、向こうにいるか、どこかでタバコを吸っているか、どこかその3つにいますので探してください。なるべくこのハッピも着ているようにしますので、何か聞きたいことがあれば、探し当てていつでも声かけてください。どうもありがとうございました。 司会:中島先生ありがとうございました。もう一度どうぞ盛大な拍手をお送りください。ありがとうございました。

  

「情報処理祭」とは?

th_59be58fe5d05887b1335f938dc2dcc6d-550x309

リクルートが主催する「情報処理祭」は、情報技術を学ぶ学生を対象に、自分の知識が実際の社会や企業でどう使われているかや、情報処理分野の最新動向を横断的に学べるイベントです。

・公式サイト

この話をシェアしよう!
シェア ツイート はてブ
計算量はコンピュータ性能論の「入り口」にすぎない–専門家が語る、IT屋に知っておいてほしい基礎知識

話題のログ

編集部のオススメ

人気ログランキング

TOPへ戻る