サイエンティフィック・システム研究会

200８年 8 月 27 日

SS研 HPCフォーラム2008「ペタスケール・アプリを支える基盤技術」

アプリケーションとアーキテクチャ
工学院大学
小柳義夫

[アブストラクト]
コンピュータのアーキテクチャとアプリケーションがどのような相互作用を行って来たかについて総括する。
最初の電子式自動計算機 ENIAC は、弾頭計算という特定のアプリのために製作されたが、多くの目的のために利用された。1964 年の IBM 360 シリーズの発表以来「汎用コンピュータ」がコンピュータ設計の基本原理とされ、どのようなアプリケーションにも対応できるという幻想を振りまいた。1976 年の Cray-1 を嚆矢とするスーパーコンピュータの出現は、科学技術計算を目的としたコンピュータの意義を確認させた。その後、マイクロプロセッサの高速化と低価格化により「汎用チップを用いた専用計算機」が可能になったが、マルチコア化のためにデータ転送がボトルネックになりつつある。与えられたコンピュータシステムでいかに速く計算するかという努力は重要であるが、新しいコンピュータはアプリケーション（複数）を想定して設計するべきである。
何にでも速いコンピュータを作るという目標では設計上の判断ができず中途半端なものになってしまうであろう。

[キーワード]アーキテクチャ、アルゴリズム、専用計算機、並列計算機、科学技術計算［概要］
１． はじめにこの講演を依頼されて思い出したのは、現在神戸で建設が進んでいる次世代スーパーコンピュータの概念設計評価作業部会（2007 年）での議論である。文部科学省の提案によると、これまでの日本の主導的スーパーコンピュータであった、NWT, cp-pacs, 地球シミュレータが専用計算機であったのに対し、これは汎用スーパーコンピュータであり、どんな問題にも対応できるということが強調された。私やＩ先生はこれに強く反対し、NWT も cp-pacs も地球シミュレータも、特定のアプリを目的として設計されたが、実は汎用的計算機であり、特定のアプリケーションを強く意識して設計したがゆえに、（逆説的に）多くのアプリケーションに役立つ汎用コンピュータになったことを指摘した。私が言うまでもなく、設計とは、有限の資源のもとにおける多くの技術要素のトレードオフであるから、最初から汎用を設計目標にすると、「あれもほしい、これもほしい」ということになって、中途半端なものになってしまう危険がある。
考えてみると、普通の計算機が汎用で特定目的の計算機が例外、という概念は 1960 年代以降のものであって、最初からそうだったわけではない。チューリングやフォン・ノイマンの計算機モデルは先駆的であったが、初期の計算機は特定目的の計算機であり、しばらくは事務用と科学技術計算用の計算機は別に作られていた。これを統一したＩＢＭの System360 は画期的であり、その後の各社のコンピュータのモデルとなったが、これは直前の状況へのいわばアンチテーゼとして出されたものであった。1980 年代以降には、ベクトルスーパーコンピュータや並列計算機が出現し、状況は変わったにもかかわらず、「コンピュータは汎用であるべきである」という神話が生きているのは残念なことである。
以下では、「アプリを意識した計算機の方が役に立つ」という仮説を証明しようとしたのであるが、実際はなかなか難しい。

２． 機械式計算器におけるアーキとアプリ
現存する最古の歯車式計算器は、パスカルの作った「パスカリーヌ」(1642)と言われているが、そのアプリは父親の税金計算であった。ライプニッツは桁ずらしにより乗除算の出来る計算器を作ったが、そのアプリ
は天文計算であった。バベッジの階差機関(1822)の目的は、天文学や暦だと言われている。機械式計算器
でも、アプリが想定されていることは（考えてみれば当たり前であるが）注目に値する。日本では、1902 年に矢頭良一が発明し製作した「自答算盤」は政府関係に多く売れたそうである。アプリは？

３． 計算機第１世代
真空管式計算機の ENIAC (1946)は配線によってプログラムするもので、その初期の目的は弾道計算であった。その後プログラム内蔵式に改良され、多くの目的に使われた。

４． 計算機第 2 世代（トランジスタ）＝HPC(-3)世代(STRETCH)
1955 年頃からトランジスタ式の計算機が登場したが、10 進演算が主の事務用計算機と、浮動小数演算が主の科学技術用計算機とに分かれていた。私は学生時代に OKITAC5090 を使ったことがあるが、10 進 12桁の計算機であった。浮動小数もあったが、指数部 2 桁、仮数部 10 桁の 10 進表現であった。本来、事務用だったのでしょうか？
このころ IBM は STRETCH の開発をはじめ、1961 年にロスアラモス研究所に納入した。7 台しか製作されなかったが、既存の計算機より 100 倍高速で、スーパーコンピュータの走りと言えよう。アプリは 3 次元の流体力学計算などであったと思われる。

