体力,気力,ときどき知力

情報系大学院生 兼 HPC系ソフトウェアエンジニアのメモ書き.やったことを貼って後日にコピペ再現するために書いているので新規性・汎用性・芸術性は考えてません.数値計算,高精度演算,SIMD, vim, Linuxなど.

OpenMPのスケジューリング方式"runtime"は速いのか!?

OpenMPにはstatic, dynamic, guided,auto,runtimeと5つのスケジューリング方式がある.細かいことは本記事の末尾のリンク先に任せるが,今回のテーマはruntime.

runtimeは実行時に実行ファイルが環境変数を読みに行ってstatic, dynamic, guidedの3つのうちどれにするかを切り替える方式.

runtimeを今まで使ってないなかったのは内部の挙動がわからないからで,

 

疑問1) #pragma omp句はプリプロセッサがpthreadに変換するはずなのに,実行時に実行ファイルが環境変数を読みに行って挙動を切り替えるというのは,どういう実行ファイルが生成されているんだ.という疑問.

疑問2) そして切り替えのせいで実行時間はどのくらい伸びるんだ.という疑問

 

今日は時間もないので,疑問(1)はさておき,取り敢えず使い方と(2).まず使い方は

#pragma omp parallel for schedule(runtime)

とつけて,

OMP_SCHEDULE="static"

export OMP_SCHEDULE

とやる.

 

わかったところで疑問(2)をやる.

純粋なスケジューリング方式ごとの差は僕の選んだ問題依存だから問題によって異なる.

 

対象問題:

細かいことは研究に抵触するので避けるが,研究に使っている疎行列ベクトル積.1000回の平均時間

コンパイラicc 12.0.3

 

結果(桁が小さいので1000倍した時間,単位は秒)

static 0.72

runtime(static) 0.74 

 

dynamic 2.60

runtime(dynamic) 2.62

 

guided 0.72

runtime(guided) 0.75

 

結果,やっぱりちょっとだけ遅かった.最大でguidedの+4%だから差は小さいけど,多少は違うみたい.

実行ファイルのサイズもちょっと違っていてstaticの約2.5MBと比べて,

dynamic +256byte

guided  -72KB

runtime +5KB

と,まぁどうでもいい値だけど5KBくらい多かった.っていうかguidedってファイルサイズ小さいんだね.

ということで,アプリケーションの人とかはruntime使ってもいいと思うけど,1%でも早くしたい細かいチューニング屋さんはruntimeは駄目かもしれない.

 

OpenMP* を使用したワークシェアリング

http://www2.kobe-u.ac.jp/~lerl2/l_cc_p_10.1.008/doc/main_cls/mergedProjects/optaps_cls/ccp/optaps_par_openmp_start_c.htm

Android端末を何とか仕事用にする[Dropbox, officeアプリ]

AndroidタブレットのXeparia ZとOptimus Padを持っているが,どうしても動画とか画像とか以外の処理しかしていなかった.

基本的に自分の偏見として,Android端末は情報の受信はできるけど,加工とか作成っていう送信は出来ないとずっと思っていて,AndroidのノートPCが出ても買う気が全く起きなかった.

プリインストールのofficeアプリも何だか重いし,Android版のDropboxは逐次ダウンロード形式だからネットに繋がないとファイルが見れないし.

これでは電車の中とかで手軽にデータを見たりできないし,USBなんか刺したくないから結局ノートPCを取り出す羽目になって嫌だってことで,色々調べて,2つのアプリを発見した.

 

Androidの内部ストレージにDropboxを同期する:DropSync

500円だか600円位するんだけど,Androidの内部ストレージのフォルダを指定して,一定時間おきにDropboxのフォルダと同期する.

これでオフライン環境でも何とか仕事のデータが手に入る.

フリー版はDropboxの同期するフォルダを1つしか選べないのが欠点で,それでもいい人はFreeでいいのかもしれない.

 

Android用officeアプリ:AndrOpen Office

Open OfficeがついにAndroid向けに登場.PC版のと同じで

●Writer(文章)

●Calc(表計算)

●Impress(プレゼンテーション)

●Draw(図形描画)

●Math(数式)

●Base(データベース)

から成り立ってて,excelデータからグラフも作れたし,ソフトウェアキーボードでWordも書けた.当然日本語も大丈夫.もちろんFree.

 

結構この2つとAdobeのリーダーでも入れれば仕事用データが触れるんじゃないだろうか.

それでも,結局本格的に仕事がしたかったら今はUSBのマウスとかキーボードを頑張って持ち歩くしか無いけど,Clambookとかが発売されたらAndroidを仕事で使うことも何とか考えられるようになるんじゃないだろうか.

Clambook (発売日未定?)

http://gori.me/gadget/42026

日頃なにか便利なLinuxコマンドはないかと探すために

英語読むのは面倒だし,IT-Proとかはコマンドが全部載ってるわけじゃない気がする.

