원본 프로그램에서 "source" 인스턴스가 "target" 인스턴스보다 먼저 실행해야 하는 경우, 변환된 프로그램은 위 속성을 유지해야 함(의존성을 충족해야 함).
Lexicographic Order
original
S1(0, i, 0, 0, 0) >> S2(0, i, 1, j, 0)
illegal transform
S1(0, i, 1, 0, 0) >> S2(0, i, 0, j, 0)
Dependence Relation
Dependence relation은 세가지의 종류로 분류 가능함
Uniform dependences
두 dependent iteration이 상수일 경우
(i) -> (i + 1)
(i, j) -> (i + 1, j + 1)
Non-uniform dependences
(i) -> (i + j)
(i) -> (2i)
Parametric dependences
(i) -> (i + N)
(i + N) -> (j + M)
Dependence Polyhedron
Objective: compute the set of statement instances which are dependent
Some of the several possible approaches:
Distance vector: compute an indicator of the distance between two dependent iteration
Problems: approximative for non-uniform dependences
Best solution: Dependence polyhedron, list of sets of dependent instances, with a set of dependence polyhedra for each pair of statements
Principle: model all pairs of instances in dependence
Definition (Dependence of statement instances)
A statement R depends on a statement S (written S→R) if there exists an operation S(xS) and R(xR) and a memory location m such that:
S(xS) and R(xR) refer to the same memory location m, and at least one of them writes to that location,
xS and xR belongs to the iteration domain of R and S,
in the original sequential order, S(xS) is executed before R(xR).
Data Dependent Graph
구문이 종속적인 경우 구문 사이에는 에지가 있습니다. 그리고 각 에지에 대해 주어진 레벨 l에서 S→R에 대한 dependence polyhedron를 정의하고 주어진 참조 쌍 fR , fS에 대해 정의합니다.
주어진 아핀 배열 액세스 쌍에 대해 항상 dependence polyhedron를 구축할 수 있음
반복 영역과 액세스 함수도 정확하다면 정확합니다.
정의하는 모든 제약 조건이 아핀이므로 행렬로 표현할 수 있습니다.
합법적인 프로그램 변환
종속성이 하이퍼플레인을 거꾸로 가로지르는 경우 변환은 불법
두 하이퍼플레인 사이에서 정방향으로 가는 종속성은 순차성을 나타냄
하이퍼플레인의 어떤 지점 사이에도 종속성이 없으면 병렬성을 나타냄
Definition (Precedence condition)
Given ΘT a schedule for the instance of T, ΘS a schedule for the instance of S. ΘT and ΘS are legal schedules if ∀<xS , xT>∈DS,T : ΘS<<ΘT
Equivalently: ∆T,S=ΘT−ΘS≥1
잘 읽었습니다. 좋은 정보 감사드립니다.