2013/12/28

VTKのデータをバイナリで書くときの注意

VTKのデータをバイナリで書くときの注意することがある. なんと

BIG ENDIAN



で書かなければならない. きっと当時はSparcとかPower PCとかで開発したのだろう.  築くまでに3日ぐらいかかった.

2013/12/25

25/Dec/2013

クリスマスですね.....





日本にクリスマスなんて無いじゃ, サンタ? なんですかそれ?





プレゼントを届ける? クロ○コとかサ○ワみたいなのですか?

2013/12/01

cmakeをつかって並行でコンパイルすると落ちる

cmake をつかってMakefileを作成した後に並行でビルドすると結構落ちることがある. error messageを見れ見るとlibがないせいでldで落ちるらしい.

ない場合は入れればいいが, 今作ってるパッケージのsub libができてなくて落ちるとこがある. cmakeの色分けはldのlinkerまでは確認しないようだ. 

そんな時はsingle threadでやるしかない.

2013/11/22

slicer-4.3.1

slicer-4.3.1できた. cmakeで全部作ってくれたので楽だった.

slicer-3系はもう開発が止まってるらしい.

2013/11/19

slicer-3.6のビルド 1

来年から今まで使ってきた高価な商用ソフトがいろいろ使えなくなるので, 現在GNUの代用がきくか色々調べている.

医療画像を弄ることが多いのでslicer 3Dをインストールして見ることにしてみた. 漢はbinaryなどでインストールしない.

slicer 3Dはcmakeで作る. 早速つくろうとしたらITKがいると言われた. libitk-devをbinaryで入れてみたが, configureが通らない.

仕方が無いのでITKを作っている. そう未だに作っているのだ. 現在コンパイルを始めてから20時間ぐらい. 4時間もあれば終わるだろうと思っていたら全然終わらない. どうも並行してビルドするとエラーを吐く部分がいくつかあるのでシングルでコンパイル中.

メモ
pythonを有効にする場合は3系のlibが必要なので注意.

2013/11/18

まだあるんですね

Tronて広がってるのか? linuxとかはよく聞くが

超漢字ってまだあるんだ.

2013/11/10

なん...だと......

ネスケでこのブログにアクセスしているやつがいる....だと....

締め切りが...

博士論文の締め切りまで後二週間.

早く審査終わらせて自分のコード書きたいよぉ。。。

もぉマジ無理。。。

博士論文かこぅ。。。

http://fesoku.net/archives/6881516.html

2013/11/08

もう二度とこんな学会行きたくない

とある東南アジアにある国との共同開催の学会に行ってきた. 今年は日本で開催された.
指導教員がsession chair持ってたので, ついでに参加せられた, 博士論文書くのに忙しいのに.

で, 行ったのはいいけどグダグダだった.

まず, 参加費振り込まれてません言われました. 振込の記録見せると, 担当者に確認するとのこと. で, ケータイで担当者に電話する ->  出ない. 自分だけじゃなくて3人に1人ぐらいこれで揉めてた. 領収書見確認のまま渡された. いいのかな ?



某の国がムスリム国家なので出た食事がすごい独特. 味微妙. 共同開催なんだから日本食も出せや. 懇親会で酒が出なくて, 酒好きの指導教員は不満タラタラ.

自分の発表の時, マイク不調しかもレーザーポインター電池なくてドットが映らない.
後々聞いたら, 小泉政権の時からの教育関係のプロジェクトらしいのだが, 某の国が色々ごねて当初の目的からかなり異なった着地点で落ち着いたらしい.

学会自体のレベルもかなり低く, keynote speechの依頼でもない限り二度と参加するつもりはない.

2013/10/27

決まってしまった

学位の第一回口頭審査の日が決まってしまった。マジやばい、まだ色々試してないことあるのに。

2013/10/25

研究室にいるめんどくさい人

