コンパイラ最適化に貢献した才女?
コンピュータの進化とともにプログラミング言語も進化してきたからな!
どんな言語もコンパイラでコンピュータにわかる言葉に変えてくれるからな!
ちなみに、コンパイラの発展には、IBMのフランシス・エリザベス・アレンの功績が多かったのだ
才媛だったのですね!
数学教師からIBMの科学者へ
1932年8月4日、フランシス・エリザベス・アレンはニューヨーク州ペリーの農家の長女として生まれました。
アレンは高校時代の授業で数学の魅力に取りつかれ、数学の教師になることを志しました。
1954年にニューヨーク州立師範学校で数学の学士を取得し、故郷で憧れの教師になりましたが、まだ正式な教師ではありませんでした。
正式な教師になるには修士号が必要でした。
アレンは、修士号を取得するためにミシガン大学に入学するのでした。
IBMに入社
ミシガン大学ではコンピュータコースがあり、IBM-650のプログラミングを学びました。
ちょうどその時、IBMが就職を募集しており、学費を返済したいアレンはチャレンジ。
みごと、試験に合格しました。
アレンは「1年間仕事をしたら、また教職に戻ればいいや」という軽い気持ちで、IBMに入社しました。
この時は、まさか45年間勤め続けるようになるとは思いもしませんでした。
Fortran
アレンが入社したIBMは、この頃商用コンピュータIBM-701をNSA(アメリカ国家安全保障局)や大学機関、航空会社などに搬入し、顧客の希望に応えるため、更なるコンピュータ開発を進めていました。
アレンが最初にした仕事は、ジョン・バッカスが開発したばかりの高水準プログラミン言語「Fortran(formula translation)」をIBMの研究者たちに教えることでした。
高水準言語はそれまでに開発されていましたが、パフォーマンスが悪く、研究者たちはアセンブリ言語を使い続けていました。
「Fortran」は関数や複素数などが組み込まれた科学技術計算に特化したプログラミング言語でした。
- 数値計算プログラムを簡単に書ける。
- プログラムの誤りが少ない。
- 大規模な演算も高速で処理できる。
新しく複雑な言語であるため、事前に学習する必要がありました。
アレンは教えるために、「Fortran」を十分に理解しなければならず、「コンピュータ」や「コード」「コンパイラ」について熱心に勉強しました。
しかし、この仕事でコンパイラに強く興味を持つようになったのでした。
Stretch-Harvest プロジェクト
アレンが次に取り組んだのは、Stretch-Harvestプロジェクトでした。
Stretch-Harvest プロジェクトは、当時としては最速のスーパーコンピュータIBM-7030のシステムを開発するプロジェクトでした。
プログラミング言語は「Fortran」「Autocoder」「Alpha」の3つの言語を使用し、これらを一つのコンパイラフレームワークで処理することになり、アレンは他の二人のメンバーとともに設計を担当し、NSA(アメリカ国家安全保障局)との連絡係も務めました。
また「Alpha」の開発もし、何度もテストを重ね調整していきました。
完成したコンパイラフレームワークはStrech(IBM-7030)とHarvest(IBM-7950)、両方のコードを生成し、共通の最適化バックエンドに成功しました。
Stretch-Harvest は1962年NSAへ搬入されましたが、当初計画されていた速度よりも遅く、IBMとしては決して成功したとは言えませんでした。
しかし、「メモリ」「トランジスタ回路設計」などが向上し、以後のコンピュータ開発に影響を与えました。
IBM Advanced Computer Systems プロジェクト
アレンは休む暇もなく、次へのプロジェクトに参加します。
IBMはStrechより100倍速いコンピュータを開発することを目標に、「IBM Advanced Computer Systemsプロジェクト」を始めました。
アレンは、ジョン・コックが率いるアーキテクチャグループのメンバーとなり最適化コンパイラに挑みます。
速度アップするのため、最適化コンパイラは重要視されていました。
このプロジェクトで開発されたハードウェアのプロフェッサーは今まで一つずつ順番通りに行っていた処理を、一度に複数できるようにしてスピードアップを図りました。
アレンが開発したコンパイラは、グラフ構造にして、コードの関連性を明確にし、計算された値が再利用できるにしました。
この時のコンパイラの最適化についてアレンは、1966年の論文「Program Optimization」に書いています。
またこのプロジェクトでアーキテクチャに技術的欠陥があることに気付き、経営陣に手紙で知らせましたが、しばらく無視されました。
プロジェクトで開発されたACS-360は結局販売されず、1969年にプロジェクトは終了。
次のプロジェクトへ変わっていきました。
プロジェクト PTRAN
IBMの新しいプロジェクト「Experimental Compiler Systems プロジェクト (ECS)」では「PL/I」というプログラミング言語を使用しました。
「PL/I」では「Fortran」の科学技術計算、「COBOL」の入出力機能、「ALGOL」のアルゴリズム機能を備えていました。
この言語に対応するためアレンはプロジェクトPTRANを始めます。
「PL/I」は高度な計算を必要とするスーパーコンピュータには適していましたが、言語が複雑であり、最適化コンパイラの開発は困難でした。
そこでアレンは、イリノイ大学のデビッド・クックに相談しました。
クックはコンパイラの並列処理に取り組んでいて、アレンといっしょに研究し、教え子たちはメンバーとなりアレンの開発を支援してくれました。
アレンはプロジェクトメンバーとともにコードを分析し、アルゴリズムを考え、並列処理のコードをいろいろ試す毎日を送ります。
この研究は15年間続き、その間にアレン、またはクックとともにコンパイラの最適化についての論文を書いています。
- 1970年:効率的で効果的なデータフロー分析と最適化における "intervals" の概念を確立
- 1971年:最適化変換について初の体系的記述(コックと共同)
- 1973年~1974年:手続き間のデータフロー分析をプログラム全体の分析に拡張
- 1976年:「A Catalog of Optimizing Transformations」最適変換のカタログ(コックと共同)
これらの研究で得た技術はIBMの製品や他にも取り入られて、コンパイラの発展に貢献しました。
女性科学者の冒険
アレンのコンパイラ最適化の研究は認められ、1989年にIBMフェローに任命。
その後、2006年にはチューリング賞を受賞しています。
いずれも女性初のできごとでした。
アレンはチューリング賞の受賞後のインタビューで、
このことが、女性が科学・コンピューティング・工学分野で活躍する機会をより多く与えることになるだろう
と語っています。
アレンがIBMに勤め始めた頃は、周りに女性社員はいましたが、次第に少なくなり、気がつけば周りは男性ばかり。
そんな環境は時にアレンを落ち込ませましたが、彼女は目の前にある課題にひたすら挑み続けてきたのでした。
2002年にアレンはIBMを退職。
その後、女性たちが科学者として自分と同じように仕事ができるように活動し、支援しました。
私生活では、北極やチベットなどへ行き冒険を楽しみ、環境問題にも取り組みました。
2020年、この日はアレンの誕生日でした。
この日、アレンの冒険は終わりを迎えるのでした。
まあ少しずつではあるが増えてきていることも確かだ!
それでは、明日納品のWEBシステムを仕上げるぞ
何をやることがある?