CUDA 9.2 WMMA API fill_fragmentのバグ

アルバイトでTensorCoreを使用したプログラムを作成していた際に発見し,NVIDIAの方に調査してもらったところ再現性のあるバグということがわかりました. CUDA 10.0では再現されません.

バグの内容

nvccのオプションにデバッグオプション-Gを指定した上でnvcuda::wmma::fill_fragmentを呼ぶとcudaFree, cudaFreeHostなどでアラインメントエラーが出る.

misaligned address

検証コード

gitlab.momo86.net : mutsuki/nvcc-bug

バグのその後

NVIDIAは最新のCUDAしかメンテナンスしないとのことです.
CUDA 10.0以上に上げることで対応するしかなさそうです.
試してはいませんが,mma.hのfill_fragment関数はCUDA 9.2からCUDA 10.0で変更されており,この変更箇所を自分のコードに持ち込むことで無理やり対応することができるかもしれません.

参考文献

カテゴリー:CUDA
記事作成日:2018-11-02