私よりこの分野に6年ぐらい長くいるのに
  • この分野の専門知識がない (数学できない: テンソルすら理解してない)
  • コード読めない, 書けない. というかbatch shellすら書けない. 商用のGUIに頼りっぱなし.
  • 論文投稿しても過去3回ぐらいrejectされているのに方法を再考しない
  •  一番嫌なのは, コード, shell書いてとかお願いしてくる. 結構ガチな量
人が近くにいる.こういう人にはならないように肝に銘じておこう.

2013/10/17

Windows Surface

毎度毎度パソコンネタだが windowsのsurfaceに次はしようかと思っている. 2014年の4月に消費税が上がるそうなのでぜひその前に色々生活用品を揃えておきたい. もちろん新しいマシンを買うタイミングもそこを狙っている. 先週の日曜日にジョーシンまで行ってきた. ちなみに上新電機には生まれて初めて行った. 地元が北関東なのでヤマダvsコジマvsK'sの激戦区. 関西系のお店はなかった. でも取り扱っていないと言われた. 翌々調べてみたら, surfaceはセキュリティが硬いらしくlinuxがインストールできないらしい. Nexusあたりにするかな ?

2013/10/12

カナダ料理 プーティン

研究室でマイナーな料理を作ることが流行っている, でカナダ料理のプーティンを作ってみようという事になったがグレイビーソースがどこにも売ってない.

アマゾンにはあったけど結構たかい. それにしてもこの料理の名前はロシアの怖いウラジーミルおじさんにしか聞こえない.

2013/10/09

博士(仮)の職探し

どこがの大学のpostdocにでもなれないかと探しております. 日本のは今月の頭に結構締め切りが多くて, 逃しました. イギリスとかアメリカがやっぱり英語圏なので楽なんだろう. あんまり北の方は寒いので嫌です. 某北欧の大学とイギリスの3校あたり+日本の某研究機関を狙っているが受かるんだろうか? 大した研究やってこなかったし.

2013/10/04

しばらく自分のコードに触れない

予備審査が近いのでしばらくは遊べない。自分のコードもしばらくは更新できないな。

2013/10/03

論文投稿

とあるオープンアクセスのジャーナルに投稿したら。

なぜかReviwerではなくeditorと戦うはめになった。

向こうのバージョン管理が甘いせいで、最終版をuploadしていないのに編集者がなぜか持っているのだけれど ? ドラフト載せられたらどうしよう、黒歴史+完全に仕事探しに響いてくるのだが。 この出版社に投げるのはもうやめよう。

生活週間を改める

今まで食事は炭水化物+炭水化物+炭水化物のような感じだったから. インスタント食品とかも結構多かったし.

一週間ぐらい野菜ベースにする. キャベツ+トマト缶の野菜スープが安く上がっていい. amazonで注文すればスーパーなどで買うより安く上がって, 運ぶのも楽. 今年に入ってから3回ぐらい頼んだ.

2013/10/02

discontinous galerkin 不連続ガラーキン法

 この二冊を購入した。次の世代のソルバーはこれだろう, 数学的に結構難しいみたいだが読めるかな?

discontinous galerkinベースの非構造格子用の高精度スキームがStanford, Brown, Max Planc Inst., Imperial Collegeなどで開発が進んでいる。東大でも2007-2008に研究予算が出ていたようなのだがどうなったのだろう。オープンソースだとfluidtyに実装されているようだ。 


       

2013/10/01

高速な二次元ループの回し方

1. 普通に二次元配列回すなら 

for( j=0; j<M; j++ ){ 
 for( i=0; i<N; i++ ){
  arr[i][j] = i+j*n;
 }
} 

2. 一次元配列を使う, 連続でメモリにアクセスできるので早い

for( j=0; j<M; j++ ){ 
 for( i=0; i<N; i++ ){
  arr[i+j*n] = i+j*n;
 }
}

3. 内側のループを展開, 計算コストの高い掛け算を減らしたので, 更に早いはずだ

for( j=0, offset=0; j<M; j++, offset+=N ){
  arr[j+offset] = j+offset;
}

