HPC分野を長年に渡り支えてきた高品質・高性能な技術力を活かして、GPUを使ったアプリケーションの高速化を実現し、みなさまの研究・開発をスムーズに進める支援をいたします。
HimenoBMTは、熱伝導や非圧縮性流体などの物理現象に関連するPoisson方程式を、ヤコビ反復法(Jacobi iteration)によって数値的に解くベンチマークプログラムです。
本ページでは、HimenoBMTプログラムにおけるGPU化を行い、高速化した事例をご紹介いたします。
!$acc kernels loop reduction(+:wgosa)
do k=2,kmax-1
do j=2,jmax-1
do i=2,imax-1
s0=a(I,J,K,1)*p(I+1,J,K) &
+a(I,J,K,2)*p(I,J+1,K) &
+a(I,J,K,3)*p(I,J,K+1) &
+b(I,J,K,1)*(p(I+1,J+1,K)-p(I+1,J-1,K) &
-p(I-1,J+1,K)+p(I-1,J-1,K)) &
+b(I,J,K,2)*(p(I,J+1,K+1)-p(I,J-1,K+1) &
-p(I,J+1,K-1)+p(I,J-1,K-1)) &
+b(I,J,K,3)*(p(I+1,J,K+1)-p(I-1,J,K+1) &
-p(I+1,J,K-1)+p(I-1,J,K-1)) &
+c(I,J,K,1)*p(I-1,J,K) &
+c(I,J,K,2)*p(I,J-1,K) &
+c(I,J,K,3)*p(I,J,K-1)+wrk1(I,J,K)
ss=(s0*a(I,J,K,4)-p(I,J,K))*bnd(I,J,K)
wgosa=wgosa+ss*ss
wrk2(I,J,K)=p(I,J,K)+omega*ss
enddo
enddo
enddo
1006 !$acc kernels
1007 !$acc loop independent
1008 do k = 2, m*n, 2 ! even space
1009 j = (k - 1) / m + 1
1010 i = k - (j - 1) * m
1011
1012 !-- IF m is EVEN (Based on Column-Major Order; FORTRAN)
1013 if(mod(m,2)==0 .and. mod(j,2)==0) i = i - 1
1014
1015 p(i, j) = ( bb(i, j) &
1016 - ae(i, j) * p_old(i+1, j) - aw(i, j) * p_old(i-1, j) &
1017 - an(i, j) * p_old(i, j+1) - as(i, j) * p_old(i, j-1) ) &
1018 / ap(i, j) * relux_factor &
1019 + p_old(i, j) * (1. - relux_factor)
1020 end do
1021 !$acc end kernels
HimenoBMTの演算カーネル部は、有限差分法による19点ステンシル計算となっている
Occupancy[%] | ||
---|---|---|
Theoretical | Achieved | |
HimenoBMT Jacobiカーネル | 43.75 | 43.13 |
【ご参考】 北大プログラム 高コスト部2 |
100.00 | 95.03 |
Theoretical Occupancy ≧ Achieved Occupancy
!$acc kernels loop reduction(+:wgosa)
do k=2,kmax-1
do j=2,jmax-1
do i=2,imax-1
s0=a(I,J,K,1)*p(I+1,J,K) &
+a(I,J,K,2)*p(I,J+1,K) &
+a(I,J,K,3)*p(I,J,K+1) &
+b(I,J,K,1)*(p(I+1,J+1,K)-p(I+1,J-1,K) &
-p(I-1,J+1,K)+p(I-1,J-1,K)) &
+b(I,J,K,2)*(p(I,J+1,K+1)-p(I,J-1,K+1) &
-p(I,J+1,K-1)+p(I,J-1,K-1)) &
+b(I,J,K,3)*(p(I+1,J,K+1)-p(I-1,J,K+1) &
-p(I+1,J,K-1)+p(I-1,J,K-1)) &
+c(I,J,K,1)*p(I-1,J,K) &
+c(I,J,K,2)*p(I,J-1,K) &
+c(I,J,K,3)*p(I,J,K-1)+wrk1(I,J,K)
ss=(s0*a(I,J,K,4)-p(I,J,K))*bnd(I,J,K)
wgosa=wgosa+ss*ss
wrk2(I,J,K)=p(I,J,K)+omega*ss
enddo
enddo
enddo
後追
p(I,J,K-1)、
後追
p(I,J,K)、
先行
p(I,J,K+1)
データの再利用ができていない場合、
メモリアクセス量:16GB
データの再利用ができている場合、
メモリアクセス量:14GB
!$acc parallel loop reduction(+:wgosa)
do k=2,kmax-1
!$acc loop tile(64,16) ⇒ タイリング対応
do j=2,jmax-1
do i=2,imax-1
s0= abc(1,I,J,K)*p(I+1,J,K) &
+abc(2,I,J,K)*p(I,J+1,K) &
+abc(3,I,J,K)*p(I,J,K+1) &
+abc(5,I,J,K)*(p(I+1,J+1,K)-p(I+1,J-1,K) &
-p(I-1,J+1,K)+p(I-1,J-1,K)) &
+abc(6,I,J,K)*(p(I,J+1,K+1)-p(I,J-1,K+1) &
-p(I,J+1,K-1)+p(I,J-1,K-1)) &
…(略)
enddo
enddo
enddo
GPU A100 HimenoBMT(XL) | 実行時間 [ms] | Occupancy [%] | レジスタ数 | Shared Memory Per Block [B] | メモリアクセス量 [GB] | メモリスループット [GB/s] | |
---|---|---|---|---|---|---|---|
Theoretical | Achieved | ||||||
ASIS | 16.02 | 43.75 | 43.15 | 72 | 1024 | 16.11 | 1030 |
TUNE① | 14.38 | 56.25 | 55.47 | 56 | 1024 | 16.22 | 1130 |
TUNE② | 12.10 | 50.00 | 49.98 | 64 | 4096 | 14.07 | 1150 |
※OccupancyとGPU化効果について
お客様からいただく個人情報は、情報提供のために使用させていただきます。これにあたり、株式会社メトロからご連絡を取らせていただくことがございます。個人情報の取り扱いについてはプライバシーポリシーをご覧ください。
HPC分野を長年に渡り支えてきた高品質・高性能な技術力を活かして、GPUを使ったアプリケーションの高速化を実現し、みなさまの研究・開発をスムーズに進める支援をいたします。
お客様の研究や開発における課題解決を支援いたします。一般的なアプリにはない機能の開発や、論文の方程式の実装などを行います。
まずはお気軽にお電話またはフォームからお問合わせください