RI
STニュースNo．
６１（２０１６）

スーパーコンピュータとのコミュニケーション
Co
mmuni
c
ationwit
hSuperco
mput
er
富士通株式会社
次世代テクニカルコンピューティング開発本部
千葉 修一
スーパーコンピュータ「京」の誕生により、今日まで様々な研究で成果が上げられてきた。これらの研究は、「京」に搭載された様々な技術によって実現されている。その中でもコンパイラの技術は、研究における課題や実験をシミュレーションとしてスーパーコンピュータで実行するために必要不可欠な技術である。本稿では、コンパイラを通して人間とスーパーコンピュータのコミュニケーションについて紹介する。
ことからも分かる。たとえば、図１のような

１．はじめに
２０
１２年９月、スーパーコンピュータ「京」津波による浸水をリアルタイムに解析する研［１］（以降、「京」）の共用利用が開始され、究［３］は非常に身近な社会問題に対する成今日まで様々な成果が上げられてきた。
「京」

果である。の誕生は、Top
５００［２］首位という話題性だ
けでなく日本の科学技術の発展にも大きく貢これらの研究は、スーパーコンピュータと献している。これは、重点配分枠の優先課題協力し課題や実験をシミュレーションするこ７件、および一般配分枠の研究開発課題２４件と で 成 果 を 得 て い る。そ の た め に は コ ン

を中心に幅広い分野で成果が報告されているピュータとのコミュニケーションが必要不可

5,.(1ূਨপ৾‫୕ؚ‬૒ৢଢ଼஢ਚ

図１

スパコンで高解像度の津波モデルを用いてリアルタイムに浸水を解析©理化学研究所、東北大学、富士通研究所

－14－

RI
STニュースNo．
６１（２０１６）欠である。スーパーコンピュータとのコミュプログラムによって実行された内容は、ディニケーションは、自然言語による会話ではな

スプレイやディスク装置に格納されるファイ

くコンパイラが提供するプログラミング言語

ルなど入出力機を経由して人間に伝えられによって実現している。コンパイラは、人間る。これらのやりとりがコミュニケーションとスーパーコンピュータを繋げるために言葉となる。

を受け渡すソフトウェアである。本稿では、
３．プログラミング言語

コンパイラを通して人間とスーパーコンピュータ

プログラミング言語は、コンピュータに指のコミュニケーションについて紹介する。

示を与えるプログラムを記述するための「言葉の集合」である。スーパーコンピュータだ

２．コンピュータとのコミュニケーション
コンピュータといって最初に想像するもの

けでなくパーソナルコンピュータなどの一般は何があるだろう。事務作業を行っている人的なコンピュータを含め、コンピュータが理の場合は電卓かもしれないし、子供たちは解できる情報は“０”か“１”の二値を表現ゲーム機を想像するかもしれない。現在ではするビットであり、このビットの並びが様々

人間が発する自然言語を理解するロボットもな言葉となる。コンピュータによって違いは登場しているが、内部はプログラムの指示にあるが、あらかじめ規定されたビットのパよって動作している。プログラムは、手紙のターンを言葉としてコンピュータに指示すようなものだと考えると分かりやすい。図２

る。これらの言葉は機械語と呼ばれ、短点とのようにコンピュータに実行して欲しい要件

長点の二音で言葉を表現するモールス符号をプログラムとして記述し依頼することで、［４］にも似ている（図３）。

コンピュータは依頼された要件を実行する。
この時プログラムを記述するための手段が、

੉ୁ਀ਠ

プログラミング言語である。プログラミグ言঩মୁਸ઴ஶୁDGGঔ‫ش‬ঝ५ਦಀ‫؞؞ؚٕ؞؞ؚٕٕ؞‬ਃ༊ୁ

語は、プログラムという手紙をコンピュータに理解してもらえるように記述するコンピュータの母国語となる。
プログラミング言語は、依頼する内容の種類に応じて数多く用意されており、利用者に図３

言語の比較よって任意のものを選択することができる。
これは、数か国語を話せる人間が、一番伝え学生がコンピュータの基礎を学ぶ時、基盤やすい言語を選んで会話をすることに近い。

がむき出しのCPUに配線で簡単な入出力機を結合し、機械語の辞書を片手にプログラム

য৑॥থআগ‫ॱش‬ਏ੯

ৰষ
ੑ઴
਀ં
ഀླྀ
੟৶৓৿੿
ऩनউটॢছ঑থॢ੉ୁ஛ಋ౰઴
઺൸૪৶
৿੿੐ં
ऩन

উটॢছ঒

を入力して、音を鳴らしたり、LEDを点灯させたりするような勉強を行うことがある。このような勉強は、デジタルな世界を理解するために非常に有効である。しかし、このような指示の方法は非常に効率が悪い。そこで登場するのがプログラミング言語である。プロ
グラミング言語は、図４のように大きく２つ

図２

プログラムに分類される。

－15－RI
STニュースNo．
６１（２０１６）

উটॢছ঑থॢ੉ୁৈ਷૆੉ୁ&)RUWUDQ&ऩनঽே੉ୁप੺ः