こうするともうちょっと早くなった記憶があるが, 確認はしていない.
for( j=0, offset=0; j<M; j++, offset+=N ){
  *(arr+j+offset) = j+offset;
}


私は三番目のでほとんどの場合書いている.  SIMD命令を使えば更に早くなるがコンパイラーに頼る人なので, 省略.

この書き方の問題は2つだ, 共同開発の場合読めない人が結構多い, 同僚に変態コーダーと呼ばれる.

変態なので, 3次元のループだって一次元にしてどんどん回しちゃいます.
for( j=0; j<L; k++ ){ 
 for( j=0; j<M; j++ ){ 
  for( i=0; i<N; i++ ){
   arr[i][j][k] = i+j*n+k*n*m;
  }
 }
}

こう書き換える
L = M*N;
for( i=0, offset_j=0, offset_k=0; j<M; j++, offset_j+=N, offset_k+=L ){
  arr[i+offset_j+offset_k] = j+offset_j+offset_k;
}

AMDのCPUのケースの内側

隣の研究室で購入してたAMDのFX series. 蓋が二重になっていたので開けてみたら某ネズ.... (ハハッ)

twitter

blogをtiwtterと同じように使っている。どうでもいいことを思いついたままに書いているのだ。他稀に役に立つことも書いた(つもりだが)。

twitterを使うべきなのだろうか

2013/09/30

太った

ヤバい、ヤバい、ヤバい、ヤバい、ヤバい、ヤバい、ヤバい、ヤバい、ヤバい、
ふとった、 ふとった、 ふとった、 ふとった、 ふとった、 ふとった、 ふとった

百円ショップのニッケル水素電池

百均で充電電池買ってきた. Eneloopとかではなくなんかいかにもパクリっぽい名前のやつ. 純正と比べてみると軽い.

必要なものが入ってないんじゃ?

2013/09/27

有限体積法の非構造格子上への実装 2

だんだんわかってきた。このリファレンスがかなり使える

http://sourceforge.net/projects/openfvm/files/Reference%20Manual/

OpenFVMはcollocate grid実装なのか、しかも壁面のfluxの計算が線形になってる。高次スキームにするにはこの辺から弄るしかないか。

collocate実装ならfull implicitの実装も実現できるな。これならば数値的な安定性もいいはずだ。

2013/09/26

金沢カレー

なんか最近金沢カレーの店に行くことが多い
  • ゴーゴーカレー 今一だった、学食より微妙
  • チャンピョンカレー 普通

寝過ごしてしまった

起きたら11:00だったぜ。社会人になったら完全にアウトだな。

2013/09/25

これで問題解決できる

 この手があったか(棒)

http://northwood.blog60.fc2.com/blog-entry-6914.html

プロのコード

旧帝大のせんせーの書いた差分のノードとか読んでるけど、みんな係数を時間更新のループ前に配列に入れて処理してる。このほうがいいのか? いつも計算するときに読んできて係数計算しているのだけれど。

大規模問題とか記憶容量がかかる仕様になってしまうのでは?

VOFコードのsurfer

VOFコードのsurferのウェブサイトが復活してたので、作ってみた。一部F77か...

2001から作って何故F77を選んだ? 

コード使いまわしたのか ?

コンパイルはさっくり完了, serialしか作ってない .

GetParCをsurferのdirに置けばとりあえずできる。ただsub dirにあるMakefileの中のインストール先を手動で全部なおせとREADMEに書いてある。そのままつくったら$HOMEにできた。HAVE_FORTRANフラグはoffにした。gcc-3.4.5以降はoffにしたほうがいいと書いてあるし。

sub dir 'test' 内を見ると正常に動いているようだ。

フランスの機関で作っているコードはどうも一般的なbuildの手順と異なることが多いような気がする。scotchとか

2013/09/24

指導教官のプログラミングスキルの腕

かなり疑問に思うことが最近立て続けに起きているのだが、しかもf90とc書けないし。今時,情報系でf77だけってひどくないか?

