消えたCUDA関連の旧ブログ記事を復元するひとり Advent Calendar 2024の記事です。
背景
ないんですよね,CUDAのhalf2に対するSIMD max/minが.(追記 2020.10.07:Ampare & CUDA 11から導入されました.)
halfにもないので愚直に書くとバラしてfloatにキャストするなりしてmax/minとって詰め戻すことになるかと.
そこをうまいことbit演算でできるよというのがこの記事です.
コード
肝となるのは__byte_perm関数.
何をしているかというのは「CUDAの整数 & bit演算関数 - 天炉48町」を見てもらえればわかると思います.
PTXで見ても分岐なしたったの9演算.
嬉しいですね.
int8なんかも最初の引き算ができれば同じ要領でSIMD max/min関数が作れそうですね.