2012年1月31日火曜日

mpiを使う上でのの初歩的ミス




server1@test2_balance> mpirun --hostfile hosts -np 5 ./ali2d_peak_mpi.py flip001_s4_c64.hdf ref_prj_s4_c64.hdf
--------------------------------------------------------------------------
Failed to find or execute the following executable:

Host:       hoge23
Executable: ./ali2d_peak_mpi.py

Cannot continue.
--------------------------------------------------------------------------
こういう時は
chmod 777 ali2d_peak_mpi.py
と実行権限を与える。

このエントリーをはてなブックマークに追加



2012年1月30日月曜日

存在する時にだけリストの要素を返す方法






元ネタはPython Cookbook より

このエントリーをはてなブックマークに追加



2012年1月29日日曜日

Frealign必要メモリ2



画像サイズ: IBLOW:




計算結果:



var s = 'string = 文字列';
p(chars = s.split(''));
p([].slice.call(s));
p([].map.call(s, function( c ){ return c.charCodeAt(0) }));
try{
    p([].shift.call(s));
    p(s);
    p([].pop.call(s));
    p(s);
    p([].push.call(s, 'string'));
    p(s);
    p([].unshift.call(s, '文字列'));
    p(s);
}catch(e){
    p(e);
}



このエントリーをはてなブックマークに追加



python:デコレータ




参考サイトは
http://satoshi.blogs.com/life/2009/11/python%E5%85%A5%E9%96%80%E3%83%87%E3%82%B3%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%AF.html

このエントリーをはてなブックマークに追加



2012年1月28日土曜日

Javascript:splice()



プログラム:
出力:
エラー:

splice()
1st arg => 挿入削除が始まるべきアレイのポジション
2nd arg => アレイから取り除くアレイの数。
このエントリーをはてなブックマークに追加



Javascript事始め



プログラム:
出力:
エラー:

このエントリーをはてなブックマークに追加



2012年1月27日金曜日

好きな事にバカになる 細野秀雄



細野秀雄は論文の引用件数世界一の学者である。
研究室http://www.msl.titech.ac.jp/~hosono/ 
彼の本、好きな事にバカになるは本当に刺激的な本である。
もっとも好きなフレーズは「All or Something」
何かを真剣に取り組んだ時、それがその時点で失敗だったとしても必ず何か次ぎにつながることになる。全くNothingなどということはない。スティーブ・ジョブズの言葉にも過去のドットが今つながるというのがあるが、それに近いものを感じた。

恐れずに先に進み続ける姿勢こそ、とても大切である。

Again, you can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something - your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life. --Steve Jobs


このエントリーをはてなブックマークに追加



2012年1月25日水曜日

sshでパスワードなし接続




次のスクリプトを走らせましょう。
これでうまくいくはず!!!
#!/bin/sh
hosts = "puzzel11 puzzle12 puzzle14 puzzle15 puzzle16 puzzle17 puzzle19 puzzle20 puzzle21 puzzle23 puzzle24"
user = "mame"

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
for host in ${hosts}
do
 ssh ${user}@${host} 'ssh-keygen -t rsa'
 ssh ${user}@${host} 'cat ~/.ssh/id_rsa.pub' |cat ->> ~/.ssh/authorized_keys
done

for host in ${hosts}
do
 scp ~/.ssh/authorized_keys ${host}:~/.ssh
 ssh ${user}@${host} 'chmod 700 ~/.ssh; chmod 600 ~/.ssh/*'
done

exit
うまくいったよー。
このエントリーをはてなブックマークに追加



2012年1月22日日曜日

Bloggerで数式を使う方法



方法1
Texclip 2.3で数式を画像にしてそれを貼付ける。

方法2
http://irrep.blogspot.com/2011/07/mathjax-in-blogger-ii.html
で紹介されているスクリプトを<head>の直後に入れる。
そうすると$e^{i\pi}=-1$とlatexで書いた部分が数式に変換される。
$e^{i\pi}=-1$
方法2の方が断然良さそう。 例をあげていくと、
$\sin{x}+\tan x , \log_{10} x$
$\sin{x}+\tan x , \log_{10} x$

$ S_n=\displaystyle\sum_{k=1}^{n} (x_k)^2 $
$ S_n=\displaystyle\sum_{k=1}^{n} (x_k)^2 $
\[ I=\int_{0}^{ \frac {1}{2}} \frac{x}{\sqrt{1-x^2}} dx \]
\[I=\int_{0}^{ \frac {1}{2}} \frac{x}{\sqrt{1-x^2}} dx\]
このエントリーをはてなブックマークに追加



2012年1月21日土曜日

Python:MyMPIで円周率の計算バージョン1



def f(x):
    return 4.0/(1.0+x*x)