パンチカードでも打ってろ

2013/09/23

同僚

キャンプ用品を買ってオフィスで使っている同僚がいる。

災害時は迷わず彼についていこう

2013/09/22

lenovo G 530

amazonのtime saleにlenovo G530が連日の陳列されている。つい数カ月ほど前ならば、30分もすれば売り切れだったのにこの頃は在庫がある状態いが続いている。

さすがに需要を食い尽くしたか、amazonのtime saleの割引きは大して安くないのに消費者が気づいたのか。

はじめてみた

日本で初めてBUTを使っている人見た。イギリスでも相当古い熱力の本でも見ない限り出会えないのに。

BTU = British Thermal Unit

約 1 BUT = 1 J


2013/09/21

Surfer

VOFコードのSurferの開発もとのサーバーが落ちてるな。確かフランスの研究機関だったな。名前は忘れたけど。

Appleの新製品の発売といえば...

S. jobsの死後もブレないな

http://blog.esuteru.com/archives/7323842.html


2013/09/20

コードハック中


FEMのコードをhack中やっぱり人の書いたのをどんどん読まないとダメだ。

論文通った

論文が通りました。

これで卒業できる。

’俺、論文通ったら新しいマシン買うんだ’



とフラグを立てましたが破りました。

OpenFVM

OpenFVMいいな

OpenFOAMはソースコードが巨大すぎて読みづらい。あと自分はC++はあんまり得意じゃないので。

OpenFVMはcで書かれているし、コンパクトにまとまっている。ソースコードを見るとx-flowという会社のコードらしい元商用なのかな? アルゴリズムはsimple系ですね。速度3成分+pを陰的に解いてる。

非構造格子への有限堆積法の実装を勉強中。

sunのマシン


個人でsunのwork station( ultra 40, ultra 20, w100 )を3台保有している.

同僚によると私はヘンタイらしい.

だってsun好きだもん.

sparcのマシンを持っていないのでヤフオクで狙ってる。t1000あたりを安価で落とせないかな?

2013/09/18

kindleは今のところ文系向きだと思う

理系の専門書のkindleのサンプルをいくつかダウンロードして読んでみたけど、式の形がぐちゃぐちゃになってしまって読めたものではない。文庫本とかはストレスなく読める。

PDFで取り込めば型は崩れないけど字が小さくて読みづらい。もっと大画面のkindleが早いうちに出て欲しい。

環境

能力に恵まれた人が回りにいるのは幸いなことだ。自分との差ばかり見えて自己嫌悪に墜ちるということもあるが。

2013/09/17

有限体積法の非構造格子における実装

どうやるのかやっと見えてきた。

今考えている方法

gmshメッシュの作成したら、有限要素メッシュへ変換すればいいはずなんだけど、セルの境界面に対して垂直なベクトルと圧力と速度の格納位置で悩む。あと隣り合うセル同士のconnectivityの計算が必要。これは簡単に実装できるはずだ。

http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20070030207_2007030377.pdf

あと境界の設定とかゴーストセルいるよね? 
ゴーストセルどうやて作ったらいいんだろう? メッシャー必要じゃないのか?

あんまり参考書が出ていないんだよね。論文から起こすのは結構きつい。


 

涼しくなった

だいぶ秋らしくなって、涼しくなったのは嬉しいが窓を開けると堆肥臭い。

point cloud libraryで遊んでみた

人工衛星からのデータをpoint cloud libraryを使ってsurface dataに変換してみた。

データの容量が4.2GBあったので1/1024まで間引いて計算したが6時間ぐらいかかった。

これが完成品

東アジアが壊滅していますな。思ったよりも結構綺麗に出てた。かなりデータ量減らしたからしょうがない。

2013/09/16

これ赤字にならんのか?

Dell 新品のサーバーが2万 切るっていいのか?

http://nttxstore.jp/_II_QZX0006769

ほしいがサーバー3台もいらないしな。どうしよう

