2015年2月20日金曜日

Visual studio2013でMPI並列計算をする環境の作り方(全て無料)

最近はマルチコアCPUが安く手に入るようになってきました。Intel core-i7はひとつのCPUに8コアありますね。
従来はスーパーコンピュータのような汎用機でしかできなかったような高速の計算を実現する仕組みがPCでも応用され始めています。そのひとつが、分散メモリ型の並列計算で定番になっている、メッセージパッシングインターフェイス(MPI)を利用するもので、歴史があり、アメリカのアルゴンヌ国立研究所で開発されたというものです(なんかすごそうだ)。プロセス並列というやり方になります。


なお、MPI自体は一般的にはAPIあるいは、ライブラリの規格であり、実装されているものにはたとえば無料で環境によらないとされているmpichが有名です。あとは、今回紹介するマイクロソフトが無料配布しているMSMPIというパッケージがあります。




今回、このMPI並列計算環境をPC(自分のWindows7 で動作確認済み)で構築する方法について説明します。32だけでなく64bitバージョンもありますのでご安心ください。


なお、並列の形態の分類などについて詳しくは、後日記事にしますが、PCクラスターのような複数台のPCをつなげて並列化させることは考えていません。これはやるとすれば最終目標ですね。興味はありますね。ですが通信の問題などがあって難しそうです。ですので、ここでは一台のPCでの話です。プログラミングに力点を置いています。この立場だと、CPUやPCが何台でもやり方は同じです。マルチコア並列プログラミングといったほうが正確です。ですが、このやり方さえマスターできればプログラミングにおいては何CPUあろうと同じですので、実際にクラスターやスパコンを使うときでも全く同じです。つまりプログラマーとしてはこれで十分ということですね。




さて、まずはvisual studio2013 expressをインストールします。これはマイクロソフトのサイトに行ってダウンロードするだけです。無料のExpressバージョンで説明します。ネットワークインストールになりますので、多少時間がかかります。
https://msdn.microsoft.com/ja-jp/vstudio/aa718325.aspx
マイクロソフトのアカウントがあるとスムーズで、ずっと無料で使えます。
なお、これはいわゆるIDEですが、エディタの背景がデフォルトでは白で見にくいですので、設定を変えて自分のすきなようにして使うとよいと思います。結構格好良くできると思います。これについては別途記事にしたいのですが、某Eclipseなどに比べて動作がキビキビしており、快適です。補完(補間)の賢さは半端無いです。これはInteli sence(インテリセンス)というらしいのですが、明示的にコンパイルしなくてもエディタが構文のミスなどを視覚的に教えてくれるので、非常にコーディングが楽になります。これが無料なんで使ってない人は間違いなく損をしています。動作が重いとうの批判をする人がいますが、それは昔の話です。








Visual studioインストールが終わったら、次はMSMPIをダウンロード、インストールします。
これもMSのサイトから入手できます。
http://www.microsoft.com/ja-jp/default.aspx
ダウンロードを選択。
ダウンロードセンターを選択。
検索欄に「MPI」と打ち込む。
出てきたものの内、
「HPC Pack 2012 MS-MPI Redistributable Package」というのをクリック。
(なお、最新版があったらそっちをダウンロードしてもいいと思います。)


あとは、インストーラを起動してPCにインストールします。
mpi_x86.Msiなどがダウンロードフォルダにあるはずです。


これでインストールは作業は完了です。あとはVisual studio側で使うための設定をします。
これは次回の記事にします。







2015年2月14日土曜日

今回はAndroid(nexus7,2013)でブログを書いてみた。

画面がやや小さい。コピペがやりにくいかも。キーボードがほしい
。いや、音声入力いいかも!

はい。並列計算も話です。
PCで並列計算をしようと言うことで、まずはopenMPの関数の記録だ。
自分のスレッド番号の取得は、omp_thread_num() 。

全スレッド数を取得する関数は、omp_num_thread() 。
これはシステムに依存し、デフォルトではCPUのコアの数になります。見かけ上値を好きなように変えることもできます。

カッコを忘れないように。