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回の平均時間
結果(桁が小さいので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は駄目かもしれない.
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 (発売日未定?)
日頃なにか便利なLinuxコマンドはないかと探すために
OpManagerで楽に監視サーバの構築
監視サーバを作ると馴ればsmtpのnagiosとかが一般的だけど,多分サーバを構築するのに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屋っていうアレであんまり分からなかった.無念.
そういえば最近のAdobeのPhotoshopとかは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はググればすぐ出てくるのでほかのサイトにまかせてねる.