図４॥থঃॖছ॥থআগ‫ॱش‬଩਷૆੉ୁҵӂӡӐӢӜ੉ୁਃ༊ୁ৿੿ᄽ๨ঽே੉ୁऊै೫ः

図５

コンパイラによる翻訳

プログラミング言語の種類

コンパイラは二つのプログラミング言語を一つは、日本語や英語のような自然言語に通訳する「翻訳者」である。そのため、コン近く、コンピュータの種類などに依存せずパイラがプログラムの表現を理解できなかっ（抽象的）に記述することが可能な高水準言語たり、機械語への変換できなかったりした場であり、目的に応じて様々なものが存在す

合は、コンピュータへ正しく要件を依頼するる。たとえばスーパーコンピュータを活用すことができない。前述したようにプログラムる場合は、科学計算を表現しやすいプログラは手紙のようなものである。コンパイラは、ミング言語として、古くからFortranが多くこの手紙の誤字脱字などをチェックして、も利用される。また、オープンソースソフト

しコンピュータが理解できないような内容でウェアのような多人数かつ分散した開発を容あれば利用者に書き直しを要求することもあ易に行うために、C++のようなオブジェクトる。翻訳者でありながら「添削者」でもある。

指向のプログラミング言語が利用される。もまた近年、高水準言語は非常に多くの種類

う一つの分類としては、コンピュータに特化が存在している。さらにプログラムを依頼すした命令を直接記述する低水準言語がある。

る先のコンピュータの種類も数多くあり、そ前述した機械語は、最も低水準なプログラミれごとに機械語が異なる。そのため、図６にング言語である。この機械語を人間に分かり示すように高水準言語と機械語の組み合わせやすい形で表現したものがアセンブリ言語では多岐に渡る。コンパイラは、これらの組みあり、この２つが低水準言語の代表例であ合わせを正しく理解し、翻訳することも必要る。通常は、自然言語に近い高水準言語を利となる。そのためにコンパイラの内部では、用してプログラムを作成するため、高水準言組み合わせごとに翻訳用の辞書を用意してい語をプログラミング言語として表現することる。

が多い。しかしながら、コンピュータが理解できる言語は機械語であるため、高水準言語

63$5&DGG で記述されたプログラムを機械語で記述したプログラムへ変換する「翻訳」という作業が必要となる（図５）。この作業を行うソフトウェアが「コンパイラ」である。

$50

RQHSOXVWZR

