5/18(火) 掛川・?

 ふ~,やっと夏も近づく八十八夜になって少し暖かくなってきた。今週は一気に気温が上がるようだが,肌寒い夜はまだ続くんだろうな。
 金曜日にクラウドEXPO見学してすっかり疲れてしまった。いろんなコンピュータ関係の展示会をまとめて開催しちゃってるモンだから,コミケ並に西館から東館,全部使っているんだもんなぁ。
computing_expo@jp2010_spring.JPG
 それでも人混みはさほどではなし。やっぱ,コミケの人混みはギネス級だ。
 大まかな感想としては,デジタル化の波はあらゆる所に押し寄せてざばんと全部一度さらってしまって,今は2回目,3回目の波にジャボジャボ洗われているなという感じ。Core i7を載っけたっちっちゃいPCボードあり,秋葉原の量販店店頭には決して並ばない東芝のマザボがあったり,何のための負荷分散装置なのかよく分からないものあり(説明員に突っ込みを入れたらやっと分かったけど),見慣れたデバイスやらシステムがどんどん堅牢になり,カスタム化されているなという感じ。
 大雑把にだが,全館くまなく見て回ったのでくたびれてしまい,土日はばったり。やっと復活してきたところであるが,明日・・・じゃない今日中に明日締め切りの原稿を書かねばならんのであった。懸案の原稿は一通りできたまま放置プレイ状態なので,今週中にケリをつけねばならん。来週の講演準備もあるし,キャンパスニュースの原稿も写真撮りもあるし・・・・け~,鬱病患者にはつらいスケジュールでござんす~。
 GWに無許可翻訳載っけたけど,全然反響ないなw。どっかから苦情が来ればネタになるかと思ってたのに~。ま,読む人極端に少なさそうな専門書だからなぁ。唐沢俊一さんみたいに,裁判沙汰にもならないトラブルで大盛り上がりするってのはちと羨ましい。
 いろいろ漫画も小説もエッセイも読んでるんだけど,全然ぷちめる暇ないな~,つーか,暇より気力の問題なんだけどさ。書き始めさえすればどーにかなるんだが,どーもそのきっかけが作れない今日この頃なのである。
 そんなわけでもう寝ます。

5/11(火) 掛川・曇時々雨

 何だ何だ,GWも終わったというのに,夏も近づく八十八夜だというのにこの寒さは。先月片付けてしまった,机の下に電気温風器につい手が伸びてしまったではないか。冷え冷え~。おかげで今年は風邪引きが多いようで,学生さんも初回の講義とか肝心要の時に欠席したりする。健康も学力の支えであることを痛感。
 あ~,テキスト執筆,全くやる気が起きず,書き直すことだけを決意した第一章の構成を頭の中でこねくり倒すだけで一日が終わってしまった。もう金輪際,共著なんぞ書かんぞ,んっとに。つくづく嫌気がさしてきたので,明日明後日で決着をつけてやる所存。そのままぶん投げてお仕舞いにしよう。もう原稿見るのもいやじゃ。
 レジストしてあったMathWorksのAcademic Virtual Conference,開幕したようなのでログインしてみる。
mathworks_virtual_conference2010-05.PNG
 たくさん講演が揃えてあってまだちらっと見ただけだが,あらかじめ録音してあった著者の音声と共にスライドがめくられていく。ふ~ん,Matlab使ってPBL方式の実習をやっているのか。さすが××にあふれている(つーか,あふれてない奴は容赦なく無視する)欧米の大学は違うワイと感心。ま,□□□□□を何とか救済しようという精神ではPBLなんて出来やしませんがね。モチベーションを損なうやり方をしちゃいかんが,××がない奴のフォローばっかりしてるとPBLとは言えないものになる。難しいよなぁ。
 久々に泳いできたのでもう寝ます。GW中はサボっちゃったから,落ちた筋肉を取り返さないといかん。

