SlideShare a Scribd company logo
1 of 67
Download to read offline
SCG‐AT:静的コード生成のみに
よる自動チューニング実現方式
片桐 孝洋、松本 正晴、大島 聡史
(東京大学情報基盤センター)
1
2015年並列/分散/協調処理に関する『別府』サマー・ワークショップ(SWoPP2015)
ビーコンプラザ 別府国際コンベンションセンター
2015年8月6日(木)、性能チューニング、10:00‐10:30
話の流れ
1. 背景
2. Dynamic Code Generation Auto‐tuning 
(DCG‐AT) と Static Code Generation 
Auto‐tuning (SCG‐AT)
3. 階層型AT処理とコード選択機能
4. 予備評価
– FDMコードを例にして
5. おわりに
話の流れ
1. 背景
2. Dynamic Code Generation Auto‐tuning 
(DCG‐AT) と Static Code Generation 
Auto‐tuning (SCG‐AT)
3. 階層型AT処理とコード選択機能
4. 予備評価
– FDMコードを例にして
5. おわりに
Background
• High‐Thread Parallelism (HTP)
– Multi‐core and many‐core processors are 
pervasive. 
• Multicore CPUs: 16‐32 cores, 32‐64 Threads with 
Hyper Threading (HT) or Simultaneous Multithreading 
(SMT)
• Many Core CPU: Xeon Phi – 60 cores, 240 Threads 
with HT.
– Utilizing parallelism with full‐threads is 
important.
4
 Performance Portability (PP)
◦ Keeping high performance in multiple computer environments.
 Not only multiple CPUs, but also multiple compilers.
 Run‐time information, such as loop length and 
