@techreport{oai:ipsj.ixsq.nii.ac.jp:00098692,
 author = {神谷, 智晴 and 丸山, 剛寛 and 大野, 和彦 and Tomoharu, Kamiya and Takanori, Maruyama and Kazuhiko, Ohno},
 issue = {6},
 month = {Feb},
 note = {近年,GPU 上で汎用計算を実行する GPGPU が注目されている.現在主流な開発環境である CUDA では,高級言語で記述することが可能だが,GPU の複雑なメモリ構造を意識してプログラミングする必要がある.これに対し,我々は単純なメモリ構造モデルでプログラミング可能な MESI-CUDA を提案している.しかし,現在の MESI-CUDA 処理系が生成するコードは最適化が不十分であり,手動最適化を施した CUDA コードと比べて実行時間が長くなることがある.一例として,GPU ではグローバルメモリの他,低容量だがアクセスレイテンシが短いシェアードメモリが複数存在し,手動最適化では両者を明示的に使い分ける.しかし従来の MESI-CUDA 実装ではグローバルメモリしか使用しない.そこで,我々は MESI-CUDA 上でシェアードメモリを用いるコードを自動生成する手法を開発している.本研究では,従来手法に対しシェアードメモリへのデータ転送部分の改良を行った.シェアードメモリへデータを転送する際,実行中のスレッドに合わせて格納するデータを入れ替えることでシェアードメモリの利用効率を向上させた.また,データを単純に分割して各シェアードメモリに格納するだけでなく,境界部分を重複して格納できるようにした.これにより従来手法では対応できなかったプログラムの最適化を可能としている., The performance of Graphics Processing Units (GPU) is improving rapidly. Thus, General Purpose computation on Graphics Processing Units (GPGPU) is expected as an important method forhigh-performance computing. Major developing environment, such as CUDA, enables GPU programming using C, but the user must handle the complicated memory architecture. Therefore, we are developing a new programming framework named MESI-CUDA, which provides a simple memory architecture modelautomatically generating low-level CUDA code. The current implementation of MESI-CUDA may generate inefficient code compared with the hand-optimized CUDA program, because the auto-generated code only uses the global memory of GPU. In this research, we improve our conventional method of transferring data to shared memory. Changing storing data in accordance with executing threads improves efficiency of using shared memory. We propose storing not only divided data but also data on the boundary doubly. These make it possible to optimize program which our conventional method cannot optimize.},
 title = {GPGPU処理系の自動最適化手法におけるシェアードメモリへのデータ転送方法の改良},
 year = {2014}
}