５． 計算機第 3 世代（メインフレーム）＝HPC(-2)世代(CDC6600, IBM2938)
1964 年ＩＢＭはＩＣを使った 360 シリーズを発表し、科学技術用・事務用を問わず 360 度の全方位に向けたコンピュータを標榜した。汎用コンピュータの歴史がここに始まり、われわれもその呪縛のもとにある。
同じ年、アメリカ原子力委員会は各社に「革新的な計算機」を製作するよう促し、ここから後年の CDC
Star-100、TI ASC、 ILLIAC-IV などが生まれたと言われている。やはりこの年、CDC 社は CDC6600 を発表し、科学技術用計算機として多数納入された。アメリカ空軍がイリノイ大学と ILLIAC-IV の契約を結んだのもこの年である。
IBM は最初のベクトル計算機 IBM 2938 Array Processor を 1968 年に出荷した。IBM360 の I/O チャンネルに接続するもので、アプリは石油探査であった。「汎用コンピュータ」を提唱した IBM 自身が、このようなアプリを明確に意識した計算機を出していることは注目に値する。

６． 計算機 3．5 世代＝HPC(-1)世代(ASC, Star-100, ILLIAC IV, BSP)
IBM は 1970 年に LSI を使った 370 シリーズを発表し、各社もこれに追随したが、このころベクトル計算機が登場しつつあった。TI 社の ASC と、CDC 社の Star-100 である。また、並列計算機としては、ILLIAC IV (1976)
や BSP(1980 年開発中止)などがある。

７． HPC 神代時代(Cray-1, 75APU, IAP, DAP, Cosmic Cube, MPP)
Cray-1 が登場したのは 1976 年であるが、そのアプリは科学技術全般であろう。同時にこのころ、様々な並列計算機も登場した。ICL DAP、CM*、LAU、Cosmic Cube、MPP などである。日本では FACOM 230-75 APU
や、日立等の IAP が登場している。これらはまだ本格的なベクトル計算機とは言えないので、HPC 神代時代と名付けることにする。注目すべきことは、このころ日本でも多くの並列計算機の試作が行われていることである。しかしいずれも実験機であって商品にはなったものはない。アプリは、シミュレーション、画像処理、信号処理などであった。
このうち、寿命の長かったのは、Cosmic Cube→ipsc→Paragon→ASCI Red、pacs→pax→cp-pacs→pacs-cs や Grape シリーズなどで、いずれもアプリが明確なものである、と私には見える。

８． HPC 第 1 世代(FPS, Cyber205, XMP, S810, V200, SX-2, PAX, iPSC/1, NCUBE/1, CM-1, T)
その後、1980 年代になると、ベクトルコンピュータの全盛期を迎えるが、注目すべきことは、アメリカなどでは、同時に並列コンピュータの商品が山ほど登場していることである。日本では試作機は多いが、あくまで特定目的に限定されていた。

９． 専用シミュレータ（Ising, QCD, MD）
このころから ASIC が利用可能になり、Ising 模型シミュレータ、格子ゲージ模型シミュレータ、古典粒子系シミュレータ、モンテカルロ専用機などいろいろ登場している。

１０．1990 年代の HPC
1993 年に Cray が T3D を、IBM が SP-1 を発表して、超並列分野に参入した。その後、1980 年代に登場していた多くのベンチャー超並列企業の倒産・吸収が続いた。その原因は様々で、この事情の裏にアプリがどう関係しているかは不明である。

１１．ベンチマークと性能評価
コンピュータの性能を評価するためにベンチマーク・プログラムが用いられる。だから、ベンチマーク性能の高いコンピュータがよいコンピュータだと思いがちである。ベンチマークとしては、Mix、MIPS、LFK、Linpack、SPEC などいろいろあるが、いずれも万能ではない。
そもそもベンチマークはアプリケーションとアーキテクチャとの界面である。アプリケーションから見ればそのアプリケーションの実行速度を推定するためのデータである。従って、ユーザ側としては、対象となるアプリケーションの実行速度をよく推定できるようなベンチマークが望ましい。逆にアーキテクチャから見れば、アーキテクチャを設計するときの目標である。すべてのアプリケーションに対して最適なシステムを設計することは困難であるので、代表的な負荷を取って設計を考える。この両面（とくに後者）を忘れてはならない。
結局、ベンチマークもアプリケーションと独立なものでなく、性能の絶対評価ではない。

１２．おわりに歴史的にどこまで証明できたかは問題であるが、コンピュータの歴史においてアプリケーションが重要な論点であったことはご理解いただけたと思う。今後、アーキテクチャが複雑化し、マルチコア・メニーコアが普及すると、かなりクセのあるコンピュータが利用されるようになることが予想される。どんな計算も高速に実行できることは望み薄で、アプリケーションとの相性が問題になる。さらには、モデル化、アルゴリズムまでも再考する必要が生じるであろう。