韓国軍の対ステルス機レーダー

韓国軍がステルス機でも発見できるレーダーを開発するらしい。ステルス機を持っていないけどどうやって性能確認するのだろう?

アメリカにお願いするのかな?

http://u1sokuhou.ldblog.jp/archives/50409838.html

2013/09/14

kinectほすい

kinect + OpenNI + PCL libでかなり面白いことができるみたいだ。

http://pointclouds.org/media/

遊んでみたいな。3Dスキャンとか一昔前は一回とってもらうだけでも5万ぐらいしたのに。今10,000円ぐらいでスキャナー買えるとかいい時代になりました。

ところで精度はどうなのだろう。

知り合いのSNS blog twitter

数少ない友達と知り合いのSNS, blog, twitterなどを見るのが日課になってしまった。

同じ職場の人が自分の目の届かない所で何をしているのか見えて面白い。つまり、数人はブッ飛んだ人だったのを確認できた。

これまでの経験から、Social mediaではないがE-mailはその人の性格を結構反映すると思う。

私の同僚がこれを読んで私をブッ飛んだ人と認識しないことを希望する。

論文投稿

指導教官の進めたところに論文を投稿してみた


結果

1. 詐称ジャーナル
2.出版社エジプト (現在政治的に)

やっぱりElseviorとかSpringerに投稿するべきだ。

2013/08/30

Discontinuous Galerkin

Discontinuous Galerkinなる方法があることを最近知った。

どうやら、有限体積と有限要素を組み合わせたような離散化らしい。fluidity-4.10.1にはもう実装されている。これを元にFlux reconstructionなどのスキームが現在開発中らしい。

現在、旬を過ぎたとか思っていた、有限体積の非構造実装とか勉強中。

 自分の引き出しが少ない。

2013/08/22

Praviewのコンパイル Paraview-3.8.1 MPI並列


paraview-3.8.1をビルドした時のメモ

root権限のないsuse enterprise上で作成した。Qtを作成するときにGLIBCXXのバージョンが足りずにエラーを履いたのでgcc-4.8.0を作成した。ffmpegをリンクしなかったので動画作成できない、画像はでる。core2世代のマシンに最定期化してある。それ以外のマシンでは動かない可能性があるので、コピペするときには注意すること。


まずgcc-4.8.0を作った。

gmp-5.0.5, mpfr-3.1.1とmpc-1.0.1をコンパイルしgcc-4.8.0をコンパイルする。

1. Build Gcc

---------------------------------------------------------------------------------------------------
    gmp-5.0.5
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=gmp-5.0.5

MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        ${PREFIX} \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD} ${TARGET}
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    mpfr-3.1.1
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=mpfr-3.1.1

MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD} ${TARGET} \
        ${PREFIX} \
        --with-gmp=/work/paraview-build
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    mpc-1.0.1
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=mpc-1.0.1

MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD} ${TARGET} \
        ${PREFIX} \
        --with-gmp=/work/paraview-build
        --with-mpfr=/work/paraview-build
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    gcc-4.8.0
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=gcc-4.8.0

MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD} ${TARGET} \
        ${PREFIX} \
        --with-gmp=/work/paraview-build
        --with-mpfr=/work/paraview-build
        --with-mpc=/work/paraview-build
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
#make check >&  mycheck.log
make install >& myinstall.log
---------------------------------------------------------------------------------------------------



2. Build paraview


次にparaviewのビルドを行う。vtk-5.10.1とqt-4.6を作成しparaview-3.8.1をコンパイルする。

qt-4.6をvtk-5.10.1の作成前に作る必要がある。

cmake-2.8.1, tcl-8.2.0, tk-8.2.0 はvtk-5.10.1のコンパイルに必要だった。systemにインストールされているのならば、作る必要はない。

paraviewの動画作成を有効にする場合は、ffmpegもvtkをビルドするときにリンクする必要がある(未確認)


