5/30(水) 曇時々雨

 九州と四国が平年より20日以上早く梅雨入り。ボツボツ東海地方もジメジメな季節に突入しそうである。やたらに研究室のプリンタが両面印刷でジャムるのも湿気のせい?

 糞詰まり状態だった論文,weakでmeaninglessなのでrejectとか言われそうながらもなんとか仕上げて投稿した。3月ぐらいに投稿手続きしかけたたままほったらかしてたら,Top editor先生から直接担当のeditorへ連絡があったらしく,どういうつもりかと問い合わせがあって焦ったのも過去の話。しっかりcompleteしたもんねだ。

 ということで,6月からは毎日ちょろっとずつでも「多倍長数値計算入門」を進める。書くったら書く。つか,ここでやっておかないとこの先できそうもなくなるのであるからして,定期的にここで進行状況を報告しますぞよ。やるったらやる,命をかけてやりますってのは宇野元総理が唯一選挙演説したときの台詞。女がらみで失脚しないよう頑張ります。

 ここんとこ頭頂部のハゲ具合が気になっていたので,神さんに写真を撮ってもらった。

 かっぱっぱー,るんぱっぱー,かーっぱきざくらいいきもちって歌いたくなるぐらいだが,おごれるものも久しからず,髪の毛がdeclineするのはいかんともしがたいので祇園精舎の鐘の声を聞きながらシミジミするほかないのである。今後は「ハゲ」と言われると過剰反応するので周囲の方は気をつけられたい。「吉田課長」か。

 つーことで6月の予告したので寝ます。

3/21 (水・祝) 駿府・氷雨

 ここのところ春らしい温かさだったのだが,昨日の夜から急に寒気が入り込み,本日はやたらに寒い日。ソメイヨシノが開花し始め,本日あたりが最初の花見クラスタ多数出現日になるハズが,雨は降るわ寒いわで殆ど人出なしロクデナシ。折角のごった返していない春の祝日なので,眼鏡屋で3年ぶりに老眼鏡のレンズを新調。今よりだいぶマシにはなるが,老眼と乱視が進んだ分,無理やり補正すると景色がゆがむ。ネトウヨや極左の世の中はこう見えているのかと思うほどである。来週には到着するとのことなので,それまではJINSの安物遠近両用中途半端な矯正眼鏡で凌がねばならぬ。年寄りのメンテナンスは金がかかるのう。

 先週までにSIAM PP 2018の英語プレゼンと情報処理学会の卒研発表三件の付き添いを完了。前者はともかく,後者は自分がやるより気疲れすることを知る。ま,S君,K君,A君,ご苦労様でした。

 

 その合間に,寄席通い2件と,みうらじゅんフェス来訪を果たす。トリの三遊亭白鳥「はらぺこ奇譚」と桃月庵白酒「幾代餅」を目当てに出かけたのだが,いやまぁ二つとも捧腹絶倒の高座で満腹満腹。やっぱり勢いのある中堅どころは素晴らしい。みうらじゅんフェスはあいにく駐車場が満杯で,だいぶ遠くに車を置いての移動が大変であったが,展示物はこれでもかこれでもかというほどのゴミ(?)からお宝油絵やコレクションまで並んでいて(個人的には「はかせたろう」が宜しかった),見ごたえがあった。

 つーことで,出張が一段落して合間の楽しみも堪能したところで,「多倍長数値計算入門(仮)」の原稿執筆と,新年度の学生実験の準備に勤しみたいなと思っている毎日である。・・・いややってますヨホントに!

 風呂入って寝ます。

