• 検索結果がありません。

発表資料 hayashi 160601v2

N/A
N/A
Protected

Academic year: 2018

シェア "発表資料 hayashi 160601v2"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

Fortran 規格のcoarray機能

Fortran 2008 と Fortran 2015

2016 年6月1日

NEC 林 康晴

(2)
(3)

内容

1. Fortran 2008 coarray 機能

2. 姫野ベンチMPI版coarray化 要点

3. Fortran 2015 coarray 機能

(4)

現Fortran規格 (Fortran 2008)

2010 年,最新 ISO規格

目玉 一 ,coarray機能 導入さ た

主 し ,分散並列処理 機能

(MPI う ) ローカ デ ・全手動 並列化

各 ロセ , 独自 データを

通信や同期 ,全 利用者 ロ

通信 ,代入文 形式 ,片側通信方式 記述

(5)

5 © Nどで でorporation 201す

Fortran 2008 coarray 機能概要(1)

image

CPU

CPU

CPU

CPU

ー 間 ッ ワーク

image image image image

ログラム instance ( 通常, ロセ )

image番号 (image ID) 1 2 3 4

通信や同期処理等 ,基本的

image 番号を使 書く

(MPI rank 相当す )

(6)

Fortran 2008 coarray 機能概要(2)

ータマッ ン 並列化

 各image上 データ・処理 、独立し 別物

宣言時 codimension ( [*] ) を付加 ,coarray

,他 image 参照 可能

[n1, n2, *] う ,多次元 image構成 可能

 自image上 coarray ,通常 (coarray い)データ 同様

参照

integer :: a(2)

do i=1,2 a(i) = i enddo

image 2 image 1

a(1) a(2) a(1) a(2) do i=1,2 do i=1,2

integer, save :: a(2)[*]

do i=1,2 a(i) = i enddo

image 2 image 1

a(1) a(2) a(1) a(2) do i=1,2 do i=1,2

(7)

7 © Nどで でorporation 201す

Fortran 2008 coarray 機能概要(3)

他 image上 coarray 参照 (通信)

image i 上 coarrayを参照 場合,image selector ( [ i ])

を付加

多次元image構成 場合,image selector image番号 対応 ,配

列添字 配列要素 対応(添字順序値) 同様 ,column-wise

order 計算

integer,save :: a[*]

if(THIS_IMAGE().eq.1)then a = a[2]

endif

image 2 image 1

a a[2]

integer,save :: a[*]

if(THIS_IMAGE().eq.1)then a[2] = a

endif

integer,save :: a[*]

if(THIS_IMAGE().eq.3)then a[2] = a[1]

endif

image 2 image 1

a a[2]

image 2 image 1

a[2]

get put 第三者による操作

image 3 a[1]

 THIS_IMAGE() ,自image image番号を返 組込 関数

(8)

Fortran 2008 coarray 機能概要(4)

ータ 整合性 ,ユー 保証 必要 あ

integer,save :: b, a[*]

if(THIS_IMAGE().eq.1)then a[2] = a

else if(THIS_IMAGE().eq.2)then b = a

endif

確定と引用の競合

image 2 image 1

a a[2]

b

integer,save :: b, a[*]

if(THIS_IMAGE().eq.1)then a[2] = a

else if(THIS_IMAGE().eq.2)then a = b

endif

確定と確定の競合

image 2 image 1

a a[2]

b

正しい順序 実

行を保証す う

コ ドを書く

 上記 う 競合 起こ ロ ,規格違反

 同期を追加 必要 あ

(9)

9 © Nどで でorporation 201す

Fortran 2008 coarray 機能概要(5)

ータ 整合性を保証 手段

Fortran 同期機能

SYNC ALL

SYNC IMAGES

CRITICAL 構文

LOCK 文,UNLOCK文

SYNC MEMORY 文 + Fortran以外 手段 同期

SYNC MEMORY 文 , 操作 完了を保証

SYNC MEMORY 文 + atomicサ ーチン 同期

atomic サ ーチン(組込 手続) ,coarray atomic

引用・確定 可能

(10)

ータ 整合性を保証 手段 (1)

SYNC ALL

 全image 同期を取

 ロ 実行 segment 分割さ

segment 完了時 , 以前 操作 完了 保証さ

例: segment B segment A 実行後 実行さ

(NUM_IMAGES() ,全image 個数を返 組込 関数) integer, save :: a[*] ! coarray if(THIS_IMAGE().eq.1)then