---------------------------------------------------------------------------------------------------
    cmake-2.8.1
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=cmake-2.8.10.2

MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        ${PREFIX}
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    openmpi-1.6.2
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=openmpi-1.6.2

MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        ${PREFIX} \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD}
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    tcl-8.2.0
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=tcl8.6.0/unix
MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        ${PREFIX} \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD} ${TARGET}
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    tk-8.2.0
---------------------------------------------------------------------------------------------------
#!/bin/sh

PKG=tk8.6.0/unix
MACHINE=core2

CONFIG_PATH=../../0.src/${PKG}/configure
MACHINE_OPT="-mtune=${MACHINE} -march=${MACHINE}"
FLAGS="-s -Os "
PREFIX=--prefix=/work/paraview-build
HOST=--host=x86_64-suse-linux-gnu
BUILD=--build=x86_64-suse-linux-gnu
TARGET=--target=x86_64-suse-linux-gnu

echo    "
        ${CONFIG_PATH}    \
        ${PREFIX} \
        CFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        CPPFLAGS=' ${FLAGS} ${MACHINE_OPT} ' \
        ${HOST} ${BUILD} ${TARGET}
    " > runconfig.sh

sh ./runconfig.sh >& myconfig.log
make -j 8 >& mymake.log
make check >&  mycheck.log
make install >& myinstall.log

---------------------------------------------------------------------------------------------------
    qt-4.6.0
---------------------------------------------------------------------------------------------------
../../0.src/qt-everywhere-opensource-src-4.6.0/configure \
    -prefix /work/paraview-build \
    -release \
    -opensource \
    -largefile \
    -optimized-qmake
---------------------------------------------------------------------------------------------------

CAUTION: QtWebKit may fails in paraview build

    vtk-5.10.1

ccmake & cmake, MPI and python warper enabled

CAUTION: qt 5.X is not supported yet. Try vtk-6.x may work.

    paraview-3.8.1

ccmake & cmake, MPI and python (numPy required) enabled

2013/08/07

新しいスーパコンピュータのOSを日米で開発


ネタが古いが中の人の話を昔聞いたので書いてみようと思う。
 ネタとしては28/June/2013だったか。

京を作るときにOSで結構Fujitsuが苦労したらしい。ファイルシステムにはlusterが使われているが、これが制作者が使用を仮定した最大のサイズを京クラスになると超えるらしい。

そのため、バグがかなり出たそうな。この辺が原因じゃないかと思う。


http://linux.slashdot.jp/story/13/06/27/0619227/%CE%A3%E3%80%81TRON%E5%86%8D%E3%81%B3%EF%BC%9F-%E3%82%B9%E3%83%91%E3%82%B3%E3%83%B3%E9%96%8B%E7%99%BA%E3%81%A7%E6%97%A5%E7%B1%B3%E3%81%8C%E5%8D%94%E5%8A%9B%E3%80%81%E6%96%B0OS%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%B8

2013/06/14

失われた時間

誰かくだらないことで失った時間をかえしてくれ

sprintf() がc++で呼べなくて一時間ぐらい悩んだ。c++ではfstreamの中で定義されているようだ。なぜcstdlibに入れないんだ?

2013/04/29

Intelの告知によると

第4世代Coreプロセッサは,3337兆2000億ns(ナノ秒)後に登場する

 らしいです 。

ちなみに換算すると約38日後。つまりGHzで動くのは間違いなさそうだ。

2013/04/25

最も使えなそうなUnixコマンドを見つけてしまった

コマンド
icotopbm

 説明
sun のicon fileをpbmに変換する



4つSが出るだけとかじゃないよね? だったらsl並に使えなそう.
sun iconとかいう画像のフォーマットがあるのか?




2013/04/19

digital image correlation lib

画像処理の位置分野のdigital image correlation libraryを探している。

出来れば三次元対応のやつ。Bruck 1989のを実装しようと思ったけどコレすごい大変。

OpenCVに乗ってるかと思ったらなかった。OpenPIVとかどんなアルゴリズムになっているのだろう?