2/19(Mon) – 23(Fri) Auckland, Warm

 つーことで,ANODE 2018に遠路はるばる参加してきた。常微分方程式(ODE)の数値解法(Numerical Methods)の大家,John C. Butcher主催の小規模な研究集会,前回は5年前,80歳の誕生日を記念して開催されていたが,その時は1月開催だったので,日本の現役の方々はことごとく参加できなかった。つーことで,今回は2月開催だし,その直前のSciCADE2017はネタ切れで出られなかったこともあり,確保していた旅費を回すにはちょうどいいという事情もあり,いそいそと参加を申し込んだのだが,小規模とはいいながらあーた,Butcherを慕う各国の優秀な教え子や,その道の大家が超真摯な態度でサボることなく5日間のセッションに参加していたのである。

 とはいえ,こちとら11月からスカイプ英会話で特訓していたこともあり,まぁ何とかプレゼンはスムーズかつブロークンに終えたのだが,相変わらずヒアリング力がダメダメで質問にちゃんと答えられなかったのが残念であった。もっと精進せにゃぁいかんです。幸い,日本からは陽的Runge-Kutta公式のレコードホルダーO先生が参加してたので,孤独に陥ることもなく,それなりに楽しく過ごすことができた。

 Conference Dinnerは絶対歌合戦になるだろーなーと思ったら案の定そうなった。O先生のところには各国の歌詞をまとめたものが送られてきていたそうで,「さくらさくら」も入ってたとの由。幸い(?)日本人まで回ってくることはなく,ドイツ人による歓喜の歌,中国人による流行歌(?)と中国語版のハッピーバースデー,Butcher+αによるマオリ語の歌(下記写真),あたりでお開きとなった。

 ANODE2018の特集号がNumerial Algorithmに予定されているそうなので,5月下旬までに投稿するようにとのこと。投稿予定者が多くて一人15ページまでという制限付きだが,さてワシのはそのまま後ダメ臭いので,もう少し改良してからだなぁ。まぁダメでも来訪記念ということで頑張ってみることにしよう。

 つーことで充実したAuckland訪問であった。めんどくさかったので,お土産は全部大橋巨泉の店で買いまくってきました。楽なもんで。

 片道10時間の空の旅,ずーっと座りっぱなしでケツが痛くなったのがまだ続いていたりする。尻の肉が落ちさせいだと神さんには言われたが,つまりは寄る年波ということだな。

 寝ます。

メルセンヌ素数で”FLOPS vs. Memory Bandwidth”を体験する


 50番目のメルセンヌ素数が見つかった,つーか,素数であることの検証が済んだ,という記事に呼応して下記のようなTweetをした。

 これって,”FLOPS vs. Memory Bandwidth”に通じる話でもあるなと思ったので,ここでもう少し詳細にメモっておく。上記のTweetより少し手直ししたプログラムは下記の通り。

// Mersenne Prime Number Calculator by GNU MP
// Copyright (c) 2018 Tomonori Kouya
//
// Compile: cc mpz_mersennne.c -lgmp
//
#include <stdio.h>
#include <stdlib.h>

#include "gmp.h"

/* Mersenne Prime Number */
/* 2^p - 1

/* cf.) http://primes.utm.edu/mersenne/ */

int max_index = 50; // 2018-01-05
unsigned long known_mersenne_prime_p[] = {
	       2,        3,        5,        7,       13,       17,       19,       31,       61,       89, \
	     107,      127,      521,      607,     1279,     2203,     2281,     3217,     4253,     4423, \
	    9689,     9941,    11213,    19937,    21701,    23209,    44497,    86243,   110503,   132049, \
	  216091,   756839,   859433,  1257787,  1398269,  2976221,  3021377,  6972593, 13466917, 20996011, \
	24036583, 25964951, 30402457, 32582657, 37156667, 42643801, 43112609, 57885161, 74207281, 77232917 \
};