do i=2, NUM_IMAGES()

a[i] = a ! image a 値を確定 enddo

endif

SYNC ALL

! image aを引用す :

segment A

segment B image 2

image 1

a a[2]

coarray 変数 a を引用

SYNC ALL

image 3 a[3]

segment A

segment B

SYNC ALL [ ( [ sync-stat-list ] ) ]

(11)

11 © Nどで でorporation 201す

segment

実行 一部分

image control statement を実行 , ロ

実行 , 前後 ,二 segment 分割さ

 操作 ,segment 実行完了時 完了し い

image control statement ,次 う 文 あ

SYNC ALL

SYNC IMAGES

LOCK 文,UNCLOK文

CRITICAL 文,END CRITICAL文

ALLOCATABLE 属性を coarray を明示的 又 暗黙的 割付け 又

解放 文 実行

ALLOCATE文,DEALLOCATE文,RETURN文

SYNC MEMORY

を正 く実行 ,次 2点 必要

操作 完了 ほ い箇所 segment 分割

必要 順序 segment 実行さ う 同期を書く

(12)

ータ 整合性を保証 手段 (2)

SYNC IMAGES

指定し image 同期を取 (* ,全imageを意味 )

例: segment C segment A ・B 実行後 実行さ

image 2 image 1

a a[2]

変数a,bを 引用す

image 3

b[2] b

segment A segment B

segment C

integer, save :: b[*], a[*] ! coarray if(THIS_IMAGE().eq.1)then

a[2] = a ! 変数a[2]を確定す

SYNC IMAGES(2)

else if(THIS_IMAGE().eq.3)then b[2] = b ! 変数b[2]を確定す

SYNC IMAGES(2)

else if(THIS_IMAGE().eq.2)then SYNC IMAGES((/1, 3/))

! 変数a, bを引用す endif

segment A

segment B

segment C

SYNC IMAGES ( image-set [ , sync-stat-list ] )

image-set ,image番号を値 持 式 又 *

SYNC IMAGES

(13)

13 © Nどで でorporation 201す

LOCK 文、UNLOCK文

lock 変数 ロッ 操作・ロッ 解除操作を行う

lock 変数 ,型LOCK_TYPE coarray

型LOCK_TYPE ,組込 ュー ISO_FORTRAN_ENV 定義さ

例: segment A ,ロッ を獲得し image け 実行

ータ 整合性を保証 手段 (3)

use, intrinsic :: ISO_FORTRAN_ENV type(LOCK_TYPE),save :: lock[*] integer, save :: a[*]

LOCK(lock[2]) a[2] = a[2] + 1 UNLOCK(lock[2])

image 2 image 1

a[2]

image 3 segment A segment A segment A

segment A

LOCK ( lock 変数 [ , lock-stat-list ] )

UNLOCK ( lock 変数 [ , sync-stat-list ] )

LOCK( lock 変数 , ACQUIRED_LOCK=

論理型変数

)

う ,ACQUIRED_LOCK指定子を け ,非 ロッキン 実行 ,論

理型変数 ,ロッ を獲得 場合 真, 場合 偽

(14)

ータ 整合性を保証 手段 (4)

CRITICAL 構文

実行文 列 を同時 実行 image を一 制限

 コード 一部分 対 ロッ 考え

例: segment A ,各image 逐次的 実行

image 2 image 1

a[2]

image 3

segment A segment A segment A integer,save :: a[*] ! coarray CRITICAL

a[2] = a[2] + 1 END CRITICAL

segment A

CRITIAL

実行文 列

END CRITICAL

(15)

15 © Nどで でorporation 201す

ータ 整合性を保証 手段 (5)

SYNC MEMORY 文+Fortran以外 手段 同期

segment を分割

例: segment B segment A 実行後 実行さ

SYNC MEMORY 無い ,処理系 ,確定や引用 実行順序を変

更 可能性 あ ,正しい実行 保証さ い

image 2 image 1

a a[2]

変数 a を引用す

利用者独自 同期 +SYNC MEMORY

image 3 a[3]

segment A

segment B

segment A

segment B integer,save :: a[*] ! coarray

if(THIS_IMAGE().eq.1)then do i=2, NUM_IMAGES()

a[i] = a ! image a 値を確定 enddo

endif

SYNC MEMORY

call mybarrier() ! 利用者独自 同期 SYNC MEMORY

! image aを引用す

:

SYNC MEMORY [ ( [ sync-stat-list ] ) ]

