@techreport{oai:ipsj.ixsq.nii.ac.jp:00198163, author = {李, 珍泌 and 渡部, 裕 and 佐藤, 三久 and Jinpil, Lee and Yutaka, Watanabe and Mitsuhisa, Sato}, issue = {26}, month = {Jul}, note = {従来の数値計算を行う HPC アプリケーションや近年注目を集めているディープラーニングの分野では独立した小さい計算カーネルを高いスループットで並列処理する技術が活発に研究されている.BLAS カーネルの並列処理を簡単に記述するため,複数の計算カーネルをまとめて一つの API で処理する Batched Kernel API が提案されている.GPU などのメニーコアアーキテクチャは高い電力効率を達成できるが,Batched Kernel API を使うには手動のコード変換が必要である.本研究では OpenMP のタスクプログラミングモデルで Batched Kernel API を利用するコード変換技術の提案を行う.ユーザは数値計算のカーネルを task 指示文で記述する.処理系にはバッチ化できる API が事前に登録されており,そのような計算カーネルが複数並列に実行できるときはバッチ化を行う.NVIDIA GPU 向け cuBLAS を用いてバッチ化を行うプロトタイプ処理系を実装した.DGEMM カーネルを呼び出すタスクを処理系が検知し,Batched DGEMM API に変換する.Blocked Cholesky Decomposition を用いた性能評価では処理系によって複数の DGEMM カーネルがバッチ化されることが確認できた.DGEMM のみの計算性能は行列 4096×4096,小行列 128 のケースで逐次実行の 4 倍に高速化されるが,OpenMP のタスクやバッチの処理のオーバーヘッドのため,全体性能は 36% 向上する.}, title = {Batched Kernel APIを用いるOpenMPタスク生成}, year = {2019} }