3RZHUSOXV[प ॑ ਸ઴

図６－16－ോછ

多岐に渡る翻訳ƘƑƎƑƒƚƑRI
STニュースNo．
６１（２０１６）

コンパイラは、コンピュータとコミュニが最適であり、現在のアプリケーションもこケーションを図るためのコミュニケーションれらの言語が利用できることは一般的となっツールである。ている。
しかし、携帯電話やスマートフォンが無かった時代は簡単にコミュニケーションをと４．翻訳
少しスーパーコンピュータの世界から離れることができなかった。ここでは、１９９０年代て、翻訳という行為について考える。翻訳に主流となっていたポケットベル［６］を使っは、コミュニケーションにおいて異なる言語たコミュニケーションを例に挙げ翻訳の難し間を結び付ける場合に必要となる。元となるさに触れたい。

言語の意味を「理解」し、異なる言語に「変まず、初期のポケットベルは、呼び出し者が換」する。翻訳は、この二つの作業の組み合

ポケットベル用の電話へ連絡をすると、ポわせで実現される（図７）。

ケットベルに搭載したスピーカーから呼び出し音が流れるというシンプルなものであっᄽ๨঻た。つまりポケットベル側は、緊急性を指示ᄽ๨されるだけで、誰からなのか、その目的すら理解することができなかった。
そこで次に登場したポケットベルは、呼び出し者の電話番号を通知できるものであった。ポケットベル側は、呼び出し者が呼び出

図７

し時に入力した数字をディスプレイ上で認識翻訳することができ、それを確認することで呼びこの時、片方の言語でしか表現できないよ

出し者が誰なのかを特定することが可能とうな言葉や曖昧な言葉は、翻訳者が判断してなった。この機能の本来の目的は電話番号の任意の言葉へ変換することになるため、翻訳通知であったが、利用者の増加に合わせてこ者によって異なる結果となる場合がある。自の数字に意味を持たせるコミュニケーション

然言語において日本語から英語、英語から日手段が確立された。これが「ポケベル語」の本語に翻訳する場合も同じで、翻訳者は翻訳誕生である（図８）。

作業の「理解」において翻訳元となる言語の知識が必要となり、「変換」において翻訳先となる言語の知識を強く必要とする。
５．翻訳の難しさ
現代社会では、コミュニケーションツールとして携帯電話やスマートフォンが活用されている。これらのコミュニケーションツール

এॣঋঝୁਔ௡‫ڰڵڭ‬ষऎे‫ڬڭڱڰ‬லহ‫ڭڬڭڭ‬ভःञः‫ڬڭڭڱ‬ই॓ॖॺ‫گڲڵڱ‬ओౙௌऔ॒‫ڭڴڭڴ‬ংॖংॖ

でメッセージをやり取りする手段として、
図８

メールやLI
NE［５］などのアプリケーショ

ポケベル語の例

ンが用意されている。人間同士がコミュニケーションをとる場合、会話で利用する日本

これは３．で述べた機械語のような数字の語や英語などの自然言語でやり取りすること羅列とメッセージが対応づけられている。ポ

－17－

RI
STニュースNo．
６１（２０１６）ケットベルを利用したコミュニケーションで

ポケベル語は電話機の番号を利用して作らは、ポケットベルを所有するメッセージの受れる。たとえば、「愛してる」というキーワー

信者は翻訳者となり数字の羅列を自然言語へ

ドは、「１」を“愛”、「４」を“し”、「１０」を翻訳する。ポケベル語のようなメッセージ“て”、「６」を“る”として５文字を送信しては、最初から辞書が用意されるわけではないた。しかし、“て”の表現に対して２文字割く、使われているうちに取捨選択されて浸透り当てることを無駄と考え、後期では「０」していく。つまり、曖昧な時期には一部の地のみで表現することもあった
（図１０）
。このよ

域または個人のみが翻訳可能なメッセージもうなケースにおいては、翻訳者がメッセージ登場する。そのため、受信者によって誤認すの変化を取り込む必要が出てくる。

るケースも多くみられた。コミュニケーションにおいて言葉の意味の違いは致命的な問題‫ڲڬڭڰڭ‬を引き起こす。図９は、入院患者とその友人という関係において筆者が経験したコミュニಢೠఎखथॊ

ケーションの失敗例である。

‫ڲڬڰڭ‬

図１０ 言葉の変化ভःञः‫ڭڬڭڭ‬コミュニケーションツールで日本語や英語

ෙੰなどのメッセージが利用できるようになったऱनः

図９

現在でも、ポケベル語と同じような現象が起こっている。たとえば、インターネットの掲理解の失敗

示板などで利用されるネットスラング［７］や女子高校生などが流行らせる若者言葉もそ

入院患者が通知した「会いたい」に対して、の一つである。毎年、ユーキャン新語・流行受信者は「ひどい」と誤った翻訳を行ってし語大賞［８］が選出されることからも分かるまった。入院患者は「安心」を与えるメッセー

ようにコミュニケーションで活用される言葉ジを送ったつもりでいたが、受け取り側の友は、日々変化している。これはプログラミン

人は「不安」を受ける正反対の結果となってグ言語でも同じで、利用者に合わせて規格しまった。このように翻訳の失敗は、“YES”（言葉）が継続的に変化している。近年、プロと“NO”の逆転現象さえ発生する。これとグラムは大規模化しており生産性を向上する

同じくスーパーコンピュータを利用したシために規格が更新されている。たとえば、重ミュレーションでは、翻訳の失敗が研究や実複する記述を削減したり、長文となる記述を験の失敗に繋がる問題になることもある。

簡略化したりする方法が用意されることで、このような問題が発生する要因の一つに言プログラムを効率的に作成することが可能と葉の変化が考えられる。たとえば、言葉の利なる。

用頻度が高くなってきた時、それを表現するメッセージを短縮したいようなケースがあ６．方言の標準化る。

前節で述べたようにコミュニケーションにおける言葉は常に変化していることが分か－18－

RISTニュースNo．
６１（２０１６）る。また変化とは関係なく特定の範囲で利用ログラマによるプログラミング作業の生産性者が存在する言葉として「方言」がある。たを向上させる目的で、コンパイラが独自の記とえば、「ありがとう」という言葉には、都道述方法を提供する（許可する）場合がある。こ府県でいろいろな言い方が存在する（図１１）。

れが前節で述べた方言のような位置づけの言葉となる。GNUコンパイラ［９］のようにオープンソースソフトウェアであるコンパイट॒ट॒ऌभनऎऩ

ラは、複数の開発者によってグループ開発されており、利用者も様々である。そのためソフトウェア開発で利用頻度の高いプログラミँॉऋधअ

ング言語のCでは、利用者を支援するためのउउऌप

GNUコンパイラ独自の記述方式が次々に提ँॉऋधऔ॒供される。GNUコンパイラが独自に提供するプログラミング言語の拡張は、GNU拡張

図 １１ ありがとうの方言仕様として広く知られている。
これらの表現は、特定の地域のみで翻訳がコンパイラが独自で提供する拡張仕様で可能である。
「だんだん」などは中国地方の翻あっても利用者が多い場合は、他のコンパイ訳者のみが「ありがとう」として認識できる。

ラがその拡張仕様を取り込むことがある。こただし利用者や利用シーンが増えることで広れがプログラミング言語における一般化であく認知されるケースがある。
「おおきに」は、る。仕様が一般化されることでプログラマが関西地方でよく使われる表現であるが、全国コンパイラを選択できる自由度も増える。ま的に認知されている。その結果、「おおきに」

た、一般化により標準的に利用する価値があは日本語辞書にも登録され、日本語として一る仕様については、プログラミング言語の言般化されている。プログラミング言語でも一語規格に取り込まれることになる。自然言語部のコンパイラのみが翻訳できる方言が存在において方言が標準語に取り込まれることはしている。これはコンパイラによって提供さ少ないが、プログラミング言語においては優れる付加価値であり、差別化にも繋がってい秀な言葉を積極的に規格化することで言語をる。このような生産性を高めるための方言に進化させている（図１２）。この背景にはプログ加え、コンパイラに対する翻訳のヒントとなラムの開発スタイルの変化が影響している。

る方言もある。前者は、規格になる前段階の開発スタイルは、プログラミングモデル［１０］

言葉を積極的に取り込んでいる状態である。

やプログラミング技法［１１］としてソフトウェ

後者は、コンパイラがプログラムをスムーズアの変化に合わせて新しく考えられる。こうに翻訳できるように言葉を補足する時に使わいったスタイルの変化に合わせる形で新しいれる。

仕様が誕生している。この結果、言語規格に取り込まれた仕様は、全てのコンパイラに７．プログラミング言語の進化よって共通で利用が可能となる。プログラミ

コンピュータの世界における翻訳者である

ング言語は自然言語よりも積極的な進化がみ

コンパイラは、オープンソースソフトウェアられる。

や企業の製品として様々な種類が提供されているが、プログラミング言語を翻訳するという作業においては共通している。ただし、プ－19－

RI
STニュースNo．
６１（２０１６）となる。まず自然現象や実際の実験内容は、঳ಹ৲

科学者や研究者によって何らかの数学的な式

ૠત৲（数学モデル）で表現される。たとえば、微積分などを活用した数式がそれである。このような式は、プログラミング言語でプログラムとして記述することができない。そのため、
઀୹੪॥থঃॖছभाᄽ๨૭ચ঳৖भ॥থঃॖছदᄽ๨૭ચ৸थभ॥থঃॖছद
ᄽ๨૭ચ

プログラムとして記述できる四則演算のような簡単な数式に変換（離散化）する必要があ

図１２ 言語の進化る。この作業により、自然現象や実験などのアナログな世界をデジタルな世界で扱うことが可能となる。しかしながら、アナログなデータをデジタルで完全に表現することは難８．シミュレーション
それでは、スーパーコンピュータがコミュしく、ある程度の実験精度［１２］が犠牲になニケーション相手の場合はどうだろう。スーる。そのため、実験精度を落とさないようなパーコンピュータの一番の特徴は高速な計算数多くの変換方法が研究されている。変換が処理であり、その性能に期待するような要件行われた後の式（数値計算モデル）は、プロを依頼することが中心である。そのため、通グラミング言語を利用して記述することが可常のコンピュータを利用する行為とは区別さ能となり最終的にプログラムとなる（図１４）。

れ、ハイパフォーマンスコンピューティング（以降、HPC:HighPerfor
manceComputing）
ঽேਠ଴ৰୡଢ଼஢ऩनと呼ばれている。このHPC分野の要件は、天候や地震などの自然現象の解析、自動車の衝ਯ৾ঔॹঝਯகੑ઴
ঔॹঝউটॢছ঒

突解析などのシミュレーションである。シミュレーションもプログラミング言語で記述したプログラムを利用することでスーパーコৈ২ऩਯૄ
द਀ਠ

஛ಋ౰઴
द਀ਠউটॢছ঑থॢ੉ୁ
द਀ਠ

ンピュータへ指示を与えるが、通常のプログ

図１４ シミュレーションの作成

ラムと区別してシミュレーションプログラムと呼ばれる（図１３）。

HPC分野では、コンパイラの入力となるプログラムを作成するまでに、数多くの変換が

ਠ଴ୖ਻

ਏ੯
ঽேਠ଴
ৰୡ
ଢ଼஢
ऩन

५‫ش‬ঃ‫ش‬॥থআগ‫ॱش‬উটॢছ঑থॢ੉ୁ

३঑গঞ‫ش‬३ঙথউটॢছ঒

行われることが特徴である。これらの変換作業もそれぞれに翻訳者が必要となる。

ৰষெᇍৰୡপૠெੑ઴ള়ੑ઴
ऩन

９．最適化
HPC分野でもプログラムが完成すれば、あとはコンパイラによって機械語に翻訳して実行することができる。しかしながら、HPC分

図１３ シミュレーションプログラム野で要求される高速な計算処理は単純にプロ
ただし、シミュレーションは非常に複雑なグラムを翻訳するだけでは実現できない。プ

内容であり、シミュレーションプログラムをログラムを通して指示された要件をスーパー作成するためには多くの作業を経由することコンピュータが高速に実行できるように効率

－20－

RI
STニュースNo．
６１（２０１６）的な機械語を生成する必要がある。これは図に高速に実行できるように変換すること「最７における「変換」の作業の一つである。た適化」という。

とえば、言葉としては意味が通じるメッセー

最適化は、コンピュータの能力を引き出すジであっても、必要のない言葉を省くことでための技術であり、最適化の優劣はスーパー情報を短縮し、メッセージの受け取り手が情コンピュータ上のシミュレーションプログラ報を素早く理解することが可能となる（図ムの実行時間を上下させる。ここでは最適化１５）。の技術の一つであるスケジューリングについて説明する。
スケジューリングは、プログラムに列挙さஎम၌൱द၌ऋ൱ःदघ‫؛‬৊ਔ

れた要件をどのように実行すれば効率的に行えるかを考え、作業順序を並び替える。たと॥থঃॖছऋਂਏધஊभచ௾

えば、ベランダに布団や洗濯物の干す場合はベランダのスペースを考えなければならなஎम၌൱दघ‫؛‬い。もし、同時に干せない場合はどちらかを優先すべきである。また、買い物と料理は作

図１５ メッセージの短縮

業に関係性があり、買い物で食材を入手しな単純なメッセージを短縮することは簡単でいと料理を作ることができない
（図１７）
。この

あるが、シミュレーションを実現するようなように作業するために利用するものや作業の膨大なプログラムの中でその意味を理解し、関係性からより効率的に実行ができるパター

短縮することは非常に難しくコンパイラの力ンを見つけ出す必要がある。

量が試される部分でもある。またスーパーコਏ੯ンピュータはパーソナルコンピュータと違い、高速に計算処理を行うための様々な機能ഘ੮॑๝घ୫হभେ੟
৖ોभ྽௾
໳भ㣒ृॉ
๲സभຸᅲ
෌୫भમ৶が用意されている。これらの機能を利用する
場合は、スーパーコンピュータに応じた機械語へ翻訳する必要がある。そのため、図１６のようにHPC分野のコンパイラはスーパーコ
ンピュータの特徴や特性を把握し、プログラৰষਈి৲⋇ഘ੮॑๝घ⋈๲സभຸᅲ⋉৖ોभ྽௾⋊୫হभେ੟⋋෌୫भમ৶⋌໳भ㣒ृॉഘ੮धຸᅲ੟म৊ৎप๝चऩः੔पഘ੮॑๝घഘ੮ऋँॊध྽௾ऋदऌऩःେः੟खऩःधમ৶म੿ोऩःમ৶ध㣒म઎ਚद৊ৎप੿঵दऌॊ

図１７ スケジューリングのイメージ

ムがその利点を最大限に活かせるような言葉の組み合わせ（命令の組み合わせ）を思考し、機械語へ変換しなければならない。このよう

１０．最適化の限界
スケジューリングを含め最適化の適用パ્ඉपૢगञਃ༊ୁターンは、一種類だけとは限らない。図１７で॥থআগ‫ॱش‬भ્ඉ౰઴भ৊ৎৰষऋ੭ਔऩ‫ۊۅڸ‬も、洗濯の時間がかかるようであれば、布団ৈசৰষॹ‫ॱش‬भ৊ৎಌৗऋ੭ਔऩ‫ۊۅڸ‬

行時の条件や環境によって最善のパターンは਺ਃৰষऋ੭ਔऩ‫ۊۅڸ‬ラは、可能な限り最善のパターンを適用でき

図１６ コンピュータに応じた機械語へ変換

善のパターンを選択する。しかし、最善のパ३঑গঞ‫ش‬३ঙথউটॢছ঒

ৈசৰষ॥থঃॖছলखॎऐॊৈச
ৰষ

を干す前に洗濯を行うべきである。実際の実変化するため、完全な正解はない。コンパイるように数多くのパターンを思考した後、最－21－RI
STニュースNo．
６１（２０１６）

ターンが選択できない要因もいくつか存在す

もう一つの要因は、パターンを思考するたる。その一つにデータの分離化がある。計算めの翻訳に費やせる時間の限界である。たとに利用するデータはプログラムとは別に管理えば、実行時間が１０分のプログラムを高速化されることが多く、データの種類や量を翻訳するために、１０分以上もパターンの思考に時時に判断することができない。そのため、間がかかっていては意味がない。そこで、あデータの種類や量に依存するハードウェア資る程度の時間や回数で制限をかけることでパ源［１３］を効率的に割り当てることができなターンの思考を打ち切り、制限内で思考したい場合がある。

パターンの中から最善のパターンを選択す

図１８では、料理を行うプログラムにおいてる。一般的に考えてもプログラムで記述され調理の準備（野菜を切る作業）と実際の調理る要件は、無限の組み合わせがある。さらに（野菜を炒める作業）を分けて作業するようにHPC分野の場合はプログラムが複雑になる指示している。実行時、４人前の食材は家庭ため、これらの制限により思考が打ち切られ用のまな板で十分に処理することができるるケースが多い。HPC分野でも翻訳時間とが、８人前となるとまな板に野菜が載り切ら実行時間のバランスを重視する利用者もいれない。そのため、全部の野菜を切るためにば、実行時間の高速化を追求する利用者もいは、２回に分けて作業を行う必要がある。こる。そのため、翻訳における思考時間の制限の時、２回目の切る作業中に１回目で切ったが問題視される時がある。

野菜を並行して炒めることができれば効率的である。８人前に対しては、与えられたもの１１．最適化の進化よりも最適な手順が存在する結果となる。逆コンパイラの技術は、これらの問題への対に、８人前用に効率的な半分ずつ調理すると策も検討されている。たとえば特定の要件にいう手順を最適なプログラムとして４人前用対する最善のパターンを事前に用意し、そのに適用した場合は、作業回数が増えるため非要件がプログラムに含まれていた場合は、事効率である。これらをHPC分野に置き換え前に用意した最善のパターンを適用する。こると、まな板はハードウェア資源といえる。

れを「作業レベルの最適化［１４］」という。

４人前か８人前かは、コンパイラの翻訳時

図１９では、通常の最適化に加え、カレーを（静的な状態）では判断できず、スーパーコンすばやく調理するための特殊な最適化（調理ピュータの実行時（動的な状態）でないと見方法）、ボルシチをすばやく調理するためのえない事象となる。

特殊な最適化（調理方法）が用意されている。
そのため、この２つに関してはすばやく調理ができるが、シチューに関しては最善の実行速度が得られるとは限らない。これらの特定ৰষॹ‫ڶॱش‬の要件を対象とした最適化は、コンパイラごਖ਻ऩऎ੿঵ऋदऌॊਈి৲৏भউটॢছ঒য৐⋇৙ཅ॑৸৖જॊ⋈৙ཅ॑৸৖᫵ीॊৰষৎप৭උੇ൦৷ऽऩഝৰষॹ‫ڷॱش‬ऽऩഝपଭैऩः઄ীङणજॊ‫ڴ‬য৐৸৖જॊऽदઃभ᫵ी੿঵ऋदऌऩःとにポリシーをもって搭載されている。たとえば、料理におけるカレーのような一般的なものに対して搭載する場合もあるし、ボルシチのような日本では少数派となる層を狙って搭載するものもある。少数派を対象とすることは、システムとしての差別化であったり、図１８ データによる実行の変化

特定の要人に向けた戦略的なアプローチで－22－

RISTニュースढ़ঞ‫॑ش‬મ৶घॊढ़ঞ‫ش‬৷ਈి৲ৈசৰষৢଞச২ৰষ३ॳগ‫॑ش‬મ৶घॊ঎ঝ३ॳ॑મ৶घॊ॥থআগ‫ॱش‬भਃચৰষ३঑গঞ‫ش‬३ঙথউটॢছ঒

ਈి৲ਏ੯঎ঝ३ॳ৷
ਈి৲

No．
６１（２０１６）

ৈசৰষ

॥থঃॖছ

ৈசৰষ

লखॎ
ऐ
ॊৈசৰষ

≢উট७५ధഔਃચॱ५ॡధഔਃચ≢५ঞॵॻధഔਃચ
୵ഥధഔਃચनभਃચऋથ஍ऊਖ਼૵दऌऩःৈசৰষ≢ ॹ‫ॱش‬ధഔਃચ

図１９ 作業レベルの最適化

図２０ 高機能なスーパーコンピュータあったりするかもしれない。そのため、利用そのため、高機能なスーパーコンピュータ者は自身のプログラムの種類に応じて得意なを使いこなすためには、利用者とコンパイラコンパイラを選択する。

もコミュニケーションを深める必要がある。

自然言語と同じようにプログラミング言語

たとえば、利用者がハードウェアを意識し、も言葉の組み合わせは無限大であり、全てのスーパーコンピュータ上でシミュレーション組み合わせに対して最善の最適化を適用するプログラムをどのように動かしたいか、コン

こ と は 不 可 能 で あ る。た だ しHPC分 野 にパイラにどのような最適化を期待するかを指フォーカスした時、プログラムの特徴を捉え示することで、より効果的な最適化を適用することは可能である。プログラムで共通するることができる（図２１）。

特徴に対して作業レベルの最適化が拡充されることは、幅広いシミュレーションの高速化ధഔ৲भ৭උਈి৲भ੐ં਀ਠभଁ঳
੉୴भଓଌにつながる。

५‫ش‬ঃ‫ش‬॥থআগ‫ॱش‬‫ॻشঁق‬क़ख़॔‫ك‬ৈசৰষధഔৰষ३঑গঞ‫ش‬३ঙথউটॢছ঒

ৈ২ऩਈి৲

１２．コミュニケーションの強化
スーパーコンピュータは、現在もムーアの法則［１５］に近似するように２年で約２倍のਹ৷঻‫ق‬য৑‫ك‬

実行性能が向上している。この中でメニーコᄽ๨॥থঃॖছ
‫ق‬९ইॺक़ख़॔‫ك‬

図２１ コミュニケーションの強化

ア・プロセッサ［１６］やSIMD演算器［１７］といった、プログラムの並列性を向上する新しいハードウェア技術が次々に誕生していまた、コンパイラにとって最適化しやすいる。前述したようにハードウェア技術はコンシミュレーションプログラムを作成することパイラの最適化によって効率的に利用されも手段の一つである。たとえば、シミュレーる。この作業はコンパイラによって暗黙的にションプログラムの内容をコンパイラが解析行われるため、利用者はハードウェア技術のしやすいように言葉の順序を統一したり、言進化を大きく意識する必要がない。しかしな葉の意味や状態を補足したりすることである。

がら、非常に多くのハードウェア技術が提供言葉の順序が統一されることでコンパイラされる昨今では、コンパイラはどの技術を使はプログラムの意味を正確に理解しやすくなうことが高速化につながるかを判断することる。また、「すばやく」のように形容詞や副詞が難しくなってきている（図２０）。

を付け加えて動作をより明確にすることで、翻訳者となるコンパイラがプログラム全体の動作がイメージできるようにする。たとえ

－23－

RI
STニュースNo．
６１（２０１６）

ਈి৲ෆഛद৙ཅ॑જॊ

উটॢছ঒৊ਔदളਯभ਀ਠ৙ཅ॑ෆഛदજॊ੉ୁૠત॑ইঝણ৷खथ੶஽৙ཅ॑જॊ‫ؚ‬ෆഛदஃဨ੡ဨ஄ઍဨஃဨ॥থঃॖছऋਈి৲खृघः१ঈ७ॵॺद੶஽ౢဨෆഛद৙ཅ॑घयृऎજॊದ๰भଁ঳੉୴भଓଌএॖথॱ஑ਗ৖૗ਯ৿৓୩ୠৰষ଩சৰষ१ঈ७ॵॺಯ৓૗ਯಯ৓୩ୠৈசৰষ

図２３ 規格の限定利用による高速化

図２２ 順序の統一と言葉の補足

ば、プログラミング言語のCは自由度の高い

このように、HPC分野では利用者がコンパ高水準言語である。そのため、図２２のようなイラの動作を理解した上でプログラムを作成同意となるプログラムの表現も多数存在すすることは重要である。利用者とコンパイラる。この表現をコンパイラが翻訳しやすい形の相互理解によって、スーパーコンピュータで記述することは有効である。また、それ以の性能を引き出すことができる。

上に重要となるのが動作を明確にする修飾子である。たとえば、ポインタ型変数のアクセ

１
３．まとめ

ス先の領域が他の変数がアクセスする領域と人間がスーパーコンピュータとコミュニ重ならないことを指示するrestrict
キーワー

ケーションを図るためにはコンパイラが必要

ドを付与し、明示的に変数間の依存関係を取である。コンパイラは、人間がプログラミンり除くことで変数に対する最適化を促進する

グ言語を利用して作成したシミュレーションことができる。

プログラムをスーパーコンピュータが理解でさらに、言葉を限定することでプログラムきる言葉に翻訳する。スーパーコンピュータを高速化することも可能である。たとえば、は、翻訳後のプログラムで理解したシミュプログラミング言語の中でもポインタ型変数レーションを実行し、その結果を通知する。

や外部変数は他の変数との依存関係が不明確

これらの一連の流れがスーパーコンピュータである。そのため、命令の並び替えなど依存とのコミュニケーションとなる。

関係を崩すような最適化が適用できない。そこれらのコミュニケーションは、人間同士こで、できる限り依存関係が明示的になるよのコミュニケーションと同じく相手を理解すうな記述を行うことで最適化の阻害要因を削ることが重要である。利用者はコンパイラを減し高速化に繋げることができる。

理解して効果的なシミュレーションプログラ

利用者がプログラムを作成する時、生産性ムを作成し、コンパイラは利用者の要求を理を確保するためにプログラミング言語の規格解し翻訳時に最善となる最適化を適用する。

をフル活用することは重要である。ただし、そして、スーパーコンピュータはシミュレー高い実行性能を要求する場合は、図２３のようションを高速に処理する。質の高いコミュニにプログラミングの生産性を犠牲にすることケーションは、シミュレーションの実行時間も有効である。生産性と実行性能のトレードの短縮や実験精度の向上という効果が得られオフはプログラムを作成する際に事前に決定る。今後も継続的に優れた研究成果を上げるしておく必要がある。

ためには、スーパーコンピュータとのコミュニケーションをより深めていく必要がある。

－24－RI
STニュースNo．
６１（２０１６）

5,.(1

図２４ コミュニケーションの強化

参考文献

よって１
９６
８年にサービスが開始された［１］ スーパーコンピュータ「京」：独立行政無線呼び出しサービス

法人

理化学研究所と富士通株式会社［７］ ネットスラング：ネットワークを介しが共同で開発したスーパーコンピュー

たコミュニケーション、主にインタータ、 理化学研究所計算科学研究機構

ネットで使用されるスラングで、文字（所在地：兵庫県神戸市）に設置や記号を使った特殊な表現が用いられ［２］ Top
５００：スーパーコンピュータにおける。

る計算速度の世界ランキング［８］ ユーキャン新語・流行語大賞：自由国［３］ 国立大学法人東北国立大学、株式会社

民社が１年を通して話題となった言葉

富士通研究所：スパコンで高解像度なを選び、 関係者を顕彰する賞

津波モデルを用いた浸水解析のリアル［９］ GNUコンパイラ：GCC（GNU Co
mpi
ler

タイム化に成功、Colle
ction）で提供されるコンパイラhtt
p://www.
to
ho
ku.
ac.
jp/
j
apane
se/

［１０］ プログラミングモデル：目的に応じて

newi
mg/
pres
s
i
mg/
to
ho
kuuni
vpress_プログラムをモデル化したもので、通20150227_01web.
pdf

常はハードウェアの特徴に合わせて抽htt
p://pr.
f
uj
it
su.
co
m/
jp/
news
/

象化したモデルを指す

2015/
02/
271.
ht
ml

［１１］ プログラミング技法：プログラムの設計や開発の効率を上げる目的で利用さ［４］ モールス信号：通信分野で利用されるれる技術

可変長な符号化文字コード［５］ LI
NE：スマートフォンやタブレット［１２］ 実験精度：実験の正確性を指す。スーで利用できるアプリケーション、インパーコンピュータを利用したシミュ

スタントメッセージ、音声通話、グレーションは物理的な実験に比べて制ループチャットなどが利用可能なコ度は劣るが、実験コストや速さの面でミュニケーションツール非常に優れているといえる。

［６］ ポケットベル：日本電信電話公社に［１３］ ハードウェア資源：ＣＰＵ、メモリ、

－25－

RI
STニュースNo．
６１（２０１６）入出力機などの装置

Moore
が提唱した「半導体の集積密度［１４］ 作業レベルの最適化：意味のある単位は１８－２４カ月で２倍になる」という法の命令列、または特定のアルゴリズム則で、コンピュータの性能もこれに準に対して適用する最適化で、機械語のじるとされるもの

出力時に特定のコードを出力するタイ［１６］ メニーコア・プロセッサ：多くのコア

プ、プログラムのソースコード自体をを所有するプロセッサ

内部的に加工するタイプ、特定の関数［１７］ SIMD演算器：SIMD（SingleI
nstruc-やライブラリ呼び出しに置き換えるタtionMultipleData）技術によって１イプなど様々なタイプの最適化がある

命令によって複数のデータに対して同［１５］ ム ー ア の 法 則：１９６５年、GordonE.

－26－

時に演算を行うことが可能な演算器