GMPマニュアル翻訳日記(2)

 つーことで,GMPマニュアルの下訳が完了した。3月中にできなきゃ一生できない気がしていたので,分からないところは適当にすっ飛ばしつつ,とりあえず意味が通りそうな日本語で埋めたというレベル。

 以降は,この下訳を直しながらの作業になるので,読みながら気になるところを紹介する日記になりそうである。

 通読して感じたのは,ほぼ独力でGMPを引っ張ってきたTrobjörn Granlundの個性だ。GNUの精神に共鳴して最初期からGNU Projectに参加し,ちょろっとでも商用ソフトにコードを流用しようもんなら激烈な批判を行う。多分批判の対象はIntel Math KernelとMathematicaのようだが,Microsoftにも嫌悪感をあらわにしていた時期も長かった。最近は老成したのか丸くなった感じもあるけど,20年以上も多様なCPU, OSに対応してきた,バリバリのアセンブラ&アルゴリズムマニアにして高速化に執念を燃やし続けてきた頑固職人ってのは,全世界探してもかなり希少な存在だ。ワシはご本人に会ったことはないけど,GMPのMLに流れてくる文面をチラ見している限りはかなりのトンがったお人のようである。遠目から敬しておきたい方である。

 しかしまぁ,長年に渡ってサポートを続けてきただけのことはあって,CPUの博物館みたいなことになっているのは,貴重かつ生きたソフトウェアの文化財といえるだろう。GMPよりさらに古い歴史を持つLAPACK/BLASがCPUアーキテクチャに依存した高速化の部分を他の研究チームや企業に丸投げしているのとは対照的である。

「現在は下記のCPU用のアセンブラコードが用意されています。
 ARM Cortex-A9, Cortex-A15, 汎用ARM,DEC Alpha 21064, 21164, 21264,AMD K8 と K10 (Athlon64, Phenom, Opteron等々,いろんなブランド名で販売展開されています),BulldozerとBobcat,Intel Pentium, Pentium Pro/II/III, Pentium 4, Core2, Nehalem, Sandy bridge, Haswell, 汎用x86,Intel IA-64,Motorola/IBM PowerPC 32 と 64 (POWER970, POWER5, POWER6, POWER7),MIPS 32-bit と 64-bit,SPARC 32-bit と 全てのUltraSPARC向けサポート付きのSPARC 64-bit。
 廃止されてしまったCPU用のアセンブラコードもそのまま残っています。」(1 GMPについて)

 コンピュータ博物館に収めたいコードも一緒に配布しているってのは貴重ではあるけれど,サポート面では厄介な問題もはらむ。mini-gmpなんてプロジェクトが提唱されるのも,レガシー化しちゃって分かりずらいコードを一部だけでもスッキリさせようということだろう。

 つーことで,4月一杯ゴソゴソ修正しながら愚痴とメモをここに書きつけていく次第である。