(16)

問合せ組込 関数

NUM_IMAGES()

 全image 個数を返

THIS_IMAGE([ COARRAY [ ,DIM ]])

 THIS_IMAGE() 場合,自image image番号を返

 THIS_IMAGE(COARRAY [,

DIM

]) 場合,引数COARRAY image

構成 関 ,自image 座標 (引数DIMを指定 た場合,

DIM 次元目 )を返

LCOBOUND, UCOBOUND(COARRAY [ ,DIM ] [ ,KIND ])

 引数COARRAY image構成 関 ,cobound 下限,上限

を(引数

DIM

を指定 た場合,

DIM

次元目 )

IMAGE_INDEX(COARRAY, SUB)

 引数COARRAY ,引数SUB 指定さ たcosubscript 対応

image 番号を返

(17)

17 © Nどで でorporation 201す

coarray 主要 機能 (Fortran 2008)

ータマッ ン

通信

並列処理・同期

coarray 全image上 必 存在

例)

2次元coarray配列a(10,10) 、全image上 存在

real, save :: a(10,10)[*]

基本的 代入文 形 書く(片側通信・手動)

例)

image 2上 bを、image 1上 b 代入

b[1] = b[2]

各image 独立し 動作し、image間 処理 手動

そ 他

問合せ組込 手続 : THIS_IMAGE, NUM_IMAGES 等

atomic ーチン : ATOMIC_REF, ATOMIC_DEFINE

同期: SYNC ALL文, SYNC IMAGES文 操作 完了: SYNC MEMORY文

1 image毎 実行: CRITICAL構文

ッ ・ ッ 解除: LOCK文, UNLOCK文

(18)

姫野ベンチMPI版coarray化 要点(1)

宣言・割付け等

real(4),dimension(:,:,:),allocatable::p real(4) :: gosa

:

! 3次元 構成 生成

call mpi_cart_create(icomm,ndims,idm,& ipd,ir,mpi_comm_cart,ierr)

! 座標 取得

call mpi_cart_get(mpi_comm_cart, & ndims, idm, ipd, iop, ierr) :

! 各次元 ータ イ

imax= mx2(iop(1)) jmax= my2(iop(2)) kmax= mz2(iop(3))

! 各次元 割付け イ

mimax= imax + 1 mjmax= jmax + 1 mkmax= kmax + 1 :

allocate(p(mimax,mjmax,mkmax)) ! 割付け

real(4),dimension(:,:,:),allocatable::p[:,:,:] real(4),allocatable,CODIMENSION[:,:,:]::gosa

! 各image 各次元 割付け イ

mimax= maxval(mx2(0:ndx-1)) + 1 mjmax= maxval(my2(0:ndy-1)) + 1 mkmax= maxval(mz2(0:ndz-1)) + 1 :

! 3次元 image構成 割 付け

allocate(p(mimax,mjmax,mkmax)[ndx,ndy,*]) allocate(gosa[ndx,ndy,*])

! 自image 座標 取得(3次元構成)

iop(:) = THIS_IMAGE(p)

! 各image 各次元 ータ イ

imax= mx2(iop(1)-1) jmax= my2(iop(2)-1) kmax= mz2(iop(3)-1)

 MPI 場合  coarray 場合

coarray image 同一

ータ 毎 異

必要 ータ

coarray

(19)

19 © Nどで でorporation 201す

姫野ベンチMPI版coarray化 要点(2)

主要計算部

do loop=1,nn

:

! coarray コ ー gosa = wgosa

SYNC ALL ! 全image 同期 do i=1, NUM_IMAGES()

! 他 image上 gosaを加算

if(THIS_IMAGE() .ne. i)then gosa = gosa + gosa[i] endif

enddo enddo

各image内 閉 た計算 ,そ

大丈夫

集団操作 ,処 理を書 下

通信 , 次ベー 参照

 MPI 場合  coarray 場合

do loop=1,nn :

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) & :

wgosa=wgosa+ss*ss

wrk2(I,J,K)=p(I,J,K)+omega*ss enddo

enddo enddo

p(2:imax-1,2:jmax-1,2:kmax-1)= & wrk2(2:imax-1,2:jmax-1,2:kmax-1)

call sendp(ndx,ndy,ndz)

call mpi_allreduce(wgosa,gosa,1,mpi_real4,& mpi_sum,mpi_comm_world,ierr) enddo

(20)