2013/04/03

UCD inp の書き換えスクリプト

Fluent の結果をparaviewで見たいのにそのままだとベクトル表示してくれない時がある. AVSとか商用のはそのままでも行けることが多いけど... やっぱりただで並列可視化できるのはありがたい.

そこで, 形式変換はしないけどparaviewでも表示可能な, inpに書き換えるスクリプトを書いてみた. やっつけなのでp, u, v, w と wallshear stressの場合しか動きません. 

 #!/usr/bin/python

#------------------------------------------
# inp file converter:
#------------------------------------------
#
# convert fluent output for paraview
#

import sys

argvs    = sys.argv
argc    = len( argvs )

if( argc != 3 ):
    print ' Usage python %s {inp_file.inp} {out_file.inp}'
    quit()

inp_file = argvs[1]
out_file = argvs[2]

fin = open( inp_file )
in_lines = fin.readlines()
fin.close()

fout = open( out_file, 'w' )
for line in in_lines:
    if line == "5 1 1 1 1 1\n":
        fout.write( "3 1 3 1\n" )  
    elif line == "x-velocity, si\n":
        fout.write( "velocity, si\n" )  
    elif line == "y-velocity, si\n" or line == "z-velocity, si\n":
        0
    else:
        fout.write( line )

2013/03/25

intel xeon phi

officeにintel MICが入ったが、研究室の同僚の陰謀により。 私の机のすぐ隣に置かれることになった。

supermicroの鯖なので非常にうるさい。 一番jobを投げている人の横に置くべきだと思う。

2013/03/14

paraviewをコンパイルしてみた

やっぱりroot権限のあるマシンでコンパイルするのは楽でいい。

qt - 4.8.3
openmpi-1.6.2

は自分で作った。あとはaptで全部取ってくる。

Paravierw-3.8.1/VTK/utilities/vtkmetaio/vtkmetaio.cxxの804行目から814行目にばぐがある。 てゆかこれver3.12でもまだ治っていないはず。 std::がないだけなのでサクサクっと手で直してあげるとあとは問題なくコンパイルできた。

並列で可視化してみたけど、コンパイルしたマシンが10年ぐらい前のモデルなのでどちらにしろ遅い。

2013/03/11

OpenFOAMのCFLAGSとCXXFLAGS

etc/config/setting.cshのなかを変えても反映されていない。 wmakeを直接書き換えなきゃダメだね。 カキカキしてるとGCCARM7なんてゆうのもあるのに気づいた。 hardwareに依存するところなんてあったけ?
 


2013/02/25

科学計算のためのc++テンプレートプログラミング


行列式の足し算などを行うとき、次のようなコードをかくと早いらしい。
処理によってはfortran, blasとかMKLより速いと公式のページにある。

ここのスライドを参考につくってみた。

 http://www.google.co.jp/url?sa=t&rct=j&q=advanced%20template%20programming%20&source=web&cd=1&ved=0CDUQFjAA&url=http%3A%2F%2Fitee.uq.edu.au%2F~conrad%2Fmisc%2Fsanderson_templates_lecture_uqcomp7305.pdf&ei=Xx4rUarGLvHsmAXbaw&usg=AFQjCNFiGSmasUA2pfRuHGdVExcyw5tUaA&bvm=bv.42768644,d.dGY&cad=rja

なぜ早いかというと足し算のあとに一時的な行列の実態が作られないからだそうだ。 バイナリーになおすとoperator+( , )から呼び出されているはずのGlueのコンストラクタがないらしい。

 こんな感じのmeta programmingした数学ライブラリーがarmadilloとして配布されている

#include<iostream>

class Glue;

class Matrix{
public:
    Matrix();
    Matrix( int in_rows, int in_cols );
    void set_size( int in_rows, int in_cols );
    void clear();
    void printm();

    Matrix( const Matrix & X );
    const Matrix & operator=( const Matrix & X );