5/6(木) 掛川・晴

 日記を朝に書くのは久しぶりだなぁ。そんだけワシの知的活動レベルが下がっているって証なんだが,どーも四十路超えてから調子が良くないなぁ。厄年ってことを忘れてたけど,お祓いでもしてもらうか?
 本日も昨日に続いて暑くなりそう。冬物衣類は片付けたが,羽毛布団はまだ手放せずにいた。しかしボチボチしまう時期だな。一度,クリーニングに出したいと思っているが,どこに出せばいいのやら。まぁ,しばらく悩むことにしよう。金もないし。
 書き忘れていたので,今更ながら,4月のアクセス集中状況をご報告。月間単位でもそのすごさが分かる。
usage2010-04.png
 それも4月の3日間,4/24~26だけ,アクセスが集中したのだ。
daily_usage_201004.png
 普段は3000~4000ヒットなので,その10倍以上のアクセスを処理したことになる。ま,普段がスローペースだから,10倍といっても大した負荷ではないのだが。
 それもこれも,ヘタリアの画像をコピペするのではなく律儀にこっち側の画像をリンクてくれたせいである。まぁ利用はご自由に・・・ってポリシーだから,他のサービスに影響がないようなら文句を言う筋合いではないけどね。しかしワシが本来チェックしたアクセスが隠れちゃって,迷惑と言えば迷惑。
 では仕事に行って参ります。

[4/4] J-.M.Muller et.al, “Handbook of Floating-point Arithmetic”, Birkhauser

[ Amazon ] ISBN 978-0-8176-4704-9, \13666(2010年4月現在)
handbook_of_floating_point_arithmetic.jpg
 本書の第5章でやたらに派手にFMA演算(Fused Multiply-Add)の宣伝をしている。日本語で言うと複合積和計算というべきなのかな? C99以降では
 fma(a, b, c) = a * b + c
という計算をしてくれるfma関数が備わっているが,これをCPUのネイティブコードで実行できるようになるってのがMullerらの主張だ。IEEE754-2008規格にも入っているし,Intel/AMDでもSSE5転じてAVX命令セットが次のCPU coreから導入されるとアナウンスされているので大いに活用しましょうって事らしい。
 んじゃ,現状どうなっているか,ちと調べてみた。その結果,現在ハードウェアレベルで実装してあるものは多くない。英語版のWikipediaの記述を読む限り,現状だとSPARC64が一番身近(?)かな? 建設中の次世代スパコンでは使えるみたいだから,大いに活用してもらいたいものである。
 で,そーゆー「一番を目指しながら「2番じゃダメなんですか?」と助け船を出してもらった」豪華絢爛お金持ちマシンとは縁遠い一般ピーポーなワシらはどーなるわけ? これは前述した通り,Intel/AMDのx86_64 CPUで次のSandy Bridgeから取り入れられるAVX命令にFMA演算が入る予定らしいので,それを待つしかない。ただそれも確定事項ではないようで,FMA命令が,AMDでは使えるけど,Intelではダメ,という事態もあり得るし,FMA命令に互換性がなくなっちゃう可能性もないわけではなさそう・・・となると,Mullerらの主張にはちょっと首をかしげてしまう。IntelにしろAMDにしろ富士通にしろ,所詮はマーケットが要求して需要がコストに見合えば実装するし,見合わなければ実装しないというだけのことだろう。ま,使いたければ待つほかない訳だ。
 調べている途中,ちょっと気になった記述があったので最後の最後に紹介だけしておく。詳細をご存じの方は是非ともご一報いただきたい。
 どうやら,x86互換CPUを作っているVIAがx87命令にFMAをサポートする特許を取っているらしいのだ。
 その後出荷されたVIA Nanoプロセッサに搭載されたIsaiah命令セットにはFMA演算について記述がある(このPDFファイルのP.10)
 引用すると

The multiply unit also has a fused floating-point multiply-add function that is used by the transcendental algorithms.