姫野ベンチMPI版coarray化 要点(3)

通信(1次元目方向 例)

MPI 場合

coarray 場合

! 派生 ータ型 作成

call mpi_type_vector(jmax*kmax,1,mimax,& mpi_real4,jkvec,ierr)

! 派生 ータ型 登録

call mpi_type_commit(jkvec,ierr)

通信 1

2次元目

image [i-1,j,k]

! 派生 ータ型 通信

call mpi_isend(p(2,1,1),1,jkvec,npx(1),1& , mpi_comm_cart,ireq(0),ierr)

SYNC ALL if(ndx > 1)then

if(iop(1).ne.1) p(imax, :jmax, :kmax)[iop(1)-1,iop(2),iop(3)] = p(2, :jmax, :kmax) ! 1次元目下側 if(iop(1).ne.ndx)p(1, :jmax, :kmax)[iop(1)+1,iop(2),iop(3)] = p(imax-1, :jmax, :kmax) ! 1次元目上側 endif

ータ型 や 処理系 知

,利用者 部分配列 代入文 書け (効率 く転送 別 話)

MPI_PROC_NULL う 特殊 指定 端 imageを除外 必要 あ

ータ型や 指定 必要( ッ 方法 あ )

配列 1-2次元平面 断面図

image [i,j,k]

(21)

21 © Nどで でorporation 201す

次期Fortran規格 (Fortran 2015)

2018 7 月リリース予定

機能拡張 行わ い

並列処理機能 拡張(coarray 拡張) (TS 18508)

C 相互利用可能性 拡張 (TS 29113)

 Fortran 2008 問題点・矛盾点を修正

(22)

並列処理機能 拡張

並列

片方向同期

collective ーチン

atomic ーチン 追加

ォー ン 機能

(23)

23 © Nどで でorporation 201す

並列(1)

team

image 部分集合

image 番号 ,各 team 1~ image 個数 値を

基本的 現在 team image 実行さ

 team 識別子

 team 番号 ( 兄弟間 )

利用者 指定し 整数値

 team 変数 ( 先祖 親子間 )

TEAM_TYPE カラ変数(値を設定す 処理系)

TEAM_TYPE ,組込みモ ISO_FORTRAN_ENV 定義さ

image image image image

image番号 1 2 1 2

image image image image

image番号 1 2 3 4

team 1 team 2

(24)

並列(2)

FORM TEAM 文: teamへ 分割

image image image image image image image image

1 2 3 4

FORM TEAM ( team 番号, team変数 [ , form-team-spec-list ] )

カラ整数式 (n) ,各 image 所属す

team番号

を指定す

•MPI_Comm_split 引数color 相当す

team変数

(t) image 所属す team 情報 処理系 設定さ

•MPI_Comm_split 引数newcomm 相当す

NEW_INDEX=

カラ整数式

を指定す team image image 番号

を指定 (省略し 場合 ,処理系依存 値 )

use, intrinsic:: ISO_FORTRAN_ENV type(TEAM_TYPE) :: t

n = (THIS_IMAGE()-1) / 2 +1 i = mod(THIS_IMAGE()-1,2) + 1 FORM TEAM(n, t, NEW_INDEX=i)

image番号 1 2 1 2

team 1 team 2

(25)

25 © Nどで でorporation 201す

並列(3)

CHANGE TEAM 構文: 現在 team を変更

各image ,自身 属 現在 team 全image あ

う ,他 team 独立し 処理を行う

CHANGE TEAM ( team 変数 [ , coarray-association-list ] [ , sync-stat-list ] )

実行文 列

END TEAM [ (sync-stat-list) ]

program main

use, intrinsi :: ISO_FORTRAN_ENV type(TEAM_TYPE) :: t

n = (THIS_IMAGE()-1) / 2 +1 i = mod(THIS_IMAGE()-1,2) + 1 FORM TEAM(n, t, NEW_INDEX=i) ! 現在 team ,全image

CHANGE TEAM(t) ! team t内 同期

:

! 現在 team t (team 1 or team 2)

:

END TEAM ! team t内 同期

image image image image image image image image

1 2 1 2

team 1 team 2

1 2 3 4

t t

(26)

並列(4) team毎 異 処理を

組込 関数TEAM_NUMBER

image image image image

TEAM_NUMBER([ team 変数 ])

 team変数

対応 team 番号を返

 team変数

が省略された場合,自image 現在 team team番号