    Matrix( const Glue & X );
    const Matrix & operator=( const Glue & X );

    int rows;
    int cols;
    double *data;
};

class Glue{
public:
    const Matrix& A;
    const Matrix& B;
    Glue( const Matrix& in_A, const Matrix & in_B )
    : A( in_A )
    , B( in_B ){}
};

/*--------------------------
    Glue
---------------------------*/

const Glue operator+( const Matrix& A, const Matrix& B ){
    return Glue(A,B);   
}

/*--------------------------
    Matrix
---------------------------*/
Matrix::Matrix(){
}

Matrix::Matrix( int in_rows, int in_cols){
    cols = in_cols;
    rows = in_rows;
    set_size( rows, cols );
}

void Matrix::set_size( int in_rows, int in_cols ){
    data = new double [ in_rows*in_cols ];   
    for( int i=0; i<in_rows*in_cols; i++ ) data[i] = i;
}

void Matrix::clear(){
    for( int i=0; i<rows*cols; i++ ) data[i] = 0.0;
}

void Matrix::printm( ){
    for( int j=0; j<rows; j++ ){
        for( int i=0; i<cols; i++ ){
            std::cout << " " << data[i+j*cols];
        }
        std::cout  << std::endl;
    }

}

const Matrix & Matrix::operator=( const Glue & X ){
    const Matrix & A = X.A;
    const Matrix & B = X.B;

    set_size( A.rows, A.cols );

    for( int i=0; i < A.rows * A.cols; i++ ){
        data[i] = A.data[i] + B.data[i];
    }
    return *this;
}

Matrix::Matrix( const Glue & X ){
    operator=(X);
}

int main(){
    Matrix m1(4,4);
    Matrix m2(4,4);
    Matrix m3(4,4);

    m3.clear();

    m3 = m1 + m2;

    //m1.printm();
    //m2.printm();
    //m3.printm();
return 0;}

mainのなかのをコメントアウトすれば結果が出てくるよ。 実際OpenFoamとかはこういう書き方になっているが、Openfoamのは一時ファイルを作るやり方で書いてある。

OpenFOAMをmetaできるか考えてみたが、privateの部分をpublicに治す必要がある。 つまりクラスを使う意味がなくなってしまうのでは? そして、やっぱりコードの抽象度は実行速度とは反比例する とおもう。情報の人はこのように書きたいのだろうけど、流体コード屋としては非常に書きづらい。 もっと低いレベルで書いたほうがしっくりくる。

2013/02/04

日本語の英訳 wikipedia

お笑いの’オチ’は英語でpunch lineらしい。

http://en.wikipedia.org/wiki/Punch_line

http://ja.wikipedia.org/wiki/%E8%90%BD%E3%81%A1

なんか違うと思うんだけど、関西の人あってるの?

2013/01/12

gcc-4.6.* gcc-4.7.* のavx命令セットを有効にするためのコンパイル

sandy世代のXeon機のクラスターがあるので折角だからavx instruction setの使えるgccを作ってみた

root持ってないマシンなので、作るのが大変だった。

gcc-4.6.3はで来たけれども, gasのバージョンが低くて-mtune,-marchにavxオプションつけると落ちた。binutils-2.23を入れたら行けました〜( ´ ▽ `)

gcc-4.7.2も挑戦したけどlimit.hがないと言われるlibcは入れるの面倒くさいのでパスする。gcc-4.7系はこれが必要になったみたい。

2013/01/08

OpenFoam-1.6-ext

なんかコンパイル通らないんですけど、root持ってないから、いろいろコンパイルして入れたりで、三日ぐらい格闘中。

パスがおかしくね? 開発版だからか? 安定版はどこだ?

goolgeのグループ見ると結構コンパイルできなくなることがあるみたいだ。やっぱり会社が管理しているとしっかりしているんだな。

まとめページ

      

リンク

The Wizard of Science
友達のブログ文化人類学とか難しい話をしております。あとホームページから自作ゲームも配布。