def main():
    import numpy
    import mpi
    from mpi import mpi_init, mpi_finalize
    from mpi import mpi_comm_size, mpi_comm_rank, MPI_COMM_WORLD
    from mpi import mpi_reduce, mpi_bcast, mpi_barrier,mpi_recv, mpi_send
    from mpi import MPI_SUM, MPI_FLOAT,MPI_INT,MPI_TAG_UB
    import sys

    sys.argv = mpi_init(len(sys.argv),sys.argv)

    number_of_proc = mpi_comm_size(MPI_COMM_WORLD)
    myid = mpi_comm_rank(MPI_COMM_WORLD)
    main_node = 0
    n = 10000
    
    #mpi_bcast(n, 1, MPI_INT, 0, MPI_COMM_WORLD)

    h = 1.0 / n
    sum = 0.0

    for i in range(myid,n,number_of_proc):
        x = h * (i -0.5)
        sum += f(x)

    mypi = h * sum

    #mpi_barrier(MPI_COMM_WORLD)
    
    cpi = mpi_reduce(mypi, 1, MPI_FLOAT,MPI_SUM, 0, MPI_COMM_WORLD)

    if myid == main_node:
        print cpi
    
    mpi_finalize()

if __name__=="__main__":
    main()

結果は [ 3.14179277] 

お試しあれ。


このエントリーをはてなブックマークに追加



Appleが教科書の分野に参入



日本の教科書の市場規模(平成19年度資料)は
約650億円
出版社にとってはドル箱市場である。
なぜなら、これほど安定していてしかも巨大な市場はあまりないからである。
(不況になったからといって教科書の点数が減るわけでもあるまい)

小学生児童数、約700万人
ipadを700万人に配ると、
700万人*4万円 = 2800億円
(結構かかるのね、教科書の電子化は)

これが全部電子教科書にかわれば、コンテンツ費用だけになるので、コストを1/10
にすることも可能であろう。
とすると、2800÷(650-65) = 4.7
だいたい5年でもとがとれる計算ですね。
悪くないかも。

appleに廉価版ipadを作ってもらって(間違いなくappleは頼まなくても作ってくると思う)、それを配れば、もっとかかる費用を低減できると思う。



このエントリーをはてなブックマークに追加



2012年1月20日金曜日

Python でお気楽並列コンピューティング:MYMPIの使い方




example1.py
import numpy
from numpy import *
import mpi
from mpi import *
import sys
sys.argv = mpi.mpi_init(len(sys.argv),sys.argv)
print "after ",len(sys.argv),sys.argv
myid=mpi.mpi_comm_rank(mpi.MPI_COMM_WORLD)
numprocs=mpi.mpi_comm_size(mpi.MPI_COMM_WORLD)
print "Hello from ",myid
print "Numprocs is ", numprocs
print "python is not about snakes"
mpi.mpi_finalize()

mpirun --hostfile hosts -np 40 python example1.py

hosts ファイルの書き方

hoge@192.168.1.11 cpu=4 
hoge@192.168.1.12 cpu=4 
hoge@192.168.1.15 cpu=4
hoge@192.168.1.16 cpu=4 
hoge@192.168.1.17 cpu=4 
hoge@192.168.1.19 cpu=4 
hoge@192.168.1.20 cpu=4 
hoge@192.168.1.23 cpu=8 
hoge@192.168.1.24 cpu=16

とすること

server1@~/test_mympi> mpirun -host hoge@192.168.1.14 -np 3 python example1.py
Traceback (most recent call last): File "example1.py", line 2, in import numpy ImportError: No module named numpy Traceback (most recent call last): Traceback (most recent call last): File "example1.py", line 2, in import numpy ImportError: No module named numpy File "example1.py", line 2, in import numpy ImportError: No module named numpy

となぜかnumpyを認識していないノードはhostsファイルから除く。
後日なぜかを調査予定。


うまくいくと、以下のようになる


server1@~/test_mympi> mpirun --hostfile hosts -np 10 python example1.py
[puzzle15:26782] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle11:27440] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle15:26783] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle12:23530] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle11:27439] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle11:27441] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle11:27442] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle12:23529] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle12:23531] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
[puzzle12:23532] mca: base: component_find: unable to open osc pt2pt: file not found (ignored)
after  1 ('example1.py',)
Hello from  6
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  8
after  1 ('example1.py',)
Hello from  2
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  0
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  3
Numprocs is  10
python is not about snakes
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  9
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  4
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  5
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  7
Numprocs is  10
python is not about snakes
after  1 ('example1.py',)
Hello from  1
Numprocs is  10
python is not about snakes

このエントリーをはてなブックマークに追加



Python でお気楽並列コンピューティング:MYMPIのインストール



http://sparx-em.org/sparxwiki/MPI-installation
からMYMPIをインストールしてきて展開。

python 2.5.2
openmpi-1.2.8

が入っていれば、
python install_mpi.py --mpiroot=/home/openmpi/
でオッケー。

私はtcshを使っているので、.cshrc ファイルに
setenv LD_LIBRARY_PATH $HOME/openmpi/lib
とパスを通しておく。

これで
python
import mpi
としてうまく行けばオッケー。



このエントリーをはてなブックマークに追加