use, intrinsic :: ISO_FORTRAN_ENV type(TEAM_TYPE) :: t

n = (THIS_IMAGE()-1) / 2 +1 i = mod(THIS_IMAGE()-1,2) + 1 FORM TEAM(n, t, NEW_INDEX=i) CHANGE TEAM(t)

! 現在 team ,t

select case (TEAM_NUMBER()) case(1)

call compute_land() case(2)

call compute_ocean() end select

END TEAM

1 2 1 2

team 1 team 2

image image image image

1 2 3 4

t t

(27)

27 © Nどで でorporation 201す

並列(5)

image selector : 他 team coarray 参照

[ スカラ整数式-list [ , team 識別子 ] [ , STAT= 整数型スカラ変数 ] ]

•team識別子

TEAM_NUMBER=team番号

TEAM=team変数

use, intrinsic :: ISO_FORTRAN_ENV real, save :: a[*]

type(TEAM_TYPE) :: t1, t2 :

CHANGE TEAM(t1) ! 現在 team t1

b = a[1] ! team t1 a[1] CHANGE TEAM(t2) ! 現在 team t2

b = a[1] ! team t2 a[1] c = a[1, TEAM=t1 ] ! team t1 a[1] END TEAM

END TEAM

 team識別子

を指定し い場合,現在 team け image番号

 team番号

,兄弟team

team番号

を指定する

 team変数

,現在 team 又 祖先 team

team変数

を指定

image image

a[1] a[2]

t0

1 2 3 4

image image

t1

1 2

image

1

image

1

t2 t2

image image image image

image

1 a[3] a[4]

t1

1 2

image

1

t2 t2

(28)

並列(6)

image 構成 再定義

CHANGE TEAM 文中 ,coarray 別名 codimensionを指定

,image構成を変更

program main

use, intrinsic :: ISO_FORTRAN_ENV real,save :: a[2, *]

type(TEAM_TYPE) :: t1

i = THIS_IMAGE(a, 1) ! 1次元目 cosubscript

n= THIS_IMAGE(a,2) ! 2次元目 cosubscript FORM TEAM(n,t1,NEW_INDEX=i) ! 各列 CHANGE TEAM(t1, aa[*] =>a)

b = a[1,1] ! team t1 a[1,1] c = aa[1] ! team t1 aa[1] END TEAM

image 1

t1

t0

t1

image 2

a[2,1]

image 3

a[1,2]

image 4

a[2,2]

image 1

image 2

image 1

image 2

a[1,1]

=>a[1,1] aa[1]

aa[2]

aa[1]

aa[2]

=>a[2,1]

=>a[1,1]

=>a[2,1]

(29)

29 © Nどで でorporation 201す

並列(7)

SYNC TEAM

指定し team 全image 同期を取

image image image image image image image image

1 2 3 4

SYNC TEAM ( team 変数 [ , sync-stat-list ] )

team t0 同期を

 SYNC ALL 同期範囲拡張版

use, intrinsic :: ISO_FORTRAN_ENV type(TEAM_TYPE) :: t0, t1 :

FORM TEAM(n, t1, NEW_INDEX=i) :

CHANGE TEAM(t1) :

SYNC TEAM(t0) ! team t0 同期

image番号 1 2 1 2

同期

t0

t1 t1

(30)

問合せ組込 関数 拡張

IMAGE_INDEX(COARRAY, SUB [ , team 変数 team 番号 ] )

• team変数

team番号

指定さ たteam (省略時 現在

team) け ,引数COARRAY ,引数SUB 指定さ た

cosubscript 対応 image 番号を返

NUM_IMAGES( [ team 変数 又 team 番号 ] )

• team 変数 又 team番号 指定さ たteam (省略時 現在

team) ,全image 個数を返

THIS_IMAGE([ COARRAY [ , DIM ]] [ , team 変数 ])

• THIS_IMAGE( [

team変数

] ) 場合,

team変数

指定さ たteam (省

略時 現在 team) け ,自image image番号を返

• THIS_IMAGE(COARRAY [

, DIM

] [

, team変数

] ) 場合,

team変数

指定

さ たteam (省略時 現在 team) ,引数COARRAY

image 構成 関 自image 座標 (引数

DIM

を指定 た

場合,

DIM

次元目 ) を返

(31)

31 © Nどで でorporation 201す

片方向同期(1)

image P ータを設定 ,image Q そ を使

う 場合

image Q ,image P 設定処理 完了を待