っつーことで,三角関数の計算に活用する目的で入ったようだ。ただしこの記述だけでは,ハードウェアの機能としてFMA演算は使っていたとしても単独のInstructionとして提供されているかどうかは不明。あったとしても所詮は互換CPUなので,使用されていない可能性もある。・・・まぁ,使えたとしてもNanoで数値計算をバリバリやりたいというユーザは少ないだろうけどねぇ。
 ・・・以上をもって,書評にあるまじき長さのぷちめれ(どこが「ぷち」なんだか)を終わることにする。是非ともどっかの出版社で翻訳してくんないかなぁ~,させてくんないかな~・・・とおねだりもついでにしておこうっと。

[3/4] J-.M.Muller et.al, “Handbook of Floating-point Arithmetic”, Birkhauser

[ Amazon ] ISBN 978-0-8176-4704-9, \13666(2010年4月現在)
handbook_of_floating_point_arithmetic.jpg
 ・・・就寝前の寝ぼけ眼でアップした前書き部分を今読み返していたら,気になる箇所がぼろぼろ出てきた。な~んか非常にみっともないなぁと思いつつ,上げちゃったからしゃーないか,という境地に約1分を要してたどり着いた。つーことで,過ぎ去った過去のことはきれいさっぱり忘れることにして,以下では本書の内容について,ざっと目を通してみた感想を書き付けることにする。
 前書きにも書いてあるように,本書は現在の浮動小数点演算(Floating-point arithmetic, 以下FP演算と略記)の有り様を本文528ページというコンパクトなハンドブックの形でまとめたものである。その内容は次の6部に分割されている。
