読者です 読者をやめる 読者になる 読者になる

muranoyaのブログ

https://github.com/muranoya

pause命令

修論発表も終わって暇になったので最近は,カットシステムの「構造化並列プログラミング」を読んでいる.

この本は1年くらい前に購入して1章だけ読んで積んでいたもので,結構分厚いので読むのに根気がいる.研究分野的に,Intel Cilk PlusやIntel TBBは頻繁に出てくるので,構造化並列プログラミングも1章はサクサク読み進めることができる.まあ1章は何も新しいことは言っておらず前置きなので,真面目に読んでもあまり意味は….

ところで,カットシステムは,2年前にXeon Phiコプロセッサの本を読んだので覚えている.構造化並列プログラミングと同じような表紙だったと記憶しているが,構造化並列プログラミングはどうもIntelのプロダクトがかなり出てくる(実際Intelが買収したMIT Cilkは凄いので,Cilk Plus推しなのは理解できるが)ので,Intel関連の出版社なのかと思ったが違うらしい.

構造化並列プログラミングの最初に,Intel ArBBは関数ポインタで渡された関数も動的にインライン展開するのでベクトル化が可能,というような記述があるが,これは本当なのだろうか.Intel ArBB自体この本を読むまで知らなかったのでどんなものなのか,全く知らないのだが,関数を動的にインライン展開なんて出来るものなのか….とりあえずググったら丁寧にも日本語に翻訳された論文が出てきたので,これを後で読むことにする.

 

本題であるが,SSE2で追加されたpause命令を使うことでスリープループの性能を改善できるらしい.SSEとAVXは昔演習で使ったことがある.その時はひたすら使えそうな命令はないかとワクワクしながら調べていたものだが,こんな命令もあったのか.

SSEとAVXあたりは普通の命令も多いけど,AESやTSXなんかの少し変わった命令もある(直接使ったことはない).