int main(void)
{
	mpz_t a;
	int index;

	mpz_init(a);

	// input
	fprintf(stderr, "2^p[index] - 1 = ? ");
	fprintf(stderr, "index(1 - %d) = ", max_index);
	scanf("%d", &index);
	if((index > max_index) || (index <= 0))
	{
		fprintf(stderr, "ERROR: index = %d is illegal!\n", index);
		return EXIT_FAILURE;
	}

	index--;
	printf("p[%d] = %ld\n", index + 1, known_mersenne_prime_p[index]);

	// a := 2^p - 1
	mpz_ui_pow_ui(a, 2UL, known_mersenne_prime_p[index]);
	//gmp_printf("2^%ld     = %Zd\n", known_mersenne_prime_p[index], a);
	mpz_sub_ui(a, a, 1UL);
	gmp_printf("2^%ld - 1 = %Zd\n", known_mersenne_prime_p[index], a);

	mpz_clear(a);

	return 0;
}

 Tweetに挙げたのは\(2^p\)(mpz_ui_pow_ui関数で計算)と\(2^{p – 1}\)(mpz_sub_ui関数で計算)の両方をファイルに書き出す奴だったので,後者のみ書き出すようにするとほぼ半分の時間で済む。

 10進数テキストで書き出すと大体45MBぐらいのファイルになる訳だが,ネット越しだとダウンロードする方が時間がかかる。100BASE-TXの環境でもイーブン。大体,計算そのものにかかる時間よりファイルに書き出す時間の方が問題で,更に言うと,メインメモリ内部のデータ移動の法に時間が費やされている。128MBぐらいのL3キャッシュがあれば,FLOPS(この場合は整数演算だからMIPSだけど)上げるよりもずっと高速に計算終了している筈で,さらに言えば,ファイルに書き出しせずにオンメモリで済むならもっと高速。つまりCPU内部の演算効率よりメモリ帯域(memory bandwidth)の方がよっぽど問題,というお話になるわけで。

 という自分用メモ。

[2018-01-26(Fri) 追記] 「多倍長数値計算入門(仮)」執筆開始につき,上記のCプログラムをJuliaスクリプトで書き直してみた。なーるほど,これは使いやすいや。

#  Mersenne Prime Number Calculator by GNU MP
#  Copyright (c) 2018 Tomonori Kouya
# 
#  Run: julia mersennne.jl 
# 

# Mersenne Prime Number
# 2^p - 1

# cf.) http:# primes.utm.edu/mersenne/

max_index = 50; #  2018-01-05
known_mersenne_prime_p  = [
	       2,        3,        5,        7,       13,       17,       19,       31,       61,       89,
	     107,      127,      521,      607,     1279,     2203,     2281,     3217,     4253,     4423,
	    9689,     9941,    11213,    19937,    21701,    23209,    44497,    86243,   110503,   132049,
	  216091,   756839,   859433,  1257787,  1398269,  2976221,  3021377,  6972593, 13466917, 20996011,
	24036583, 25964951, 30402457, 32582657, 37156667, 42643801, 43112609, 57885161, 74207281, 77232917
];

#  input
print("2^p[index] - 1 = ? ");
print("index(1 - $max_index) = ");
index = parse(Int, chomp(readline(STDIN)));
if (index > max_index) || (index <= 0)
	print("ERROR: index = $index is illegal!\n");
	return EXIT_FAILURE;
end

println("p[$index] = ", known_mersenne_prime_p[index]);

#  a := 2^p - 1
a = BigInt(2)^known_mersenne_prime_p[index] - 1;
println("2^", known_mersenne_prime_p[index], " - 1 = $a");

2018年1月1日(月・祝)?

 明けましておめでとうございます。本年もよろしくお願い致します。

 昨年は殆ど更新しなかったが,今年はせめて週報とか月報程度のことは書いていきたいものである。遅ればせながら英語やり始めたり,「LAPACK/BLAS入門」の出張講義したり(PDF),出るあてがあるんだかないんだか分らん本のリライトを始めたりして,年なりにできることをチマチマやってきたので,本年はそれを継続していきたい。

 ま,守れないのはいつものことだが,年初ぐらいは抱負を語るのも悪くないかな。ともかく,今後ともよろしくお願い致しまする。