image P ,image Q 処理を待 必要 い

 event 変数 を使用し 同期を行う

EVENT_TYPE coarray カラ変数

EVENT_TYPE ,組込みモ ISO_FORTRAN_ENV 定義さ

同期 ,待 image event 変数 を使用す

 event 変数 ,成分 event 数を持

 event 初期値 0

組込み チン EVENT_QUERY(event 変数 , COUNT [

, STAT

]) event

数を問合せ可能

image P image Q

e[2]

通知 待

event 数++

event 数 閾値以上

(32)

片方向同期(2)

EVENT POST 文 : 通知

event 変数 event数をatomic 1増や

EVENT POST ( event 変数 [ , sync-stat-list ] )

(33)

33 © Nどで でorporation 201す

片方向同期(3)

EVENT WAIT 文 : 待ち

EVENT WAIT ( event 変数 [ , wait-spec-list ] )

wait-spec

UNTIL_COUNT=スカラ整数式

閾値を指定可能

 event 閾値以上 迄待 ,値を atomic 閾値分

け減 す

 UNTIL_COUNT= カラ整数式

を省略し 場合,閾値 1

image coarray event 変数 を指定す

use,intrinsic::ISO_FORTRAN_ENV type(EVENT_TYPE) :: e[*] real a[*]

:

if(THIS_IMAGE().eq.1)then a[2] = b ! a 値を設定 EVENT POST(e[2])

else

EVENT WAIT(e)

call calc(a) ! a 値を引用 endif

image 2 image 1

b a[2]

変数aを引用

segment A

segment B

e[2]

segment B

segment A

実行後 実行

EVENT POST(e[2])

EVENT WAIT(e)

(34)

collective ーチン

CO_BROADCAST(A,SOURCE_IMAGE [ ,STAT ] [ ,ERRMSG ] )

image SOURCE_IMAGE 上 変数A 値を,現在 team 全

image 上 コピー (MPI_Bcast 同様)

集計計算

CO_SUM(A [ ,RESULT_IMAGE ] [ ,STAT ] [ ,ERRMSG ] )

現在 team内 全image上 、引数A 値 総和を計算

引数RESULT_IMAGEを指定し 場合,結果 image RESULT_IMAGE上

引数A け 代入さ (MPI_Reduce 同様)

引数RESUT_IMAGEを省略し 場合,結果 現在 team 全image上

引数A 代入さ (MPI_Allreduce 同様)

CO_MAX, CO_MIN

CO_REDUCE(A, OPERATOR [ ,RESULT_IMAGE ] [ ,STAT ] [ ,ERRMSG ])

引数OPERATOR ,二 カ 引数を 純粋要素別処理関

数を指定

 可換 結合則 成 立 関数 け い

(35)

35 © Nどで でorporation 201す

coarray 主要 機能 (Fortran 2015)

ータマッ ン

通信

並列処理・同期

coarray 割付け時 team 全image上 必 存在

例)

2次元coarray配列a(10,10) 、全image上 存在

real, save :: a(10,10)[*]

基本的 代入文 形 書く(片側通信・手動)

例)

team t image 2上 bを、image 1上 b 代入

b[1] = b[2, TEAM=t ]

各image 独立し 動作し、image間 処理 手動

そ 他

問合せ組込 手続 : THIS_IMAGE, NUM_IMAGES 等

collective ーチン: CO_SUM, CO_BROADCAST 等 atomic ーチン : ATOMIC_REF, ATOMIC_DEFINE 等 並列: FORM TEAM文, CHANGE TEAM構文

同期: SYNC TEAM, SYNC ALL文, SYNC IMAGES文 片方向同期: EVENT POST文, EVENT WAIT文

操作 完了: SYNC MEMORY文 1 image毎 実行: CRITICAL構文

ッ ・ ッ 解除: LOCK文, UNLOCK文

(36)

参照

関連したドキュメント

フロートの中に電極 と水銀が納められてい る。通常時(上記イメー ジ図の上側のように垂 直に近い状態)では、水

防災課 健康福祉課 障害福祉課

第二の,当該職員の雇用および勤務条件が十分に保障されること,に関わって

Q7 

[r]

また、手話では正確に表現できない「波の音」、 「船の音」、 「市電の音」、 「朝市で騒ぐ 音」、 「ハリストス正教会」、

[r]

添付資料 2.7.1 インターフェイスシステム LOCA 発生時の現場環境について 添付資料 2.7.2 インターフェイスシステム LOCA