役立ちそうなリンク集



計算科学振興財団 MPIの設定の仕方が書いてるよ。

http://kenknown.blog42.fc2.com/blog-entry-92.html
パスワードなしsshの設定方法、一括設定のスクリプト
このエントリーをはてなブックマークに追加



2012年1月19日木曜日

Python でお気楽並列コンピューティング:openmpi-1.2.8 のインストール



今、MYMPIを使おうと四苦八苦していますが、
その覚え書きを書いていく。

まず、openmpi-1.2.8の導入で躓いた。
libtool のバージョンが違うというエラー。
コンピュータのlibtoolのバージョンは1.5.8。
2.1aを要求されているようなので、libtoolのサイトに探しに行ったが、
無い。
仕方なく2.4.2なるものを入れてみたがやっぱりこけた。
2.2.2にしてもこける。

make distclean でフォルダーを初期化(make maintainer-clean)。

make distclean
autoreconf --force --install
./configure --enable-shared --prefix=/home/openmpi/
make
make install

make のところでやっぱりこける。

../../libtool: line 463: CDPATH: command not found
../../libtool: line 1266: func_opt_split: command not found
libtool: Version mismatch error.  This is libtool 2.1a, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.1a
libtool: and run autoconf again.

なんやねん!

[追記]
さらにググってみる。
m4のバージョンが1.4.11だけどこれがだめなのか????
http://blog.k-tai-douga.com/article/26604536.html

libtoolまわりを疑ったがどうやら
tarballからの展開してインストールするのにauto tools は必要ないらしい。
(openmpi Q&Aより。)

そこでもう一度tarballの展開からはじめて見た。

tar jxf openmpi-1.2.8.tar.bz2
cd openmpi-1.2.8
./configure --enable-shared --prefix=/home/openmpi/
make all install
なんと通った。

考察
make all install が有効だった?(make  make installではなく)
結局なんで最初うまくいかず、今回うまくいったのかよくわからないけど。。。。

良かったー ;-)

[自分用メモ書き]
tar jxf openmpi-1.2.8.tar.bz2


参考サイト
http://www.fireproject.jp/feature/automake/basic/intro.html





このエントリーをはてなブックマークに追加



Python でお気楽並列コンピューティング:MYMPIとpyMPIの違い



両者はmpi のpython ラッパーであるが、その違いは。。。。

pyMPI はモジュールを伴ったPython インタプリタでありMPI_Initを明示的に呼び出すことはない。
mympi は明示的にMPI_Initを呼ぶ。つまり、より細かく、MPI_Initを呼び出すタイミングを制御できる。また、MYMPIはインタプリタではなく単なるモジュールなため、それだけサイズがちいさい。
このエントリーをはてなブックマークに追加



2012年1月16日月曜日

Bloggerで記事直下にAdsenseを表示する方法



レイアウトの変更では記事直下にアドセンスを表示することができません。
でも、どうやら経験的に一番クリックされるのは
記事直下の広告のようです。
確かにgoogle adsenseサイトで確認すると、記事直下に貼付けたものが一番クリックされています。

いままでは、コピー&ペーストで記事に直接広告を貼り付けていましたが、これでは効率が良くないので、bloggerで記事直下にアドセンスを貼り付ける方法を探してみました。
http://blogger-customize-tips.blogspot.com/2009/01/insert-adsense-tag-primary.html
のサイトが詳しいのですが、
自分なりにまとめてみました。

Adsense タグを

<script type="text/javascript"><!--
google_ad_client = "pub-nnnnnnnnnnnnnnnn";
google_ad_slot = "nnnnnnnnnn";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"
type="text/javascript">
</script>

から

&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-nnnnnnnnnnnnnnnn&quot;;
google_ad_slot = &quot;nnnnnnnnnn&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;
type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;

に変更します。
Bloggerはとても厳格な標準化XMLを採用しているのでHTMLエンティティ文字にない< > "などの文字を使うとエラーになり表示できません。
< → &lt;
> → &gt;
" → &quot;
に変更します。
(Emacs などのエディタで置換機能を使えば一発です。)

1.   bloggerにログインしてブログを選びます。

2. 「テンプレート」タブから「HTMLの編集」を選択して

3. 「ウィジェットのテンプレートを展開」にチェックマークを入れます。(これを入れないと<data:post.body>が表示されません。)

4.   <data:post.body>を探して、その直下にコードを挿入します。



このエントリーをはてなブックマークに追加



英語丸のみ辞典



英語丸のみ辞典は実は名著なんじゃないかと思う。
2、3語の短文表現が載っていて、「ゴミ」や「テレビ」など日常のテーマごとにわかれている。
 短い表現なので覚えやすいし、意外と盲点の表現も載っている。 英語は最後はどんだけフレーズを使えるかが重要だからなー。

このエントリーをはてなブックマークに追加



2012年1月11日水曜日

Frealign 必要メモリ




画像サイズ: IBLOW:


計算結果:

このエントリーをはてなブックマークに追加