第一部 浮動小数点事始め,基礎定義,技術標準
第二部 浮動小数点演算の賢い使い方
第三部 浮動小数点計算の実装
第四部 初等関数
第五部 浮動小数点演算の拡張
第六部 結論と今後の展望
 9人の共著とは言え,FP演算や初等関数近似の数学的理論からソフトウェア環境のことまで,よくもまぁこれだけ射程の広い内容を一冊の本にまとめてしまったものだと感心する他ない。当分の間,ワシはFP演算の細かいことを質問されたら本書を紐解いて「Muller本の~ページにこう書いてあるぜ」とエラそーに能書きをたれることにしようと思っている程である。とはいえ,ざっと眺めてみると,ざくざくと山道を造ってくれた偉人達に,「あ,その道ちょっと曲がってますよ」とか「まだこのあたりに草が残ってますよ」的なチマチマした文句を言いたくなってしまった。以下,惰弱な追随者が,この6部の内容について紹介ついでにちみっとブーたれることにする。もちろん屈強な山男達に「細かいこと言ってんじゃねーよ」とタコ殴りされることは覚悟の上だ(ドキドキドキ)。
 第一部は浮動小数点演算の歴史(第1章)から入り(つーても細かいことはKnuth本を参照せよとなっている),第2章で丸め・誤差・FMA演算・区間演算を定義し,第3章でIEEE754-1985とIEEE854をくっつけて新たに制定されたIEEE754-2008規格の解説・FPA演算環境チェックツール(MACHARとかparanoiaなど)の説明を行っている。他の部は必要があるところだけ参照する程度でも,ここは一通り目を通しておいた方が良い。特に精度保証(この用語も誤解を招きやすいので何とかして下さい>九大・早大グループの方々)を志そうという物好きな人には丸め誤差について,やたら細かいけど必須の事柄を解説しているので必読である。ULP(unit in the last place)に2種類の定義あるって初めて知ったワイ。
 第二部ではFP演算を活用した計算アルゴリズムの紹介をしている。解説だけでなく,打ち込めばそのまま実行できるソースコード付きなので,FP数(Floating-point Number)を繋げて4倍,8倍・・・精度演算をしようという人,精度保証付き(って言い方好きじゃないんだけど)線型計算をしたい人にとっては必読。オタク的なFP演算求道者じゃないソフトウェア屋さんでも,今のFortran, C, C++, JavaでどのようにFP演算が扱われているかを知るために第7章をざっと眺めておくのは良いことなんじゃないかな~。
 第三部では基本的なFP演算の実装方法を解説している。まず第8章で四則演算,平方根,FMA演算の,IEEE754-2008規格に基づいた実装方法を解説している。第9章ではハードウェアを用いたデジタル回路での実装について,第10章ではソフトウェアとして実装するための解説とソースコード例が示されている。現在これだけIEEE754-1985規格を搭載したFP演算Unit搭載CPUが普及してしまうと,既存のCPUメーカー,Intel, AMD, SUN, IBMが高速かつ精度拡張したFP演算を実装して高速化してくれる,なんてことはこの先あまり期待できない。明確な応用目的を持った個々の研究グループ・企業が独自に開発を担わねばならないとなれば,この第三部の解説は彼らに対して重要な知的基盤を提供してくれるだろう。
 第四部では初等関数の近似手法についての解説だが,唯一,この部分はあまり感心しなかった。ことに第12章で数表作成者のジレンマ(Table-Maker’s Dilemma, 以下TMDと略記)の議論に一章費やしているのはともかく,Mullerの前作をコンパクトにした内容を期待してたら,そこが全部すっ飛んじゃったという感じである。初等関数近似手法としてRemez法の説明が第11章でなされている以外,あまり有用な情報はない。オタク的な興味のある人以外は,関数近似手法を知りたいならMullerの前作を入手することをお勧めしておく。・・・ホント,このフランスグループってのはTMDが好きだよねぇ~。ま,Lefevreさんの趣味なんだろうけどさぁ~。
 第五部は完全にこの方面の研究者向けという内容・・・かな? 第13章では精度保証(ホントにこの用語何とかした方がいい)を拡張して形式的証明問題に応用しようというお話くさい。カレントテーマってことは知ってるけど,ワシは興味ナッシングなので詳しい人に解説は任せた。でもGappaってのはちょっと興味が沸いたかな? 第14章は多倍長計算のお話。第二部第4章のアルゴリズムの解説を受けて,既存の倍精度FP数を並べて4倍,6倍(倍精度の3倍の精度の意味ね)計算のアルゴリズムを説明している・・・けど,GMPのように整数演算ベースの多倍長計算のお話はあまりない。多倍長整数演算の高速化アルゴリズムの解説を知りたければGMPとかMPIRのマニュアル(PDF)を参照して欲しい。ちなみに,P.511でARPRECも”Large Precision Relying on Processor Integers”で語られているけど,少なくともmp_realはdouble型の拡張だったはず・・・ちょっと誤解を招きそうだ。
 第六部はざっとしたまとめと今後の展望と付録。しかし・・・IEEE754-2008規格が今後実装されていくという方向は認めるとして,その歩みが速いかどうかは疑問である。後述するFMA演算実装状況を考えると,著者らの認識はちと楽観的すぎるような気がする。 
 ・・・とまぁ,かなり大雑把に本書の内容の「印象」をまとめてみた。ワシの持っている本書は,第13章に第12章の最後がくっついた第五部が重複して掲載されているという乱暴な代物だし(「落丁」じゃないから文句を言う筋合いではないけど),一部「言い過ぎ」「言い足らな過ぎ」って箇所もあるので,どーも,本書をFP演算の「聖典」と言い切るには至らない。しかし,それもこれもこのMullerを中心とするフランスグループの力強さの現れと思えば,本書は彼らの力業による「力作」であることは間違いない。13000円の価格は確かに高いけど,この分野に興味があってそこでおまんまを食っている人間がその経済力の一部を振り向けて彼らに喜捨するのだと思えば,お安いものではないだろうか?
 では乱暴さの一部をここでご紹介して,中締めとしよう。
section_12_5_in_chapter13.JPG
mutiple_part_vs.jpg
 最後に,FMA演算の現状についての小文を掲載しておく。→[4/4]へつづく