number of threads, is important.
◦ Auto‐tuning (AT) is one of candidates technologies to establish 
PP in multiple computer environments. 
ppOpen‐HPC Project
• Middleware for HPC and Its AT Technology
– Supported by JST, CREST, from FY2011 to FY2015.
– PI: Professor Kengo Nakajima (U. Tokyo)
• ppOpen‐HPC 
– An open source infrastructure for reliable simulation codes on 
post‐peta (pp) scale parallel computers.
– Consists of various types of libraries, which covers 
5 kinds of discretization methods for scientific computations. 
• ppOpen‐AT 
– An auto‐tuning language for ppOpen‐HPC codes 
– Using knowledge of previous project: ABCLibScript Project.
– Auto‐tuning language based on directives for AT.
5
Software Architecture of 
ppOpen‐HPC
6
FVM DEMFDMFEM
Many‐core 
CPUs
GPUs
Multi‐core
CPUs
MG
COMM
Auto‐Tuning Facility
Code Generation for Optimization Candidates
Search for the best candidate
Automatic Execution for the optimization
ppOpen‐APPL
ppOpen‐MATH
BEM
ppOpen‐AT
User Program
GRAPH VIS MP
STATIC DYNAMIC
ppOpen‐SYS FT
Optimize 
memory 
accesses 
ppOpen‐AT System
ppOpen‐APPL /*
ppOpen‐AT
Directives
User 
Knowledge
Library 
Developer
① Before 
Release‐time
Candidate
1
Candidate
2
Candidate
3
Candidate
nppOpen‐AT
Auto‐Tuner
ppOpen‐APPL / *
Automatic
Code
Generation②
:Target 
Computers
Execution Time④
Library User
③
Library Call
Selection
⑤
⑥
Auto‐tuned
Kernel
Execution
Run‐
time
This user 
benefited 
from AT.
ppOpen‐APPL/FDMへの適用シナリオ
9
AT無しで、最適化された
カーネルの実行
ライブラリ
利用者
ATパラメタの指定と
ライブラリの実行
(OAT_AT_EXEC=1)
■オートチューナの実行
固定ループ長での実行
(行列サイズ、MPIプロセス数、
OpenMPスレッド数の固定による)
対象カーネルの実行時間の計測
最適パラメタ情報の収納
ATパラメタの指定と
ライブラリの実行
(OAT_AT_EXEC=0)
最速カーネル情報の
収納
ATなしで最速カーネルを使う
(行列サイズ、MPIプロセス数、
OpenMPスレッド数を変えない限り有効)
行列サイズ、
MPIプロセス数、
OpenMPスレッド数の指定
[FIBER方式、2003]
実行起動前時AT
話の流れ
1. 背景
2. Dynamic Code Generation Auto‐tuning 
(DCG‐AT) と Static Code Generation 
Auto‐tuning (SCG‐AT)
3. 階層型AT処理とコード選択機能
4. 予備評価
– FDMコードを例にして
5. おわりに
従来のATの流れ
:Dynamic Code Generation Auto‐tuning (DCG‐AT)
対象の計算機の決定
ATソフトウェアのインストール(コンパイル)
オートチューナの起動
コード生成
コンパイル
実行
性能は十分か?
最適化コード
本計算の実行
Yes
No
インストール時
のみ行う
提案AT方式の流れ
:Static Code Generation Auto‐tuning (SCG‐AT)
対象の計算機の決定
ATソフトウェアのインストール(コンパイル)
実行パラメタ指定
オートチューナの起動
コードの指定
性能は十分か?
最適化コード
本計算の実行
Yes
No
インストール時
実行起動前時
実行時で可能
コード生成
SCG‐ATの利点と欠点
 利点
– コードの再コンパイルが不要
1. (コンパイルに費やす)ATのための時間が削減
2. ATを実行する計算機上(例えば、ログインノード)に
余分な負荷を与えない
– 実行時のコード自動生成が不要
1. コード自動生成のためのソフトウェアスタック(スクリプト言語など)
が不要
2. ATシステム内でのバッチジョブスクリプトの書き直しが不要
3. 処理の自動化で必要なデーモン起動・常駐などが不要
– ATで効果的となるアルゴリズム選択(コード選択)の実装が容易
 欠点
– AT候補のコードをプログラム中に持つため、コード量が増大
– 最適化済み情報を得るための処理(ファイルアクセスなど)が追加
されるため、ATのための処理時間(ATのオーバーヘッド)が増える
– (SCG‐ATの特性のswitch文の挿入による)AT候補を選択する処理の
挿入により、オリジナルコードの実行に対し、キャッシュなどの
振る舞いが異なることがある
話の流れ
1. 背景
2. Dynamic Code Generation Auto‐tuning 
(DCG‐AT) と Static Code Generation 
Auto‐tuning (SCG‐AT)
3. 階層型AT処理とコード選択機能
4. 予備評価
– FDMコードを例にして
5. おわりに
階層型AT処理の例(2階層)
program main
….
<AT対象のループ>
do i=1, N
…
call LowerRoutine( ….)
…
enddo
subroutine 
LowerRoutine(….)
….
<AT記述の処理>
….
return
end
上位のAT指定 下位のAT指定
コード選択の例
(FDMコード)
ppOpen‐APPL/FDMの
手続き間流れ図
19
),,,(
}],,,)
2
1
({},,)
2
1
({[
1
),,(
2/
1
zyxqp
zyxmxzyxmxc
x
zyx
dx
d
pqpq
M
m
m
pq



 


 中心差分近似による空間微分の評価
),,(,
12
1
2
1
zyxptf
zyx
uu n
p
n
zp
n
yp
n
xpn
p
n
p 

















 


 Leapfrog法による陽解法時間発展
開始
Velocity Derivative (def_vel)
Velocity Update (update_vel)
Stress Derivative (def_stress)
Stress Update (update_stress)
反復の終了?
NO
YES
終了
Velocity PML condition (update_vel_sponge)
Velocity Passing (MPI) (passing_vel)
Stress PML condition (update_stress_sponge)
Stress Passing (MPI) (passing_stress)
今までの実装 (ベクトル機向け)
call ppohFDM_pdiffx3_p4( SXX,DXSXX, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DX )
call ppohFDM_pdiffy3_p4( SYY,DYSYY, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DY 
call ppohFDM_pdiffx3_m4( SXY,DXSXY, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DX )
call ppohFDM_pdiffy3_m4( SXY,DYSXY, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DY )
call ppohFDM_pdiffx3_m4( SXZ,DXSXZ, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DX )
call ppohFDM_pdiffz3_m4( SXZ,DZSXZ, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DZ )
call ppohFDM_pdiffy3_m4( SYZ,DYSYZ, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DY )
call ppohFDM_pdiffz3_m4( SYZ,DZSYZ, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DZ )
call ppohFDM_pdiffz3_p4( SZZ,DZSZZ, NXP,NYP,NZP,NXP0,NXP1,NYP0,NYP1,NZP0,NZP1, DZ )
!! Substitute to Reduced‐order derivatives at around model boundary
call ppohFDM_truncate_diff_stress(idx,idy,idz)
if( is_fs .or. is_nearfs ) then
call ppohFDM_bc_stress_deriv( KFSZ,NIFS,NJFS,IFSX,IFSY,IFSZ,JFSX,JFSY,JFSZ )
end if
call ppohFDM_update_vel       ( 1, NXP, 1, NYP, 1, NZP )
中心差分近似による空間微分の評価
モデル境界の処理
Leapfrog法による
陽解法時間発展
今までの実装(ベクトル機向け)
subroutine OAT_InstallppohFDMupdate_stress(..)
!$omp parallel do private(i,j,k,RL1,RM1,RM2,RLRM2,DXVX1,DYVY1,DZVZ1,…)
do k = NZ00, NZ01
do j = NY00, NY01
do i = NX00, NX01
RL1   = LAM (I,J,K); RM1   = RIG (I,J,K);  RM2   = RM1 + RM1; RLRM2 = RL1+RM2
DXVX1 = DXVX(I,J,K);  DYVY1 = DYVY(I,J,K);  DZVZ1 = DZVZ(I,J,K)
D3V3  = DXVX1 + DYVY1 + DZVZ1
SXX (I,J,K) = SXX (I,J,K) + (RLRM2*(D3V3)‐RM2*(DZVZ1+DYVY1) ) * DT
SYY (I,J,K) = SYY (I,J,K)  + (RLRM2*(D3V3)‐RM2*(DXVX1+DZVZ1) ) * DT
SZZ (I,J,K) = SZZ (I,J,K)  + (RLRM2*(D3V3)‐RM2*(DXVX1+DYVY1) ) * DT
DXVYDYVX1 = DXVY(I,J,K)+DYVX(I,J,K);  DXVZDZVX1 = DXVZ(I,J,K)+DZVX(I,J,K)
DYVZDZVY1 = DYVZ(I,J,K)+DZVY(I,J,K)
SXY (I,J,K) = SXY (I,J,K) + RM1 * DXVYDYVX1 * DT
SXZ (I,J,K) = SXZ (I,J,K) + RM1 * DXVZDZVX1 * DT
SYZ (I,J,K) = SYZ (I,J,K) + RM1 * DYVZDZVY1 * DT
end do
end do
end do
retuen
end
Leapfrog法による
陽解法時間発展
手続きコールのたびに
配列に入出力
→B/F値が大きくなる
スカラ計算機向け実装 (Intel向き)
!$omp parallel do private 
(i,j,k,RL1,RM1,RM2,RLRM2,DXVX, …)
do k_j=1, (NZ01‐NZ00+1)*(NY01‐NY00+1)
k=(k_j‐1)/(NY01‐NY00+1)+NZ00
j=mod((k_j‐1),(NY01‐NY00+1))+NY00
do i = NX00, NX01
RL1   = LAM (I,J,K);  RM1   = RIG (I,J,K)
RM2   = RM1 + RM1; RLRM2 = RL1+RM2
! 4th order diff
DXVX0 = (VX(I,J,K)  ‐VX(I‐1,J,K))*C40/dx &
‐ (VX(I+1,J,K)‐VX(I‐2,J,K))*C41/dx
DYVY0 = (VY(I,J,K)  ‐VY(I,J‐1,K))*C40/dy &
‐ (VY(I,J+1,K)‐VY(I,J‐2,K))*C41/dy
DZVZ0 = (VZ(I,J,K)  ‐VZ(I,J,K‐1))*C40/dz &
‐ (VZ(I,J,K+1)‐VZ(I,J,K‐2))*C41/dz
! truncate_diff_vel
! X dir
if (idx==0) then
if (i==1)then
DXVX0 = ( VX(1,J,K) ‐ 0.0_PN    )/ DX
end if
if (i==2) then
DXVX0 = ( VX(2,J,K) ‐ VX(1,J,K) )/ DX
end if
end if
if( idx == IP‐1 ) then
if (i==NXP)then
DXVX0 = ( VX(NXP,J,K) ‐ VX(NXP‐1,J,K) ) /  DX
end if
end if
! Y dir
if( idy == 0 ) then ! Shallowmost
if (j==1)then
DYVY0 = ( VY(I,1,K) ‐ 0.0_PN    )/ DY
end if
if (j==2)then
DYVY0 = ( VY(I,2,K) ‐ VY(I,1,K) ) / DY
end if
end if
if( idy == JP‐1 ) then
if (j==NYP)then
DYVY0 = ( VY(I,NYP,K) ‐ VY(I,NYP‐1,K) )/ DY
end if
end if
! Z dir
if( idz == 0 ) then ! Shallowmost
if (k==1)then
DZVZ0 = ( VZ(I,J,1) ‐ 0.0_PN    ) / DZ
end if
if (k==2)then
DZVZ0 = ( VZ(I,J,2) ‐ VZ(I,J,1) ) / DZ
end if
end if
if( idz == KP‐1 ) then
if (k==NZP)then
DZVZ0 = ( VZ(I,J,NZP) ‐ VZ(I,J,NZP‐1) )/ DZ
end if
end if
モデル境界の処理
中心差分近似
による空間微分
の評価
DXVX1 = DXVX0;  DYVY1 = DYVY0
DZVZ1 = DZVZ0;  D3V3  = DXVX1 + DYVY1 + DZVZ1
SXX (I,J,K) = SXX (I,J,K) &
+ (RLRM2*(D3V3)‐RM2*(DZVZ1+DYVY1) ) * DT
SYY (I,J,K) = SYY (I,J,K) &
+ (RLRM2*(D3V3)‐RM2*(DXVX1+DZVZ1) ) * DT
SZZ (I,J,K) = SZZ (I,J,K) &
+ (RLRM2*(D3V3)‐RM2*(DXVX1+DYVY1) ) * DT
end do
end do
!$omp end parallel d
Leapfrog法による
陽解法時間発展
B/F値は小さくなる
ループ内部に
IF文があり
最適化を阻害
Select節によるコード選択と階層的なAT指定
Program main
….
!OAT$ install select region start
!OAT$ name ppohFDMupdate_vel_select
!OAT$ select sub region start
call ppohFDM_pdiffx3_p4( SXX,DXSXX,NXP,NYP,NZP,….)
call ppohFDM_pdiffy3_p4( SYY,DYSYY, NXP,NYP,NZP,…..)
…
if( is_fs .or. is_nearfs ) then
call ppohFDM_bc_stress_deriv( KFSZ,NIFS,NJFS,IFSX,….)
end if
call ppohFDM_update_vel    ( 1, NXP, 1, NYP, 1, NZP )
!OAT$ select sub region end
!OAT$ select sub region start
Call ppohFDM_update_vel_Intel  ( 1, NXP, 1, NYP, 1, NZP )
!OAT$ select sub region end
!OAT$ install select region end
上位のAT指定 Select節で
コード選択が
記述可能
subroutine ppohFDM_update_vel(….)
….
!OAT$ install LoopFusion region start
!OAT$ name ppohFDMupdate_vel
!OAT$ debug (pp)
!$omp parallel do private(i,j,k,ROX,ROY,ROZ)
do k = NZ00, NZ01
do j = NY00, NY01
do i = NX00, NX01
…..
….
下位のAT指定
subroutine ppohFDM_pdiffx3_p4(….)
….
!OAT$ install LoopFusion region start
….
ATによる関数呼び出し構成
開始
Stress Derivative (def_stress)
Stress Update (update_stress)
反復の終了?
NO
YES
終了
Velocity PML condition (update_vel_sponge)
Velocity Passing (MPI) (passing_vel)
Stress PML condition (update_stress_sponge)
Stress Passing (MPI) (passing_stress)
Velocity Derivative (def_vel)
Velocity Update (update_vel)
メイン
プログラム中
Velocity Update (update_vel_Intel)
Stress Update (update_stress_Intel)
選択
選択
update_vel_select
update_stress_select
update_vel_select
update_stress_select
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
候補
:自動生成コード
AT実行順序
Velocity PML condition (update_vel_sponge)
Velocity Passing (MPI) (passing_vel)
Stress PML condition (update_stress_sponge)
Stress Passing (MPI) (passing_stress)
update_vel_select
update_stress_select
Stress Derivative 
(def_stress)
Stress Update 
(update_stress)
Velocity Derivative
(def_vel)
Velocity Update
(update_vel)
Velocity Update 
(update_vel_Intel)
Stress Update
(update_stress_Intel)
Def_* AT Candidates
Update_vel
AT Candidates
Update_stress
AT Candidates
Update_vel_sponge
AT Candidates
Update_stress_sponge
AT Candidates
Passing_vel
AT Candidates
Passing_stress
AT Candidates
①
②
②
③
③
④
④
④
④
AT順序指定のためのディレクティブ拡張
• 補助指定子
• C言語
#pragma oat exec_order <x>
• Fortran言語
!OAT$ exec_order <x>
• 例 subroutine ppohFDM_update_vel(….)
….
!OAT$ install LoopFusion region start
!OAT$ name ppohFDMupdate_vel
!OAT$ exec_order 2
!$omp parallel do private(i,j,k,ROX,ROY,ROZ)
do k = NZ00, NZ01
do j = NY00, NY01
do i = NX00, NX01
…..
同一順序内での
AT実行順番は任意
(デフォルトでは、
プリプロセッサが
見つけた順番)
Module文の相互依存問題(1/2)
• ppOpen‐AT特有の、Fotran90自動コード生成に
関する問題
• 上位のAT指定内に含まれる、下位のAT指定が
ある場合に生じる
– つまり、階層的なATをする場合に生じる
• 前提
– ppOpen‐ATによる自動生成コードのファイル名
– OAT_Control_Routines.f
• ATの制御に関する手続きを含むモジュール
– OAT_Instrall_Routines.f
• インストール時最適化を行うAT候補コードを含むモジュール
ppOpen‐ATによる自動生成コード
subroutine 
ppohFDM_update_vel(….)
….
!OAT$ install LoopFusion region start
!OAT$ name ppohFDMupdate_vel
!$omp parallel do private
(i,j,k,ROX,ROY,ROZ)
do k = NZ00, NZ01
do j = NY00, NY01
do i = NX00, NX01
…..
!OAT$ install LoopFusion region end
subroutine ppohFDM_update_vel(….)
….
!!OAT$ install LoopFusion region start
!!OAT$ name ppohFDMupdate_vel
ctmp = "ppohFDMupdate_vel"
call OAT_SetParm (1,ctmp,
NZ01,iusw1_ppohFDMupdate_vel)
call OAT_InstallppohFDMupdate_vel
(NZ00,…,iusw1_ppohFDMupdate_vel)
…
!!OAT$ install LoopFusion region end
オリジナルコード 自動生成コード
ATパラメタ設定手続き
該当コードを含む手続き
Module文の相互依存問題(2/2)
• 上位のAT指定内に含まれる下位のAT指定が無い
OAT_Control_Routines
モジュール
use OAT_Install_Routines
OAT_Install_Routines
モジュール
• 上位のAT指定内に含まれる、下位のAT指定がある
OAT_Control_Routines
モジュール
use OAT_Install_Routines
OAT_Install_Routines
モジュール
Use OAT_Control_Routines
自動生成される
AT候補は、AT制御
ルーチンを呼ばない
自動生成される
AT候補内で、
ATパラメタ設定
ルーチン
(OAT_SetParm)
が呼ばれる。
→OAT_Control_Rotines
モジュールが必要
→モジュールの循環依存のため
コンパイルができない
• 解決法
– OAT_Instrall_Routines内で必要となるOAT_Control_Routines
の手続きを、OAT_Instrall_Routines内にコピーする
– 欠点:コードが冗長になり、無駄に行数が増える。
ただし、自動生成コードなので人的コストはない。
話の流れ
1. 背景
2. Dynamic Code Generation Auto‐tuning 
(DCG‐AT) と Static Code Generation 
Auto‐tuning (SCG‐AT)
3. 階層型AT処理とコード選択機能
4. 予備評価
– FDMコードを例にして
5. おわりに
Execution Details
• ppOpen‐APPL/FDM ver.0.2
• ppOpen‐AT ver.0.2
• The number of time step: 2000 steps
• The number of nodes: 8 node
• Native Mode Execution
• Target Problem Size 
(Almost maximum size with 8 GB/node)
– NX * NY * NZ = 1536 x  768 x 240 / 8 Node
– NX * NY * NZ = 768 * 384 * 120 / node
(!= per MPI Process)
• The number of iterations for kernels 
to do auto‐tuning: 100
Candidates in Conventional AT
1. Kernel update_stress
– 8 Kinds of Candidates with Loop Collapse and Loop Split.
2. Kernel update_vel
– 6 Kinds of Candidates with Loop Collapse and Re‐ordering of Statements.
 3 Kinds of Candidates with Loop Collapse.
3. Kernel update_stress_sponge
4. Kernel update_vel_sponge
5. Kernel ppohFDM_pdiffx3_p4
6. Kernel ppohFDM_pdiffx3_m4
7. Kernel ppohFDM_pdiffy3_p4
8. Kernel ppohFDM_pdiffy3_m4
9. Kernel ppohFDM_pdiffz3_p4
10. Kernel ppohFDM_pdiffz3_m4
 Kinds of Candidates with Loop Collapse for Data Packing and Data 
Unpacking.
11. Kernel ppohFDM_ps_pack
12. Kernel ppohFDM_ps_unpack
13. Kernel ppohFDM_pv_pack
14. Kernel ppohFDM_pv_unpack
32
Total Number 
of Kernel Candidates: 
47+ 2 (code selection)
= 49
最適パラメタ分布
最適パラメタ分布 (update_stress_select)
8ノード
0
1
2
3
4
0 1 2 3 4 5 6 7 8
Phi Ivy Bridge_HT1 FX10
MPI並列性
パラメタ値
スカラ計算機向きコード
(Intel向きコード)
ベクトル計算機向きコード
(従来コード)
最適パラメタ分布 (update_vel_select)
8ノード
0
1
2
3
4
0 1 2 3 4 5 6 7 8
Phi Ivy Bridge_HT1 FX10
MPI並列性
パラメタ値
スカラ計算機向きコード
(Intel向きコード)
ベクトル計算機向きコード
(従来コード)
XEON PHI
HT4
Machine Environment 
(8 nodes of the Xeon Phi)
 The Intel Xeon Phi 
 Xeon Phi 5110P (1.053 GHz), 60 cores
 Memory Amount:8 GB (GDDR5)
 Theoretical Peak Performance:1.01 TFLOPS
 One board per node of the Xeon phi cluster
 InfiniBand FDR x 2 Ports 
 Mellanox Connect‐IB
 PCI‐E Gen3 x16
 56Gbps x 2
 Theoretical Peak bandwidth 13.6GB/s
 Full‐Bisection
 Intel MPI
 Based on MPICH2, MVAPICH2
 Version 5.0 Update 3 Build 20150128 
 Compiler:Intel Fortran version 15.0.3 20150407
 Compiler Options:
‐ipo20 ‐O3 ‐warn all ‐openmp ‐mcmodel=medium ‐shared‐intel –mmic
‐align array64byte
 KMP_AFFINITY=granularity=fine, balanced (Uniform Distribution of threads 
between sockets)
Execution Details
• ppOpen‐APPL/FDM ver.0.2
• ppOpen‐AT ver.0.2
• The number of time step: 2000 steps
• The number of nodes: 8 node
• Native Mode Execution
• Target Problem Size 
(Almost maximum size with 8 GB/node)
– NX * NY * NZ = 1536 x  768 x 240 / 8 Node
– NX * NY * NZ = 768 * 384 * 120 / node
(!= per MPI Process)
• The number of iterations for kernels 
to do auto‐tuning: 100
0
200
400
600
800
1000
1200
1400
P8T240 P16T120 P32T60 P64T30 P128T15 P240T8 P480T4
Others
IO
passing_stre
ss
passing_velo
city
update_vel_
sponge
update_vel
update_stre
ss_sponge
update_stre
ss
Whole Time (2000 time steps)
[Seconds]
Comp.
Time
Comm. 
Time
NX*NY*NZ = 1536x768x240/ 8 Node
Hybrid MPI/OpenMP
Phi : 8 Nodes (1920 Threads)
Original Code
AT without code selection
Full AT
1.12 
1.31 
1.04 
1.17 
1.55 
1.78 
0.95 
1.48 
1.15 
1.50 
1.09 
1.71 
1.17 
1.68 
0.80
1.00
1.20
1.40
1.60
1.80
2.00
P8T240 P16T120 P32T60 P64T30 P128T15 P240T8 P480T4
Speedups
Whole Time (Speedups)
[Speedups]
NX*NY*NZ = 1536x768x240/ 8 Node
Original Code
AT without code selection
Full AT
Hybrid MPI/OpenMP
Phi : 8 Nodes (1920 Threads)
今までのATとコード選択で
最大1.78x
0
50
100
150
200
250
300
350
400
P8T240 P16T120 P32T60 P64T30 P128T15 P240T8 P480T4
update_stre
ss
update_stress (2000 time step)[Seconds]
NX*NY*NZ = 1536x768x240/ 8 Node
Hybrid MPI/OpenMP
Phi : 8 Nodes (1920 Threads)
Original Code
AT without code selection
Full AT
1.47 
2.09 
1.03 
1.46 
3.93 
6.44 
0.81 
3.35 
1.73 
3.21 
1.12 
4.39 
1.18 
3.44 
0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
P8T240 P16T120 P32T60 P64T30 P128T15 P240T8 P480T4
Speedups
update_stress (speedups)[Seconds]
NX*NY*NZ = 1536x768x240/ 8 Node
Original Code
AT without code selection
Full AT
Hybrid MPI/OpenMP
Phi : 8 Nodes (1920 Threads)
コード選択で
最大6.44x
0
50
100
150
200
250
300
350
400
P8T240 P16T120 P32T60 P64T30 P128T15 P240T8 P480T4
update_vel
update_vel (2000 time step)[Seconds]
NX*NY*NZ = 1536x768x240/ 8 Node
Hybrid MPI/OpenMP
Phi : 8 Nodes (1920 Threads)
Original Code
AT without code selection
Full AT
1.11  1.11 
1.00 
1.00 
0.99 
1.01 
1.04 
0.97 
1.09 
1.19 1.18 
1.18 1.21 
1.25 
0.50
0.60
0.70
0.80
0.90
1.00
1.10
1.20
1.30
1.40
1.50
P8T240 P16T120 P32T60 P64T30 P128T15 P240T8 P480T4
speedups
update_vel (speedups)[Seconds]
NX*NY*NZ = 1536x768x240/ 8 Node
Original Code
AT without code selection
Full AT
Hybrid MPI/OpenMP
Phi : 8 Nodes (1920 Threads)
Machine Environment
 Intel Xeon クラスタ(Ivy Bridge)
OS:Red Hat Enterprise Linux Server release 6.2?
計算ノード数:64?
CPU:Intel Xeon E5‐2670 V2 @ 2.50GHz,
2ソケット×10コア
ハイパースレッディング:オン (HT2)
1ノード理論性能:400 GFLOPS
1ノード記憶容量:64 GB
インターコネクト:
MPI: MVAPICH2 2.0 rc2
コンパイラ:
コンパイラオプション:
‐ipo20 ‐O3 ‐warn all ‐openmp ‐mcmodel=medium ‐
shared‐intel
KMP_AFFINITY=granularity=fine, compact 
(スレッドをソケット内に配置)
Execution Details
• ppOpen‐APPL/FDM ver.0.2
• ppOpen‐AT ver.0.2
• The number of time step: 2000 steps
• The number of nodes: 8 node
• Target Problem Size (Almost maximum size with 8 GB/node)
– NX * NY * NZ = 1536 x  768 x 240 / 8 Node
– NX * NY * NZ = 768 * 384 * 120 / node (!= per MPI Process)
• Target MPI Processes and Threads on the Xeon Phi
– 1 node of the Ivy Bridge with 2 HT (Hyper Threading)
– PXTY: X MPI Processes and Y Threads per process
– P8T20 : Minimum Hybrid MPI‐OpenMP execution for ppOpen‐APPL/FDM, 
since it needs minimum 8 MPI Processes.
– P16T10
– P32T5
– P40T4
– P80T2
– P160T1   : Pure MPI execution with 8 Nodes
• The number of iterations for the kernels: 100
IVY BRIDGE
HT1
0
500
1000
1500
2000
2500
P8T20 P16T10 P32T5 P40T4 P80T2 P160T1
Others
IO
passing_stress
passing_veloci
ty
update_vel_s
ponge
update_vel
update_stress
_sponge
update_stress
Whole Time (2000 Time Steps)[Seconds]
Comp.
Time
Comm.
Time
Original Code
AT without code selection
Full AT
1.02 
1.38 
1.01 
1.36 
0.97 
1.15 
1.06 
1.23 
1.01 
1.11 
0.96 
1.04 
0.50
0.60
0.70
0.80
0.90
1.00
1.10
1.20
1.30
1.40
1.50
P8T20 P16T10 P32T5 P40T4 P80T2 P160T1
Speedups
Whole Time (speedups)[Speedups]
Original 
Code
AT without code selection
Full AT
今までのATとコード選択で
最大1.38x
0
50
100
150
200
250
300
350
P8T20 P16T10 P32T5 P40T4 P80T2 P160T1
update_stre
ss
Update_stress (2000 Time Steps)[Seconds]
Original Code
AT without code selection
Full AT
1.02 
1.80 
1.04 
2.27 
1.08 
1.71 
0.98 
1.74 
1.07 
2.09 
1.10 
2.05 
0.00
0.50
1.00
1.50
2.00
2.50
P8T20 P16T10 P32T5 P40T4 P80T2 P160T1
speedups
Update_stress (speedups)
[Speedups]
Original Code
AT without code selection
Full AT
コード選択で
最大2.27x
0
50
100
150
200
250
300
P8T20 P16T10 P32T5 P40T4 P80T2 P160T1
update_
vel
Update_vel (2000 Time Steps)[Seconds]
Original Code
AT without code selection
Full AT
1.00 
1.03 
1.04 
1.09 
1.04 
0.76 
0.95 
0.82 
1.02 
1.02 
1.06 
0.95 
0.50
0.60
0.70
0.80
0.90
1.00
1.10
1.20
P8T20 P16T10 P32T5 P40T4 P80T2 P160T1
speed
ups
Update_vel (speedups)[Speedups]
Original Code
AT without code selection
Full AT
FUJITSU FX10
(SPAC64 IV‐FX)
Oakleaf‐FX (ITC, U.Tokyo), 
The Fujitsu PRIMEHPC FX10
Contents Specifications
Whole
System
Total Performance 1.135 PFLOPS
Total Memory Amounts 150 TB
Total #nodes 4,800
Inter Connection
The TOFU
(6 Dimension 
Mesh / Torus)
Local File System Amounts 1.1 PB
Shared File System Amounts 2.1 PB
Contents Specifications
Node
Theoretical Peak Performance 236.5 GFlops
#Processors (#Cores) 16
Main Memory Amounts 32 GB
Processor
Processor Name SPARC64 IX‐fx
Frequency 1.848 GHz
Theoretical Peak Performance (Core) 14.78 GFLOPS
4800 Nodes (76,800 Cores)
Execution Details
• ppOpen‐APPL/FDM ver.0.2
• ppOpen‐AT ver.0.2
• The number of time step: 2000 steps
• The number of nodes: 8 node
• Target Problem Size (Almost maximum size with 8 GB/node)
– NX * NY * NZ = 1536 x  768 x 240 / 8 Node
– NX * NY * NZ = 768 * 384 * 120 / node (!= per MPI Process)
• Target MPI Processes and Threads on the Xeon Phi
– 1 node of the Ivy Bridge with 2 HT (Hyper Threading)
– PXTY: X MPI Processes and Y Threads per process
– P8T16 : Minimum Hybrid MPI‐OpenMP execution for ppOpen‐
APPL/FDM, since it needs minimum 8 MPI Processes.
– P16T8
– P32T4
– P64T2
– P128T1 : pure MPI  
• The number of iterations for the kernels: 100
0
100
200
300
400
500
600
700
800
900
1000
P8T16 P16T8 P32T4 P64T2 P128T1
Others
IO
passing_stress
passing_velocit
y
update_vel_sp
onge
update_vel
update_stress_
sponge
update_stress
Whole Time (2000 time steps)
[Seconds]
Comp.
Time
Comm.
Time
Original Code
AT using scalar CPU code
Full AT
1.02 
0.73 
1.01 
0.76 
1.00 
0.66 
1.02 
0.66 
1.01 
0.69 
0.00
0.20
0.40
0.60
0.80
1.00
1.20
P8T16 P16T8 P32T4 P64T2 P128T1
Speedups
Whole Time (speedups)
[Speedups]
Original Code
AT using scalar CPU code
Full AT
スカラ計算機向けコード
を選択すると
最大0.66xの速度低下
0
50
100
150
200
250
300
350
400
P8T16 P16T8 P32T4 P64T2 P128T1
update_
stress
Update_stress (2000 time steps)
[Seconds]
Original Code
AT using scalar CPU code
Full AT
1.00 
0.87 
1.00 
0.97  1.00 
0.82 
0.95 
0.68 
0.89 
0.81 
0.00
0.20
0.40
0.60
0.80
1.00
1.20
P8T16 P16T8 P32T4 P64T2 P128T1
speed
ups
Update_stress (speedups)
[Speedups]
Original Code
AT using Intel CPU code
Full AT
スカラ計算機向けコード
を選択すると
最大0.68xの速度低下
0
50
100
150
200
250
300
350
400
450
500
P8T16 P16T8 P32T4 P64T2 P128T1
update
_vel
Update_vel (2000 time steps)
[Seconds]
Original Code
AT using scalar CPU code
Full AT
1.01 
0.61 
1.01 
0.64 
1.01 
0.52 
0.98 
0.50 
0.90 
0.42 
0.00
0.20
0.40
0.60
0.80
1.00
1.20
P8T16 P16T8 P32T4 P64T2 P128T1
Speed
ups
Update_vel (speedups)
[speedups]
Original Code
AT using scalar CPU code
Full AT
Profiling Results (FX10, P64T2)
カーネル
種別
L1 miss 
dm [%]
L1 miss 
swpf
[%]
SIMD 
Operati
on [%]
Theo‐
retical
Peak 
[%]
Memory
Through
put 
[GB/s] /
2 Threads
ベクトル
計算機
向きコード
35.7 1.56 82.5 8.99 8.89
スカラ
計算機
向き
コード
59.5 15.5 0.00 6.07 3.06
 Update_stress
スカラ計算機向けコードは、L1ソフトウェア・プリフェッチ・
ミスヒット増加+SIMDコードが生成されない
→ループ内のIF文がコンパイラ最適化を阻害
Profiling Results (FX10, P64T2)
カーネル
種別
L1 miss 
dm [%]
L1 miss 
swpf
[%]
SIMD 
Operati
on [%]
Theo‐
retical
Peak 
[%]
Memory
Through
put 
[GB/s] /
2 Threads
ベクトル計
算機向き
コード
35.6 0.00 86.6 12.2 9.85
スカラ計算
機向き
コード
48.7 5.73 0.00 5.45 2.35
 Update_vel
関連研究
オリジナリティ (AT言語)
AT Language 
/ Items
#
1
#
2
#
3
#
4
#
5
#
6
#
7
#
8
ppOpen‐AT OAT Directives ✔ ✔ ✔ ✔ ✔ なし
Vendor Compilers 対象外 Limited ‐
Transformation 
Recipes 
Recipe
Descriptions
✔ ✔ ChiLL
POET Xform Description ✔ ✔ POET translator, ROSE
X language 
Xlang Pragmas ✔ ✔ X Translation,
‘C and tcc
SPL SPL Expressions ✔ ✔ ✔ A Script Language
ADAPT
ADAPT 
Language
✔ ✔ Polaris
Compiler 
Infrastructure, 
Remote Procedure 
Call (RPC)
Atune‐IL
Atune Pragmas ✔ A Monitoring 
Daemon
PEPPHER
PEPPHER Pragmas
(interface)
✔ ✔ ✔ PEPPHER task graph
and run-time
Xevolver
Directive Extension
(Recipe Descriptions)
(✔) (✔) (✔) ROSE,
XSLT Translator
#1: 複数コンパイラ環境の支援手法 #2: 実行時のループ長の取得
#3: 演算回数の増加を認めるループ分割、および、その分割したループに対するループ融合
#4: 最内側ループの式並び変更 #5:実装選択(階層AT処理)の概念 #6: アルゴリズム選択
#7: 実行情報フィードバックによるコード生成 #8: ソフトウェアスタックの要求
(ユーザ自身で定義する )
話の流れ
1. 背景
2. Dynamic Code Generation Auto‐tuning 
(DCG‐AT) と Static Code Generation 
Auto‐tuning (SCG‐AT)
3. 階層型AT処理とコード選択機能
4. 予備評価
– FDMコードを例にして
5. おわりに
おわりに
性能可搬性を達成するため、コード選択の
自動チューニング(AT)は有効であり、
従来法では得られない速度向上が得られる
コード選択のATをAT言語で実装するには、
階層型AT処理になることが多い
階層型AT処理の自動生成コードについて、
自動生成コードの構成を考慮する必要がある
ppOpen‐ATのコード (MITライセンス):
http://ppopenhpc.cc.u‐tokyo.ac.jp/
将来課題
探索アルゴリズムの改良
– 全探索 を使っている
• ユーザ知識を使っているので、現実時間でAT可能
– 新探索アルゴリズムも研究開発中(一部実装済)
• d‐Splineベースの探索アルゴリズム (ブラック・ボックス型の
性能モデル)、田中教授(工学院大)と連携
• ループ構造を見る性能モデル(ホワイト・ボックス型の
性能モデル)とppOpen‐ATとの連結も、ステンシル計算に
限定して研究開発予定
オフロード実装のコード選択機能の拡張
(Xeon Phiにおける)
– 問題サイズが小さい時、自動でXeon Phiへ
オフローディングせず、CPUで実行する、など
– OpenACC利用による、GPU計算の切り替えも、
ppOpen‐ATで原理的に実装可能
参考文献 (著者関連のみ)
1. H. Kuroda, T. Katagiri, M. Kudoh, Y. Kanada, “ILIB_GMRES: An auto‐tuning parallel 
iterative solver for linear equations,” SC2001, 2001. (Poster.)
2. T. Katagiri, K. Kise, H. Honda, T. Yuba, “ABCLib_DRSSED: A parallel eigensolver with an 
auto‐tuning facility,” Parallel Computing, Vol. 32, Issue 3, pp. 231–250, 2006.
3. T. Sakurai, T. Katagiri, K. Naono, H. Kuroda, K. Nakajima, M. Igai, S. Ohshima, S. Itoh, 
“Evaluation of auto‐tuning function on OpenATLib,” IPSJ SIG Technical Reports, Vol. 
2011‐HPC‐130, No. 43, pp. 1–6, 2011. (in Japanese)
4. T. Katagiri, K. Kise, H. Honda, T. Yuba, “FIBER: A general framework for auto‐tuning 
software,” The Fifth International Symposium on High Performance Computing 
(ISHPC‐V), Springer LNCS 2858, pp. 146–159, 2003.
5. T. Katagiri, S. Ito, S. Ohshima, “Early experiences for adaptation of auto‐tuning by 
ppOpen‐AT to an explicit method,” Special Session: Auto‐Tuning for Multicore and 
GPU (ATMG) (In Conjunction with the IEEE MCSoC‐13), Proceedings of MCSoC‐13, 
2013. 
6. T. Katagiri, S. Ohshima, M. Matsumoto, “Auto‐tuning of computation kernels from an 
FDM Code with ppOpen‐AT,” Special Session: Auto‐Tuning for Multicore and GPU 
(ATMG) (In Conjunction with the IEEE MCSoC‐14), Proceedings of MCSoC‐14, 2014. 
7. T.Katagiri, S.Ohshima, M. Matsumoto, "Directive‐based Auto‐tuning for the Finite 
Difference Method on the Xeon Phi," The Tenth International Workshop on Automatic 
Performance Tuning (iWAPT2015) (In Conjunction with the IEEE IPDPS2015 ), 
Proceedings of IPDPSW2015, pp.1221‐1230,2015.

More Related Content

Viewers also liked

Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...
Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...
Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...Takahiro Katagiri
 
Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...
Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...
Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...Takahiro Katagiri
 
Impact of Auto-tuning of Kernel Loop Transformation by using ppOpen-AT
Impact of Auto-tuning of Kernel Loop Transformation by using ppOpen-ATImpact of Auto-tuning of Kernel Loop Transformation by using ppOpen-AT
Impact of Auto-tuning of Kernel Loop Transformation by using ppOpen-ATTakahiro Katagiri
 
ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介Takahiro Katagiri
 

Viewers also liked (6)

Ase20 20151016 hp
Ase20 20151016 hpAse20 20151016 hp
Ase20 20151016 hp
 
Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...
Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...
Towards Auto-tuning Facilities into Supercomputers in Operation - The FIBER a...
 
Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...
Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...
Towards Automatic Code Selection with ppOpen-AT: A Case of FDM - Variants of ...
 
iWAPT2015_katagiri
iWAPT2015_katagiriiWAPT2015_katagiri
iWAPT2015_katagiri
 
Impact of Auto-tuning of Kernel Loop Transformation by using ppOpen-AT
Impact of Auto-tuning of Kernel Loop Transformation by using ppOpen-ATImpact of Auto-tuning of Kernel Loop Transformation by using ppOpen-AT
Impact of Auto-tuning of Kernel Loop Transformation by using ppOpen-AT
 
ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介
 

Similar to SCG-AT:静的コード生成のみによる自動チューニング実現方式

20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会Kyohei Oki
 
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築 [ISOC-JP workshop, 2016/05/20]
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築  [ISOC-JP workshop, 2016/05/20]セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築  [ISOC-JP workshop, 2016/05/20]
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築 [ISOC-JP workshop, 2016/05/20]Takeshi Takahashi
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理Kouji Matsui
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1openrtm
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployRyutaro YOSHIBA
 
Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編
Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編
Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編Yusuke Goto
 
1.コース概要
1.コース概要1.コース概要
1.コース概要openrtm
 
200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020openrtm
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料Shin-ya Koga
 
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部openrtm
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜bitbank, Inc. Tokyo, Japan
 
700億件のリアルタイム分析の実現と運用の実態
700億件のリアルタイム分析の実現と運用の実態700億件のリアルタイム分析の実現と運用の実態
700億件のリアルタイム分析の実現と運用の実態Eiji Yamamoto
 
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)Keizo Tatsumi
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...Takuma Usui
 
加藤先生ご講演資料_20210824
加藤先生ご講演資料_20210824加藤先生ご講演資料_20210824
加藤先生ご講演資料_20210824直久 住川
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナーopenrtm
 

Similar to SCG-AT:静的コード生成のみによる自動チューニング実現方式 (20)

Imaocande LT
Imaocande LTImaocande LT
Imaocande LT
 
20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会20161210_第8回jenkins勉強会
20161210_第8回jenkins勉強会
 
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築 [ISOC-JP workshop, 2016/05/20]
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築  [ISOC-JP workshop, 2016/05/20]セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築  [ISOC-JP workshop, 2016/05/20]
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築 [ISOC-JP workshop, 2016/05/20]
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編
Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編
Nab Show 2019 報告会 - ATSC 3.0 / MOS / Machine Learning / 映像合成技術 編
 
1.コース概要
1.コース概要1.コース概要
1.コース概要
 
200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料
 
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
 
700億件のリアルタイム分析の実現と運用の実態
700億件のリアルタイム分析の実現と運用の実態700億件のリアルタイム分析の実現と運用の実態
700億件のリアルタイム分析の実現と運用の実態
 
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
 
加藤先生ご講演資料_20210824
加藤先生ご講演資料_20210824加藤先生ご講演資料_20210824
加藤先生ご講演資料_20210824
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

SCG-AT:静的コード生成のみによる自動チューニング実現方式