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化効果について
弊社は、ご記入いただく個人情報を、以下の目的に利用します。
弊社では、利用目的の達成に必要な範囲内において、他の事業者へ個人情報を委託することがございます。その場合は、個人情報保護体制が整備された委託先を選定するとともに、個人情報保護に関する契約の締結や適切な監督を行います。
弊社は、お客様の承諾を得た場合または法令により許された場合を除き、お客様の個人情報を第三者に提供いたしません。お客様の同意のもとまたは法令に基づき個人情報を第三者に提供する場合には、適切な管理を義務づけ、その第三者からの漏えい・再提供の防止などを図ります。
弊社に個人情報を提供することは任意です。ご提供いただけない場合は、弊社の業務に支障を来し、ご本人が弊社からの十分なサービスを受けられない可能性がございますのでご了承ください。
※開示、訂正、利用停止等のお申し出は、下記リンクに記載の受付窓口までご連絡ください。
https://www.metro.co.jp/privacypolicy-3.html◆「個人情報保護ポリシー」「プライバシーポリシー」をご覧になりたい方は下記リンクをご参照ください。
https://www.metro.co.jp/privacypolicy.htmlフォームが表示されない場合は、Q&Aをご覧ください。
HPC分野を長年に渡り支えてきた高品質・高性能な技術力を活かして、GPUを使ったアプリケーションの高速化を実現し、みなさまの研究・開発をスムーズに進める支援をいたします。
お客様の研究や開発における課題解決を支援いたします。一般的なアプリにはない機能の開発や、論文の方程式の実装などを行います。
まずはお気軽にお電話またはフォームからお問合わせください