暇つぶしにLinux(Unix)のコマンドを眺めて有用なのがあれば覚えるために,良いサイトを見つけたので貼っておく.

最近のLinuxだとデフォルトで入ってないコマンドもあったけど,詳しい&便利

http://x68000.q-e-d.net/~68user/unix/prgmemo.html

OpManagerで楽に監視サーバの構築

監視サーバを作ると馴ればsmtpnagiosとかが一般的だけど,多分サーバを構築するのに1-2時間くらいかかる.面倒くさい.

生死くらいしか確認しないけどpingをcronで打つのは原始的な気がして,windows用のフリーソフト・OpManagerを使って監視サーバを作っている.

http://www.manageengine.jp/products/OpManager/

からOpManagerの無料版をダウンロードすればすぐに開始できる.

インストーラ落としてダブルクリックでインストールするだけ.

無料版は監視対象が10個まで&1ユーザしか作れないけど,自宅とか研究室レベルなら問題ない.機能は基本的に同じ.

立ち上げるとWebサーバが上がって監視状況をチェックできる.設定もWebブラウザで行う.ちゃんとnagiosと同レベルのことも設定をすればできる.

 

細かい設定は以下のサイトを参考にした.

http://www.atmarkit.co.jp/ait/articles/0609/20/news122_2.html

OpenCLのCPU版をLinuxに導入

OpenCLを導入してみた.GPUはよく分からんのでCPU版.Xeon Phiでも動くみたい.

まずは以下からSDKのVersion XE 2013 R2を落としてくる.Xeonだけって書いてあるけどCPUでも動いた.(i7-2600k)

http://software.intel.com/en-us/vcsource/tools/opencl

# wget http://registrationcenter.intel.com/irc_nas/3555/intel_sdk_for_ocl_applications_xe_2013_r2_sdk_3.1.1.11385_x64.tgz

で,解凍

tar xzf intel.........tgz

 

そうするとREADMEが入ってるので,後はもう簡単.

CPUだけinstallしたかったら(僕はこっちでやった)

sudo sh ./install-cpu.sh

Xeon Phiもやりたかったら

sudo sh ./install-cpu+mic.sh

 

なんかよく分からんのをyumで落とす.

# sudo yum install *base*.rpm *intel-cpu*.rpm

 

なんかすでにインストールされてるとか警告とか色々言い出したけど,

/opt/intel/opencl/

っていうのができていたので満足.肝心のヘッダファイルは

/opt/intel/opencl/include/CL

に入っていたので,取り敢えず今まで動いていた適当なCコードに

#include<opencl.h>

をくっつけて

g++ test.c -L OpenCLI -I /opt/intel/opencl/include/CL

ってコンパイルしたらエラーは吐かなかった.

後はCLコードを書くだけ!めんどいからそれは今度!

[メモ:調べるの込みの本日のトータル時間:25分くらい]

研究室のだれか!僕のマシンで出来るようになったと思うので誰かやって!

 

そういえば当然だけどGPUとかやるならnvidiaとかAMDから追加でドライバ落としてこないといけないみたい.

一応Geforce GTX560Tiが入っていたはずなのでいつかそれを動かしてみようと思う.

後はあれだ.Haswell買ったからintel Graphics(?)も使えるのかな.Irisだっけ

関東GPGPU勉強会で受付嬢してきた

タイトルの通り,第3回関東GPGPU勉強会に参加してきた

http://connpass.com/event/3980/

で受付嬢してきた.嬢じゃないけど.

 

知り合いの先輩が主催だから参加したんだけど,途中抜けしちゃったのと,自分がCPU屋っていうアレであんまり分からなかった.無念.

そういえば最近のAdobePhotoshopとかはOpenCLで書かれてるんだって.すげー.

どうやってGPU動かしてるのかと不思議に思っていた.

 

OpenCLもいつかやってみたいですね.環境整えるのがちょっと面倒くさそうだけど.

yumで入らないかな.yumで.

cygwin独自のコマンド

ctagsを公開するとかeclipseで遊ぶとか言いながら全然やれてない現実に泣きながら,取り敢えずcygwinまとめ.

cygwinの独自コマンドで僕が使うのは3種類.

 

1) cygstart

拡張子ごとにwindows側が決めているソフトでファイルを実行

cygstart hoge.txt     //自分の環境ではnotepadが起動

cygstart fuga.docx  //自分の環境ではmicrosoft wordが起動

 

2) getclip

windows側のクリップボードを標準出力に出力

getclip >> hoge.txt

getclip | grep fuga > fuga.txt

 

3) putclip

標準出力をwindowsのクリップボードに出力

cat hoge.txt | putclip

 

[外伝]

cygwinのyumとかapt-get的なコマンド,"apt-cyg"

確かwgetか何かで落とさないと使えないけど,apt-cyg updateとかが使えるようになる.

apt-cygはググればすぐ出てくるのでほかのサイトにまかせてねる.