2020-01-01から1ヶ月間の記事一覧

OpenMPの挙動を見る

少し前、ちょっと面白い挙動に出くわしたので、順を追って説明しておこうと思った。知ってる人には当たり前のことが書かれているので下の方まで飛ばしてくれても構わない。 OpenMPはプラグマを書くだけでメモリ共有並列化ができるというやつで、手をつけやす…

CMake 3.16でprecompiled headerがサポートされていた

CMakeの最新バージョン、3.16でtarget_precompile_headerがサポートされていた。ドキュメントは以下の通り。 cmake.org precompiled headerは、大規模なプロジェクトなどで変更がないのに様々な.cppファイルから何回もインクルードされるヘッダーファイルを…

-ffinite-math-onlyでも動くNaN/infチェック

以前こういう記事を書いた。 in-neuro.hatenablog.com まあNaNじゃないことを仮定しての高速化なんだからstd::isnan(x)を常にfalseだと思ってdead code eliminationするのは当たり前じゃんという気はするが、備忘録的に。 とはいえ、コンパイルオプションに-…

nvccのホスト用コンパイラも意識すべき

nvccはホスト(CPU)側のコードを生成するのはホスト用のコンパイラ(gccとか)に任せており、これは--compiler-binder <path>で指定できる。 以下nvcc --helpから抜粋。 --compiler-bindir <path> (-ccbin) Specify the directory in which the host compiler executabl</path></path>…

thrustにasyncサポートが入っていた

thrustというライブラリがある。 thrust.github.io 直接使ったことがなくても、CUDAをインストールしたら付いてくるので知らずにインストールしている人は多いと思う。 これはCUDAをC++で使う上で最高レベルに便利なライブラリで、もはやこれ無しでCUDAプロ…

2019年にやったこと

多分細々したことをもうちょっとやってるけど忘れた。 書いてない部分で去年書き上げた論文のためのデータ集めとか研究用ソフトの開発とか解析とか先行研究調査とか論文執筆をしてる。一つは同僚と一緒に(co-1st)、一つは一人で。開発を研究の隙間でやってい…