No

d'Ordre

THESE

Pr?esent?ee

devant

L'Universit

e

de

Rennes

I

Institut

de

Formation

Sup?erieure

en

Informatique

et

Communication

Pour

obtenir

le

titre

de

Docteur

de

l'Universit

e

de

Rennes

I

Mention

INFORMATIQUE

par

Thierry

MONTAUT

Sujet

M?ethodes

pour

l'

elimination

du

faux-partage

et

l'optimisation

de

la

localit?e

sur

une

machine

parall?ele

a

m?emoire

virtuelle

partag?ee

Soutenue

le

Septembre

devant

la

Commission

d'Examen

MM

Jean-Pierre

Ban

atre

Pr?esident

Paul

Feautrier

Rapporteur

Alain

Lichnewsky

Rapporteur

Mme

Corinne

Ancourt

Examinatrice

MM

Fran?cois

Bodin

Examinateur

William

Jalby

Examinateur

Andr?e

Seznec

Examinateur

Remerciements

Je

voudrais

remercier

mon

directeur

de

th?ese

William

Jalby

pour

la

confiance

qu'il

a

su

m

exprimer

ainsi

que

pour

son

aide

et

ses

conseils

Je

voudrais

en

second

lieu

remercier

les

personnes

qui

ont

accept?e

d'

etre

membre

de

mon

jury

Jean-Pierre

Ban

atre

Directeur

de

l'IRISA

qui

me

fait

l'honneur

de

pr?esider

ce

jury

Alain

Lichnewsky

pour

avoir

accept?e

la

charge

de

rapporteur

de

cette

th?ese

et

pour

le

jugement

qu'il

apporta

a

mon

travail

Paul

Feautrier

qui

a

depuis

longtemps

accept?e

d'

etre

rapporteur

de

cette

th?ese

Je

le

remercie

pour

l'int

er

et

qu'il

a

bien

voulu

apporter

a

mon

travail

Je

voudrais

egalement

saluer

sa

tr?es

grande

rigueur

qui

l'

a

conduit

a

me

signaler

bon

nombre

d'erreurs

et

de

maladresses

dans

les

premi?eres

versions

de

ce

document

Corinne

Ancourt

avec

qui

les

discussions

furent

fructueuses

sur

un

sujet

qu'elle

conna

t

si

bien

et

qui

accepta

d'examiner

cette

th?ese

avec

une

gentillesse

qui

ne

surprendra

pas

ceux

qui

la

connaissent

Fran?cois

Bodin

qui

fut

beaucoup

plus

qu'un

examinateur

et

me

guida

me

conseilla

et

me

supporta

durant

ces

ann?ees

de

th?ese

Le

lecteur

se

convaincra

facilement

a

la

lecture

de

ce

document

de

l'importance

de

ses

travaux

dans

le

domaine

auquel

je

me

suis

int?eress?e

Andr?e

Seznec

qui

su

faire

r?egner

aussi

bien

la

rigueur

scientifique

que

la

libert?e

d'action

dans

l'

equipe

CAPS

a

ma

m?ere

a

mes

grands-parents

Table

des

mati?eres

Table

des

mati?eres

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

Classification

des

machines

parall?eles

MIMD

Machines

a

m?emoire

partag?ee

Machines

a

m?emoire

distribu?ee

Solutions

hybrides

M?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

Le

concept

de

m?emoire

virtuelle

partag?ee

La

notion

de

page

Coh?erence

des

donn?ees

Gestion

des

pages

d'une

MVP

Droits

d'acc

es

a

une

page

Propri?etaire

D?efauts

de

pages

Mises

en

oeuvre

de

MVP

Environnements

de

programmation

pour

MVP

L'environnement

Fortran-S

Choix

d'un

mod?ele

de

parall?elisme

Choix

d'un

mode

d'ex

ecution

parall?ele

Discussion

Les

atouts

de

la

m?emoire

virtuelle

Les

faiblesses

de

la

m?emoire

virtuelle

Les

caract?eristiques

de

notre

approche

Etude

du

ph?enom?ene

de

faux-partage

Analyse

des

acc?es

aux

pages

de

la

MVP

Un

exemple

de

faux-partage

Classification

des

pages

Calcul

du

nombre

minimum

de

migrations

de

pages

Co

ut

d'un

conflit

Conclusions

Exemple

d'application

Notion

de

Pav?e

D?etermination

des

classes

de

pages

Calcul

du

co

ut

de

communication

Table

des

mati?eres

Co

ut

maximal

des

conflits

Distribution

des

pages

conflictuelles

Etude

exp?erimentale

Description

des

exp?eriences

Analyse

des

r?esultats

Conclusions

Outils

math?ematiques

pour

la

g?en?eration

de

code

Rappels

sur

les

poly?edres

et

les

treillis

Application

d'une

transformation

lin?eaire

non

enti?ere

Pr?esentation

du

probl?eme

D?etermination

des

it?erations

de

la

boucle

transform?ee

Calcul

des

bornes

de

boucles

Analyse

des

d?ependances

du

programme

transform?e

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

Pr?esentation

du

probl?eme

Elimination

en

nombres

entiers

R?esum?e

de

la

m?ethode

Exemples

Exemple

Exemple

Conclusions

R?eduction

des

effets

du

faux-partage

Synth?ese

des

travaux

ant?erieurs

Regroupement

des

op?erations

d'

ecriture

Impact

sur

les

performances

Partitionnement

d'un

nid

de

boucles

parall?eles

en

blocs

justifi?es

Hypoth?eses

D?etermination

des

blocs

Distribution

des

blocs

Exemple

Etude

particuli?ere

de

deux

cas

classiques

Nid

de

boucle

a

une

dimension

Nid

de

boucles

parall?eles

a

deux

dimensions

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

La

boucle

externe

est

s?equentielle

La

boucle

interne

est

s?equentielle

R?egion

acc?ed?ee

par

une

it?eration

de

la

boucle

ex

terne

D?etermination

des

partitions

possibles

Choix

d'un

partitionnement

Am?elioration

de

l'

equilibre

des

charges

Cas

de

boucles

contenant

plusieurs

r?ef?erences

en

ecritures

Table

des

mati?eres

R?eduction

des

synchronisations

entre

nids

de

boucles

Cas

d'une

d?ependance

ecrivain

ecrivain

Cas

d'une

d?ependance

ecrivain-lecteur

Cas

d'une

d?ependance

lecteur

ecrivain

Exemple

Conclusions

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

Localit?e

Localit?e

temporelle

r?eutilisation

de

donn?ees

Localit?e

spatiale

Construction

d'une

transformation

am?eliorant

la

localit?e

Hypoth?eses

Choix

des

vecteurs

de

localit?e

Construction

et

propri?et?es

de

la

transformation

Technique

de

parall?elisation

adapt?ee

a

la

MVP

Application

a

un

exemple

Analyse

des

d?ependances

Vecteurs

de

localit?e

Construction

de

la

transformation

am?eliorant

la

localit?e

des

ecritures

Partitionnement

de

la

boucle

Prise

en

compte

de

la

localit?e

spatiale

des

lectures

Conclusions

Validation

exp?erimentale

Programme

PERMEA

Programme

DMXPY

Version

originale

Version

triangulaire

Programme

Algorithme

de

Gram-Schmidt

Performances

Conclusions

Conclusions

A

Le

syst?eme

KOAN

une

MVP

pour

l'iPSC

A.

Performances

intrins?eques

du

syst?eme

KOAN

A.

Co

uts

de

communication

A.

D?efauts

en

lecture

A.

Producteur-consommateur

A.

D?efauts

en

ecriture

A.

conclusions

Table

des

mati?eres

Table

des

figures

Table

des

figures

Classification

de

Raina

des

machines

MIMD

Organisation

des

machines

MIMD

a

m?emoire

partag?ee

Organisation

des

machines

MIMD

a

m?emoire

distribu?ee

Protocoles

de

migration

de

pages

Influence

de

l'ordonnancement

sur

le

faux

partage

S?equentialisation

des

acc?es

en

cas

de

conflit

-LRB-

Cas

d'un

conflit

entre

processeurs

-RRB-

Influence

du

d?elai

de

calcul

sur

le

ph?enom?ene

de

ping-pong

pour

diff?erentes

valeurs

du

co

ut

maximal

du

conflit

Cas

d'un

conflit

entre

deux

processeurs

Influence

du

co

ut

maximal

du

conflit

sur

le

ph?enom?ene

de

pingpong

pour

diff?erentes

valeurs

du

d?elai

de

calcul

Cas

d'un

conflit

entre

deux

processeurs

Conflit

entre

deux

processeurs

et

Conflit

entre

un

processeur

et

le

gestionnaire

D?efinition

des

pav?es

Conflit

sur

une

page

Pi

et

sont

deux

colonnes

adjacentes

Influence

de

la

taille

des

colonnes

sur

le

nombre

de

pages

dans

chaque

classe

Cas

de

colonnes

r?eparties

sur

processeurs

Influence

de

la

taille

des

colonnes

sur

le

nombre

de

conflits

Cas

de

colonnes

r?eparties

sur

processeurs

Comparaison

entre

le

nombre

exp?erimental

de

migrations

de

page

-LRB-

en

pointill?e

-RRB-

et

le

minimum

th?eorique

-LRB-

en

trait

plein

-RRB-

Cons?equences

de

l'effet

ping-pong

d?efauts

de

pages

provo

qu?es

par

conflits

Algorithme

d'

elimination

de

Fourier-Motzkin

sur

Q

Exemple

de

poly?edre

convexe

a

projection

enti?ere

non

convexe

x

Points

entiers

du

poly?edre

d?efini

par

le

syst?eme

-LRB-

S

-RRB-

Exemple

de

partitionnement

du

domaine

d'it

eration

en

treillis

Effets

d'un

regroupement

des

ecritures

Table

des

figures

Recouvrement

d'un

tableau

par

des

blocs

de

pages

de

taille

donn?ee

Partitionnement

en

blocs

justifi?es

Les

trois

types

de

r?egions

acc?ed?ees

par

la

boucle

externe

Exemple

de

partition

en

pav?es

Dilatation

des

vecteurs

Effets

de

l'allongement

sur

le

nombre

de

d?efauts

de

pages

Pavage

Utilisation

d'une

dilatation

de

vecteurs

pour

r?eduire

la

taille

des

patrons

et

ordonnancement

par

patrons

N

sur

processeurs

N

sur

processeurs

Limitation

en

speed-up

du

blocage

N

sur

processeurs

N

Comparaison

des

Speed-up

du

pavage

et

du

blocage

Elimination

du

faux-partage

et

inutilit?e

d'une

synchronisation

dans

le

cas

de

partitionnement

justifi?e

utilisant

la

m

eme

association

entre

pages

et

processeurs

Exemple

les

pages

contiennent

trois

el?ements

on

partitionne

par

blocs

d'une

page

sur

deux

processeurs

Cas

d'une

image

non

convexe

Importance

du

choix

du

vecteur

de

localit?e

Image

des

vecteurs

d'it

eration

et

de

localit?e

spatiale

Points

acc?ed?es

par

les

diff?erents

treillis

Performances

des

versions

originales

et

optimis?ees

de

PERMEA

-LRB-

a

-RRB-

Temps

d'ex

ecution

-LRB-

b

-RRB-

Speed-up

-LRB-

c

-RRB-

Dur?ees

maximales

-LRB-

secondes

-RRB-

pass?ees

par

un

processeur

en

d?efaut

de

page

en

ecriture

-LRB-

DPE

-RRB-

ou

en

lecture

-LRB-

DPL

-RRB-

nombre

correspondant

de

d?efauts

Temps

d'ex

ecution

des

versions

originales

et

optimis?ees

du

pro-

gramme

DMXPY

-LRB-

Test

-RRB-

Temps

d'ex

ecution

des

versions

originales

et

optimis?ees

du

pro-

gramme

DMXPY

triangulaire

-LRB-

Test

-RRB-

Temps

d'ex

ecution

des

versions

originales

et

optimis?ees

du

pro-

gramme

Algorithme

de

Gram-Schmidt

modifi?e

Programme

C

apr?es

pavage

de

l'algorithme

de

Gram-Schmidt

Pavage

de

l'algorithme

de

Gram-Schmidt

Localit?e

temporelle

spatiale

et

equilibre

des

charges

Algorithme

de

Gram-Schmidt

comparaison

des

performances

pour

M

Table

des

figures

Notations

Certains

symboles

math?ematiques

utilis?es

dans

ce

document

n

etant

pas

standard

voici

une

liste

de

notations

accompagn?ees

de

leur

signification

N

Z

Ensemble

des

entiers

naturels

et

relatifs

Q

R

Corps

des

rationnels

et

des

r?eels

Mn

;p

-LRB-

A

-RRB-

-LRB-

n

p

-RRB-

Ensemble

des

matrices

de

taille

n

p

a

coefficients

dans

l'anneau

A

M

t

M

Mn

;p

-LRB-

A

-RRB-

Matrice

transpos?ee

de

la

matrice

M

j

-LSB-

n

p

-RSB-

j

-LRB-

n

p

-RRB-

Intervalle

entier

-LSB-

n

p

-RSB-

Z

bxc

x

R

maxfn

N

n

xg

dxe

x

R

minfn

N

n

xg

a

b

-LSB-

p

-RSB-

-LRB-

a

b

-RRB-

p

N

a

est

congru

a

b

modulo

p

i.e.

Ztel

que

a

b

kp

a

b

mod

p

-LRB-

a

b

-RRB-

p

N

a

b

-LSB-

p

-RSB-

et

a

j

-LSB-

p

-RSB-

j

s

-LRB-

x

-RRB-

x

R

si

x

sinon

s

-LRB-

x

-RRB-

x

R

si

x

sinon

Table

des

figures

Table

des

figures

Introduction

La

puissance

de

calcul

des

ordinateurs

qui

jusqu

a

une

epoque

r?ecente

n

etait

due

qu

a

l'

evolution

des

technologies

des

processeurs

et

de

la

m?emoire

a

connu

un

nouvel

essor

avec

l'av

enement

du

parall?elisme

La

coop?eration

entre

plusieurs

processeurs

a

l'int

erieur

d'une

m

eme

machine

se

r?epartissant

les

t

aches

afin

de

r?esoudre

un

probl?eme

commun

permet

d'esp

erer

des

capacit?es

de

traitement

o?u

la

seule

limitation

serait

le

nombre

de

processeurs

Si

les

puissances

actuelles

-LRB-

de

l'ordre

de

quelques

centaines

de

milliards

d'op

erations

en

virgule

flottante

par

seconde

-RRB-

ne

rendent

pas

encore

envisageable

la

r?esolution

des

probl?emes

du

programme

Grand

Challenges

Mod?elisations

climatiques

et

oc?eaniques

d?ecodage

du

g?enome

humain

analyse

des

turbulences

en

m?ecanique

des

fluides

etc.

les

nombreuses

recherches

d?evelopp?ees

dans

le

domaine

des

architectures

parall?eles

tendent

a

montrer

que

les

machines

parall?eles

a

m?emoire

distribu?ee

constituent

la

meilleure

voie

pour

atteindre

le

TeraFlops

-LRB-

mille

milliards

d'op

erations

en

virgule

flottante

par

seconde

-RRB-

Ce

type

d'organisation

de

la

m?emoire

offre

en

effet

un

double

avantage

d'une

part

les

couples

processeur-m

emoire

qui

les

composent

sont

de

fabrication

assez

ais?ee

et

d'autre

part

chaque

processeur

n

etant

reli?e

qu

a

un

nombre

limit?e

de

voisins

ces

machines

sont

plus

facilement

extensibles

a

un

grand

nombre

de

noeuds

alors

que

les

machines

a

m?emoires

partag?ees

semblent

limit?ees

a

une

centaine

de

processeurs

Ces

machines

souffrent

n?eanmoins

de

la

pauvret?e

de

leurs

environnements

de

programmation

Le

dispositif

de

m?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

propose

d'assouplir

la

t

ache

de

programmation

en

offrant

un

m?ecanisme

d'adressage

global

-LRB-

enti?erement

g?er?e

par

le

syst?eme

ou

le

mat?eriel

-RRB-

sur

les

machines

a

m?emoire

distribu?ee

Une

partie

de

la

m?emoire

locale

des

processeurs

est

alors

utilis?ee

comme

une

m?emoire

cache

d?ecoup?ee

en

blocs

de

taille

fixe

appel?es

pages

L'ensemble

des

diff?erents

caches

etant

adressable

par

tous

les

processeurs

et

constituant

la

m?emoire

virtuelle

L'avantage

principal

d'un

espace

d'adressage

global

est

qu'il

rend

possible

une

programmation

par

partage

de

variables

Tous

les

processeurs

ayant

la

possibilit?e

d'acc

eder

a

n'importe

quelle

zone

en

m?emoire

les

communications

entre

processeurs

peuvent

se

faire

par

ecriture

et

lecture

de

variables

communes

Ce

mode

de

communication

est

beaucoup

plus

souple

que

la

communication

par

echange

de

messages

et

lib?ere

le

programmeur

et

le

compilateur

de

la

gestion

des

messages

et

du

probl?eme

de

localisation

des

donn?ees

en

m?emoire

En

contrepartie

le

fait

que

Table

des

figures

la

localisation

des

donn?ees

soit

automatique

a

l'ex

ecution

-LRB-

donc

qu'elle

ne

soit

plus

contr

olable

-RRB-

impose

qu'un

grand

soin

lui

soit

apport?e

a

la

programmation

ou

a

la

compilation

Ceci

est

encore

renforc?e

par

le

choix

dans

ces

m?ecanismes

d'un

grain

important

de

traitement

-LRB-

la

page

-RRB-

aussi

bien

pour

les

transferts

de

donn?ees

que

pour

le

maintien

de

la

coh?erence

entre

les

caches

rendant

fondamentale

l'

etude

de

la

localit?e

des

acc?es

d'un

programme

D'une

part

l'acc

es

a

une

donn?ee

provoque

le

transfert

de

toute

la

page

qui

la

contient

dans

le

cache

du

processeur

on

a

donc

tout

int?er

et

a

ce

qu'un

processeur

n'acc

ede

qu

a

des

donn?ees

voisines

un

seul

transfert

de

page

pouvant

dans

ce

cas

lui

fournir

toutes

les

donn?ees

dont

il

a

besoin

D'autre

part

parce

que

les

protocoles

de

coh?erence

choisis

interdisent

a

deux

processeurs

d'

ecrire

simultan?ement

dans

une

m

eme

page

Cette

derni?ere

contrainte

est

a

l'origine

du

ph?enom?ene

de

faux-partage

-LRB-

l'acc

es

par

deux

processeurs

a

des

donn?ees

distinctes

appartenant

a

une

m

eme

page

-RRB-

qui

constitue

une

des

difficult?es

majeures

dans

la

recherche

de

performances

sur

une

MVP

L'

ecart

entre

les

performances

actuelles

de

ces

machines

et

la

performance

intrins?eque

qu'on

est

en

droit

d'attendre

d'elles

montre

que

de

nombreux

efforts

restent

a

accomplir

pour

am?eliorer

leurs

environnements

de

programmation

et

principalement

les

compilateurs

qui

leur

sont

associ?es

L'objectif

principal

de

cette

th?ese

est

d'

etudier

le

ph?enom?ene

de

faux-partage

et

d'en

d?eduire

les

modifications

qui

pourraient

etre

apport?ees

a

un

programme

lors

de

la

phase

de

compilation

en

vue

d'une

ex?ecution

plus

efficace

sur

une

MVP

Ces

modifications

ont

pour

buts

l'am

elioration

des

propri?et?es

de

localit?e

du

programme

par

transformation

des

nids

de

boucles

la

recherche

de

partitionnements

eliminant

ou

r?eduisant

les

effets

du

faux

partage

et

la

g?en?eration

automatique

de

codes

parall?eles

efficaces

Ces

travaux

s

ins?erent

dans

le

cadre

de

la

conception

et

de

la

r?ealisation

d'un

environnement

de

programmation

pour

machines

a

m?emoire

virtuelle

partag?ee

Fortran-S

-LSB-

-RSB-

La

suite

de

ce

document

est

organis?ee

de

la

mani?ere

suivante

Nous

pr?esentons

au

chapitre

une

classification

des

machines

parall?eles

a

m?emoire

distribu?ee

en

soulignant

les

avantages

et

les

inconv?enients

de

la

m?emoire

virtuelle

partag?ee

Nous

rappelons

les

principes

g?en?eraux

de

fonctionnement

des

MVP

et

les

choix

qui

ont

et?e

faits

pour

l'environnement

de

programmation

Fortran-S

Le

chapitre

a

pour

but

d'analyser

le

ph?enom?ene

de

faux-partage

et

en

propose

une

etude

d?etaill?ee

dans

le

cas

particulier

d'une

boucle

de

parcours

de

matrice

Les

le?cons

tir?ees

de

cette

etude

nous

serviront

de

base

dans

la

recherche

d'am

eliorations

possibles

Apr?es

avoir

d?evelopp?e

au

chapitre

un

ensemble

d'outils

th?eoriques

visant

a

g?en?eraliser

les

techniques

classiques

de

transformations

de

programmes

et

de

g?en?eration

de

code

nous

pr?esentons

au

chapitre

un

partitionnement

des

nids

de

boucles

permettant

d'

eliminer

ou

de

r?eduire

les

effets

du

faux-partage

dans

de

tr?es

nombreux

cas

Nous

proposons

au

chapitre

d'adapter

la

d?efinition

des

vecteurs

de

localit?e

spatiale

au

cas

des

MVP

et

nous

montrons

comment

les

techniques

d?evelopp?ees

dans

ce

document

peuvent

etre

synth?etis?ees

en

une

m?ethode

globale

de

r?eduction

du

faux-partage

et

d'am

elioration

des

propri?et?es

Table

des

figures

de

localit?e

sur

une

MVP

Le

chapitre

est

consacr?e

a

la

mise

en

oeuvre

de

certaines

de

ces

techniques

au

sein

de

l'environnement

Fortran-S

et

a

une

evaluation

des

performances

qui

en

ont

r?esult?e

sur

diff?erents

programmes

Table

des

figures

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

L'int

er

et

port?e

a

la

mise

au

point

de

m?emoires

virtuelles

partag?ees

-LRB-

MVP

-RRB-

sur

des

machines

parall?eles

a

m?emoire

distribu?ee

r?esulte

de

la

recherche

conjointe

d'architectures

performantes

a

moindre

co

ut

et

de

modes

de

programmation

simples

et

efficaces

Nous

pr?esentons

dans

ce

chapitre

une

classification

des

architectures

parall?eles

et

nous

donnons

les

raisons

qui

justifient

l'int

er

et

apport?e

aux

machines

distribu?ees

a

m?emoire

virtuelle

partag?ee

Les

architectures

MIMD

se

distinguent

essentiellement

par

leur

organisation

m?emoire

aux

deux

extr

emes

se

trouvent

les

machines

a

m?emoire

distribu?ee

et

les

machines

a

m?emoire

partag?ee

Entre

ces

deux

p

oles

se

situent

les

machines

a

adressage

global

la

m?emoire

est

physiquement

distribu?ee

mais

visible

globalement

par

tous

les

processeurs

gr

ace

a

des

m?ecanismes

impliquant

le

syst?eme

d'exploitation

ou

le

mat?eriel

Parmi

ces

m?ecanismes

celui

qui

nous

concerne

dans

le

cadre

de

cette

th?ese

est

le

concept

de

m?emoire

virtuelle

partag?ee

qui

est

d?ecrit

en

d?etail

dans

la

section

La

section

pr?esente

les

environnements

de

programmation

pour

MVP

et

principalement

leur

impact

sur

la

collaboration

entre

programmeur

compilateur

et

syst?eme

d'exploitation

Classification

des

machines

parall?eles

MIMD

La

taxinomie

de

Flynn

-LSB-

-RSB-

propose

une

classification

des

architectures

parall?eles

selon

qu'elles

permettent

un

ou

plusieurs

flux

de

contr

ole

et

un

ou

plusieurs

flots

de

donn?ees

Nous

ne

nous

int?eresserons

ici

qu'aux

architectures

MIMD

-LRB-

Multiple

Instruction-Multiple

Data

-RRB-

comportant

plusieurs

processeurs

contr

ol?es

ind?ependamment

et

agissant

sur

des

flots

de

donn?ees

distincts

Des

exemples

de

repr?esentants

de

cette

classe

sont

l'iPSC

d'Intel

-LSB-

-RSB-

la

Paragon

-LSB-

-RSB-

la

KSR

-LSB-

-RSB-

ou

la

-LSB-

-RSB-

Un

programme

consiste

sur

ces

machines

en

plusieurs

pro-

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

grammes

s?equentiels

ind?ependants

s

ex?ecutant

chacun

sur

un

processeur

et

devant

coop?erer

-LRB-

s

echanger

des

informations

-RRB-

en

vue

de

la

r?esolution

d'un

probl?eme

global

On

distingue

plusieurs

classes

parmi

les

machines

MIMD

en

fonction

de

l'organisation

et

de

la

gestion

de

la

m?emoire

Nous

utilisons

ici

la

classification

de

S.

Raina

-LSB-

-RSB-

qui

nous

semble

la

plus

a

m

eme

de

souligner

les

avantages

de

chaque

type

de

machines

-LRB-

voir

figure

-RRB-

Les

machines

MIMD

sont

tout

d'abord

distingu?ees

suivant

l'organisation

physique

de

l'espace

d'adressage

La

classe

DADM

-LRB-

Disjoint

Address

space

Distributed

Memory

-RRB-

contient

les

machines

a

m?emoire

distribu?ee

sans

possibilit?e

d'acc

es

distants

La

classe

SASM

-LRB-

Single

Address

space

Shared

Memory

-RRB-

contient

les

machines

a

m?emoire

partag?ee

La

classe

SADM

-LRB-

Single

Adress

space

Distributed

Memory

-RRB-

comprend

les

machines

a

m?emoire

distribu?ee

permettant

un

adressage

global

Dans

le

cas

o?u

il

existe

un

espace

d'adressage

global

pouvant

etre

acc?ed?e

par

tous

les

processeurs

les

diff?erents

processus

peuvent

communiquer

par

lecture

et

ecriture

de

variables

partag?ees

Si

un

processus

a

besoin

du

r?esultat

d'une

op?eration

effectu?ee

par

un

autre

processus

il

viendra

lire

dans

l'espace

commun

la

variable

o?u

a

et?e

ecrit

ce

r?esultat

Dans

le

cas

o?u

il

n'existe

pas

d'espace

m?emoire

commun

les

processus

peuvent

communiquer

par

echange

de

messages

Ces

messages

devront

permettre

de

v?ehiculer

toutes

les

informations

n?ecessaires

a

la

coop?eration

des

processus

instructions

donn?ees

synchronisations

etc.

La

programmation

utilisant

ce

mode

de

communication

doit

non

seulement

veiller

a

la

distribution

des

calculs

mais

egalement

a

la

r?epartition

et

a

l'

echange

des

donn?ees

Machines

a

m?emoire

partag?ee

Les

machines

MIMD

a

m?emoire

partag?ee

de

type

SASM

consistent

en

un

ensemble

de

processeurs

reli?es

a

une

m?emoire

commune

par

un

bus

ou

un

r?eseau

d'interconnexion

-LRB-

Figure

-RRB-

L'acc

es

a

la

m?emoire

est

alors

de

type

UMA

-LRB-

Uniform

Memory

Access

-RRB-

ce

qui

signifie

que

le

co

ut

d'acc

es

a

une

donn?ee

est

ind?ependant

de

la

position

de

la

donn?ee

en

m?emoire

Ces

machines

ont

actuellement

un

nombre

de

processeurs

limit?e

a

l'ordre

de

quelques

dizaines

Au

del?a

de

cette

valeur

on

se

heurte

a

des

probl?emes

de

contention

dans

le

cas

de

communication

par

bus

ou

simplement

de

co

ut

de

r?ealisation

dans

le

cas

de

r?eseaux

d'interconnexion

Ces

machines

sont

le

plus

souvent

utilis?ees

avec

une

communication

par

variables

partag?ees

Machines

a

m?emoire

distribu?ee

Les

architectures

parall?eles

a

m?emoire

distribu?ee

de

type

DADM

sont

constitu?ees

d'un

ensemble

de

noeuds

comprenant

un

processeur

un

module

de

communication

et

une

m?emoire

locale

L'acc

es

a

la

m?emoire

est

alors

de

type

NORMA

-LRB-

NO

Classification

des

machines

parall?eles

MIMD

MIMDSIMD

DADM

SASM

SADM

Flots

d'instructions

Espace

d'adressage

Sequent

Symetry

Cray

X

Y

C

Meiko

BBNCray

DASHFLASH

Alewife

MuninIVYKOAN

MYOAN

DDMKSR

Multiprocesseurs

NORMA

UMA

NUMA

CC-NUMA

OSMA

COMA

Exemples

T-node

Ncube

Paragon

XP/S

flots

de

donn?es

Organisation

m?moire

Acc?s

m?moire

Fig.

Classification

de

Raina

des

machines

MIMD

Remote

Memory

Access

-RRB-

signifiant

qu'aucun

m?ecanisme

d'acc

es

distant

n'est

mis

en

oeuvre

Les

diff?erents

noeuds

sont

reli?es

entre

eux

par

un

r?eseau

de

communication

permettant

l'

echange

de

messages

-LRB-

Figure

-RRB-

Ces

r?eseaux

sont

caract?eris?es

par

leur

topologie

qui

peut

etre

fixe

-LRB-

topologie

hypercube

sur

l'iPSC

-LSB-

-RSB-

et

le

Ncube

-LSB-

-RSB-

grille

de

la

Paragon

-LSB-

-RSB-

-RRB-

ou

programmable

-LRB-

T-node

-LSB-

-RSB-

-RRB-

Ces

architectures

ont

et?e

con?cues

initialement

en

vue

d'une

coop?eration

par

echange

de

messages

Elles

poss?edent

des

atouts

importants

tant

du

point

de

vue

economique

qu'architectural

D'une

part

les

noeuds

utilis?es

comme

el?ements

de

base

sont

de

fabrication

courante

et

ais?ee

ce

qui

permet

un

co

ut

de

revient

attrayant

D'autre

part

la

r?egularit?e

des

r?eseaux

d'interconnexion

utilis?es

facilite

l'extension

de

ces

machines

a

un

nombre

important

de

processeurs

de

l'ordre

du

millier

pour

les

machines

les

plus

r?ecentes

Solutions

hybrides

La

classe

SADM

regroupe

des

machines

offrant

diff?erents

types

d'acc

es

a

la

m?emoire

Pour

palier

le

probl?eme

de

contention

et

de

temps

d'acc

es

a

la

m?emoire

commune

de

nouvelles

formes

de

m?emoires

partag?ees

ont

et?e

d?evelopp?ees

Dans

ce

type

d'architecture

la

m?emoire

est

d?ecoup?ee

en

diff?erents

bancs

reli?es

directement

a

un

processeur

privil?egi?e

et

pouvant

etre

acc?ed?es

par

tous

les

autres

processeurs

via

un

r?eseau

d'interconnexion

La

m?emoire

reste

donc

commune

mais

le

temps

d'acc

es

a

une

donn?ee

d?epend

maintenant

du

banc

dans

lequel

elle

se

trouve

c'est

pourquoi

ce

type

de

m?emoire

est

appel?e

m?emoire

NUMA

-LRB-

Non

Uniform

Me

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

P

P

P

R?seau

d'interconnexion

-LRB-

Crossbar

bus

-RRB-

M?moire

partag?e

Fig.

Organisation

des

machines

MIMD

a

m?emoire

partag?ee

PM

PM

PM

PM

PM

PM

R?seau

d'interconnexion

-LRB-

Hypercube

grille

tore

-RRB-

Fig.

Organisation

des

machines

MIMD

a

m?emoire

distribu?ee

mory

Access

-RRB-

Cette

disposition

a

par

exemple

et?e

retenue

sur

le

BBN

-LSB-

-RSB-

ou

le

Cray

-LSB-

-RSB-

Les

mod?eles

CC-NUMA

-LRB-

Cache

Coherent

NUMA

-RRB-

COMA

-LRB-

Cache

Only

Memory

Access

-RRB-

et

OSMA

-LRB-

Operating

System

Memory

Access

-RRB-

correspondent

aux

cas

particuliers

o?u

les

diff?erents

bancs

de

la

m?emoire

sont

constitu?es

de

couples

m?emoire

locale

et

cache

-LRB-

CC-NUMA

-RRB-

ou

de

m?emoires

locales

se

comportant

comme

un

cache

-LRB-

COMA

et

OSMA

-RRB-

L'emplacement

d'une

donn?ee

en

m?emoire

est

fixe

dans

le

cas

de

machines

NUMA

et

CC-NUMA

avec

la

variante

que

dans

le

cas

CC-NUMA

on

autorise

une

copie

des

donn?ees

dans

des

caches

locaux

afin

de

r?eduire

les

acc?es

distants

Dans

le

cas

des

machines

COMA

ou

OSMA

les

donn?ees

ne

sont

pas

fixes

et

migrent

par

groupes

-LRB-

pages

ou

lignes

de

caches

-RRB-

entre

les

m?emoires

locales

des

diff?erents

processeurs

La

migration

est

assur?ee

par

le

syst?eme

d'exploitation

dans

le

cas

OSMA

et

par

le

mat?eriel

dans

le

cas

COMA

On

parle

alors

de

machine

a

m?emoire

virtuelle

partag?ee

Nous

M?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

aurons

l'occasion

de

revenir

plus

longuement

sur

ce

concept

dans

les

chapitres

ult?erieurs

puisque

cette

architecture

sera

retenue

comme

cadre

de

notre

etude

La

KSR

-LSB-

-RSB-

est

un

exemple

de

machine

COMA

Les

syst?emes

IVY

-LSB-

-RSB-

KOAN

-LSB-

-RSB-

et

MYOAN

-LSB-

-RSB-

illustrent

le

cas

des

machines

OSMA

Ces

solutions

hybrides

qui

semblent

etre

la

tendance

future

choisie

par

les

concepteurs

montrent

a

quel

point

la

fronti?ere

est

devenue

t?enue

entre

les

m?emoires

partag?ees

et

distribu?ees

Cependant

de

nombreuses

diff?erences

subsistent

au

niveau

du

mod?ele

de

programmation

retenu

et

de

l'efficacit

e

de

sa

mise

en

oeuvre

M?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

Cette

section

pr?esente

les

techniques

n?ecessaires

a

la

mise

en

oeuvre

d'une

m?emoire

virtuelle

partag?ee

Nous

nous

restreignons

au

cas

des

seuls

MVP

utilisant

une

coh?erence

forte

des

donn?ees

par

invalidation

Un

exemple

de

conception

de

MVP

le

syst?eme

KOAN

d?evelopp?e

sur

l'iPSC

d'Intel

et

l'

etude

de

ses

performances

intrins?eques

peuvent

etre

trouv?es

en

annexe

A.

Le

concept

de

m?emoire

virtuelle

partag?ee

Le

concept

de

m?emoire

virtuelle

partag?ee

est

une

extension

du

principe

de

m?emoire

virtuelle

sur

machine

monoprocesseur

Il

permet

la

r?ealisation

d'un

espace

d'adressage

global

sur

les

machines

parall?eles

a

m?emoire

distribu?ee

La

gestion

d'une

MVP

s

appuie

sur

des

fonctions

de

conversion

d'adresses

virtuelles

en

adresses

physiques

et

sur

les

primitives

d'

echange

de

messages

pour

permettre

les

migrations

de

donn?ees

entre

les

diff?erentes

m?emoires

locales

Ainsi

un

processeur

acc?edera

a

une

donn?ee

partag?ee

via

son

adresse

virtuelle

et

dans

le

cas

o?u

l'adresse

physique

correspondante

n'appartient

pas

au

domaine

associ?e

a

sa

propre

m?emoire

locale

l'unit

e

de

gestion

m?emoire

de

la

MVP

se

chargera

des

echanges

de

messages

n?ecessaires

a

la

migration

de

la

donn?ee

Cette

migration

de

la

donn?ee

vers

la

m?emoire

locale

poss?ede

l'avantage

de

tirer

profit

de

la

localit?e

temporelle

des

applications

On

dit

qu'un

programme

exhibe

de

la

localit?e

temporelle

si

il

a

tendance

a

utiliser

plusieurs

fois

les

m

emes

donn?ees

Si

le

m

eme

processeur

effectue

toutes

les

utilisations

de

cette

donn?ee

le

premier

acc?es

fera

migrer

la

donn?ee

vers

sa

m?emoire

locale

permettant

d'esp

erer

que

les

acc?es

suivants

se

feront

localement

Si

la

parall?elisation

du

programme

est

telle

que

ce

processeur

est

a

l'avenir

le

seul

a

acc?eder

a

cette

donn?ee

on

dit

qu'on

a

exploit?e

la

localit?e

temporelle

en

provoquant

une

affinit?e

entre

la

donn?ee

et

le

processeur

Mais

si

ce

n'est

pas

le

cas

on

peut

souhaiter

laisser

une

copie

de

la

donn?ee

dans

la

m?emoire

o?u

elle

se

trouvait

initialement

On

voit

qu'on

se

heurte

alors

a

des

probl?emes

de

coh?erence

entre

les

diff?erentes

m?emoires

locales

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

Afin

de

tirer

partie

de

la

localit?e

spatiale

du

programme

-LRB-

tendance

a

acc?eder

a

des

donn?ees

d'adresses

voisines

-RRB-

et

d'amortir

le

co

ut

de

latence

du

r?eseau

d'interconnexion

les

donn?ees

sont

echang?ees

par

blocs

Si

un

processeur

doit

acc?eder

a

un

ensemble

de

donn?ees

cons?ecutives

l'acc

es

a

la

premi?ere

donn?ee

fera

ainsi

migrer

un

bloc

de

donn?ees

permettant

d'esp

erer

que

les

acc?es

aux

donn?ees

voisines

auront

lieu

localement

Avant

de

revenir

dans

les

chapitres

ult?erieurs

sur

l'importance

des

notions

de

localit?e

dans

la

bonne

exploitation

d'une

MVP

nous

allons

pr?eciser

dans

les

paragraphes

suivants

les

notions

que

nous

venons

d'

evoquer

concernant

la

gestion

des

MVP

l'allocation

physique

de

la

m?emoire

virtuelle

les

probl?emes

de

maintien

de

coh?erence

et

le

traitement

des

migrations

de

pages

La

notion

de

page

Nous

nous

restreignons

dans

cette

etude

aux

cas

des

MVP

sans

m?emoire

secondaire

c'est

a

dire

que

le

contenu

de

la

m?emoire

virtuelle

est

dans

son

int?egralit?e

pr?esent

physiquement

dans

les

m?emoires

locales

La

virtualit?e

de

la

m?emoire

r?eside

alors

dans

le

fait

que

l'espace

adressable

par

un

processeur

est

plus

important

que

sa

seule

m?emoire

locale

Les

espaces

d'adressage

virtuels

et

physiques

sont

d?ecoup?es

en

blocs

de

taille

fixe

appel?es

pages

Les

pages

de

la

m?emoire

virtuelle

sont

alors

allou?ees

via

une

fonction

de

placement

dans

les

m?emoires

locales

des

diff?erents

processeurs

Ces

m?emoires

locales

sont

donc

scind?ees

en

deux

parties

une

premi?ere

qui

tiendra

lieu

de

m?emoire

locale

classique

et

contiendra

les

donn?ees

locales

et

les

instructions

n?ecessaires

au

processeur

une

seconde

partie

sera

utilis?ee

pour

stocker

les

pages

de

la

m?emoire

virtuelle

L'exploitation

de

la

localit?e

temporelle

n?ecessitant

la

duplication

de

donn?ees

et

l'utilisation

de

la

localit?e

spatiale

passant

par

des

grains

de

transfert

sup?erieurs

a

la

donn?ee

simple

on

se

retrouve

avec

des

hypoth?eses

proches

de

la

gestion

de

caches

Les

zones

des

m?emoires

locales

servant

a

stocker

les

pages

de

la

MVP

peuvent

donc

etre

consid?er?ees

comme

des

caches

La

granularit?e

de

d?ecoupage

de

la

m?emoire

virtuelle

etant

fix?ee

a

la

page

la

plupart

des

mises

en

oeuvre

de

MVP

choisissent

d'utiliser

la

page

comme

entit?e

minimale

pour

tout

ce

qui

concerne

la

gestion

de

la

m?emoire

En

particulier

la

page

sera

choisie

comme

bloc

de

transfert

lors

des

communications

entre

processeurs

et

comme

grain

de

maintien

de

coh?erence

Coh?erence

des

donn?ees

Censier

et

al.

-LSB-

-RSB-

d?efinissent

la

coh?erence

d'une

m?emoire

par

le

fait

que

oLa

valeur

retourn?ee

par

une

op?eration

de

lecture

est

celle

qui

correspond

a

la

derni?ere

op?eration

d'

ecriture

effectu?ee

a

la

m

eme

adresseAE

L'

etude

des

diff?erents

mod?eles

de

coh?erence

est

en

dehors

des

attributions

de

notre

etude

Nous

supposerons

dans

la

suite

que

le

mod?ele

de

coh?erence

retenu

M?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

est

le

mod?ele

de

coh?erence

forte

-LRB-

ou

coh?erence

atomique

-RRB-

Les

deux

protocoles

les

plus

classiques

pour

maintenir

la

coh?erence

forte

entre

caches

sont

la

diffusion

et

l'invalidation

sur

ecriture

-LSB-

-RSB-

Dans

l'approche

par

diffusion

sur

ecriture

d?es

qu'un

processeur

modifie

un

mot

m?emoire

d'une

page

ce

mot

est

diffus?e

a

tous

les

processeurs

poss?edant

une

copie

de

la

page

Cette

technique

entra

ne

donc

un

trafic

elev?e

de

communications

ce

qui

explique

son

utilisation

rare

dans

les

mises

en

oeuvre

de

MVP

Dans

l'approche

par

invalidation

la

modification

d'un

mot

m?emoire

d'une

page

entra

ne

l'invalidation

de

toutes

les

copies

existantes

de

la

page

Cette

technique

etant

la

plus

g?en?eralement

retenue

dans

les

MVP

existantes

nous

supposerons

dans

toute

la

suite

de

cette

etude

que

les

m?emoires

sont

maintenues

coh?erentes

par

un

protocole

d'invalidation

sur

ecriture

Gestion

des

pages

d'une

MVP

La

m?emoire

virtuelle

partag?ee

utilise

une

unit?e

de

gestion

m?emoire

pr?esente

dans

le

syst?eme

de

chaque

noeud

de

la

machine

pour

traduire

les

adresses

virtuelles

en

adresses

physiques

Si

la

page

correspondant

a

l'adresse

virtuelle

n'est

pas

pr?esente

dans

la

m?emoire

locale

du

processeur

l'unit

e

de

gestion

doit

alors

etre

en

mesure

de

d?eterminer

le

processeur

qui

en

poss?ede

une

copie

a

jour

de

transmettre

une

requ

ete

-LRB-

d?efaut

de

page

-RRB-

a

ce

processeur

afin

d'en

obtenir

une

copie

et

de

maintenir

la

coh?erence

de

la

m?emoire

en

r?evisant

les

droits

d'acc

es

a

cette

page

Ce

paragraphe

pr?esente

les

strat?egies

permettant

la

mise

a

jour

des

droits

d'acc

es

aux

donn?ees

ainsi

que

la

m?ethode

permettant

de

d?eterminer

la

position

d'une

donn?ee

dans

la

MVP

Droits

d'acc

es

a

une

page

Propri?etaire

La

strat?egie

d'invalidation

sur

ecriture

s

appuie

sur

la

notion

de

droit

d'acc

es

a

une

page

Un

processeur

poss?edant

une

page

dans

sa

m?emoire

locale

peut

n'avoir

aucun

droit

d'acc

es

a

cette

page

-LRB-

etat

invalide

-RRB-

seulement

le

droit

de

lire

la

page

-LRB-

etat

lecture

-RRB-

ou

le

droit

de

lire

et

de

modifier

la

page

-LRB-

etat

lecture

ecriture

-RRB-

Un

des

corollaires

importants

de

la

strat?egie

d'invalidation

est

qu

a

un

instant

donn?e

au

plus

un

processeur

peut

poss?eder

le

droit

lecture

ecriture

sur

une

page

et

si

un

processeur

poss?ede

cette

page

en

lecture

ecriture

alors

il

n'existe

pas

de

copie

de

cette

page

avec

des

droits

en

lecture

On

d?efinit

alors

le

propri?etaire

d'une

page

comme

suit

D?efinition

Le

propri?etaire

d'une

page

est

le

dernier

processeur

a

avoir

eu

le

droit

lecture

ecriture

sur

la

page

On

est

donc

dans

l'un

des

deux

cas

suivants

-LCB-

Soit

le

propri?etaire

poss?ede

toujours

le

droit

lecture

ecriture

Les

autres

copies

eventuelles

de

la

page

sont

alors

invalides

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

-LCB-

Soit

il

existe

une

ou

plusieurs

copies

de

la

page

avec

des

droits

en

lecture

-LRB-

dont

celle

du

propri?etaire

-RRB-

et

aucune

en

lecture

ecriture

Diff?erents

protocoles

ont

et?e

mis

en

oeuvre

pour

mettre

a

jour

l'

etat

des

pages

et

les

changements

de

propri?etaire

-LSB-

-RSB-

Dans

tous

les

cas

les

propri?et?es

d'une

page

-LRB-

etat

propri?etaire

etc.

-RRB-

sont

g?er?ees

par

un

processeur

appel?e

gestionnaire

de

la

page

-LRB-

ou

omanagerAE

-RRB-

Les

m?ethodes

diff?erent

suivant

le

nombre

de

processeurs

impliqu?es

dans

cette

gestion

un

seul

processeur

g?ere

toutes

les

pages

dans

une

gestion

centralis?ee

chaque

processeur

g?ere

un

sous-ensemble

des

pages

dans

le

cas

d'une

gestion

r?epartie

Dans

ce

dernier

cas

la

gestion

peut

etre

fixe

ou

dynamique

suivant

que

le

sous-ensemble

des

pages

attribu?ees

a

chaque

processeur

varie

ou

non

au

cours

du

temps

D?efauts

de

pages

Telle

qu'elle

vient

d'

etre

introduite

la

notion

de

propri?etaire

d'une

page

est

dynamique

les

changements

des

droits

d'acc

es

pouvant

entra

ner

le

changement

du

propri?etaire

Nous

allons

donc

voir

comment

s

effectuent

ces

changements

de

droits

D?efinition

-LCB-

On

appelle

propri?etaire

initial

d'une

page

le

processeur

dans

la

m?emoire

locale

duquel

la

page

est

initialement

allou?ee

par

la

fonction

de

placement

-LCB-

On

dit

qu'un

processeur

est

en

d?efaut

de

page

si

ses

droits

sur

une

page

sont

insuffisants

pour

lui

permettre

un

acc?es

voulu

-LCB-

On

appelle

migration

de

page

le

changement

de

propri?etaire

d'une

page

Les

droits

d'acc

es

a

une

page

ne

peuvent

etre

modifi?es

que

lors

de

d?efauts

de

page

Si

un

processeur

a

besoin

d'acc

eder

en

lecture

a

une

page

alors

qu'il

n

a

pas

les

droits

n?ecessaires

-LRB-

soit

qu'il

ne

poss?ede

pas

la

page

dans

sa

m?emoire

locale

soit

qu'il

en

poss?ede

une

copie

invalide

-RRB-

il

provoque

alors

un

d?efaut

de

page

en

lecture

L'algorithme

de

r?esolution

est

alors

le

suivant

-LRB-

voir

Figure

cas

-RRB-

-LCB-

Le

processeur

en

d?efaut

envoie

une

requ

ete

au

gestionnaire

de

la

page

-LCB-

Le

gestionnaire

transmet

cette

requ

ete

au

propri?etaire

de

la

page

-LRB-

dont

il

conna

t

l'identit

e

-RRB-

-LCB-

Le

propri?etaire

envoie

une

copie

de

la

page

au

processeur

en

d?efaut

-LCB-

Le

processeur

en

d?efaut

re?coit

la

copie

et

en

avise

le

gestionnaire

M?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

Demandeur

de

de

lapage

Lecteur

n

Lecteur

Demandeur

de

de

lapage

Cas

Propri?taire

Propri?taire

la

requ?te

te

en

lecture

la

requ?te

te

en

criture

Cas

Gestionnaire

Gestionnaire

Fig.

Protocoles

de

migration

de

pages

-LCB-

Le

gestionnaire

met

a

jour

les

propri?et?es

de

la

page

-LCB-

Si

le

propri?etaire

avait

un

droit

lecture

ecriture

celui-ci

est

mu?e

en

lecture

-LCB-

Le

processeur

en

d?efaut

a

une

nouvelle

copie

avec

un

droit

de

lecture

Si

un

processeur

a

besoin

d'acc

eder

en

ecriture

a

une

page

alors

qu'il

n

a

pas

les

droits

n?ecessaires

-LRB-

soit

qu'il

ne

poss?ede

pas

la

page

dans

sa

m?emoire

locale

soit

qu'il

en

poss?ede

une

copie

invalide

ou

lecture

-RRB-

il

provoque

alors

un

d?efaut

de

page

en

ecriture

Le

traitement

du

d?efaut

de

page

est

similaire

au

pr?ec?edent

-LRB-

voir

Figure

cas

-RRB-

mais

le

gestionnaire

doit

faire

les

mises

a

jour

suivantes

des

propri?et?es

de

la

page

-LCB-

Si

le

processeur

en

d?efaut

poss?ede

une

copie

de

la

page

avec

les

droits

en

lecture

-LCB-

Toutes

les

copies

-LRB-

except?ee

celle

du

processeur

en

d?efaut

-RRB-

passent

dans

l'

etat

invalide

-LCB-

Le

processeur

en

d?efaut

re?coit

le

droit

lecture

ecriture

il

devient

alors

le

nouveau

propri?etaire

de

la

page

-LCB-

Si

le

processeur

en

d?efaut

ne

poss?ede

pas

une

copie

de

la

page

avec

les

droits

en

lecture

-LCB-

Toutes

les

copies

de

la

page

passent

dans

l'

etat

invalide

-LCB-

le

processeur

en

d?efaut

re?coit

la

page

avec

le

droit

lecture

ecriture

il

devient

alors

le

nouveau

propri?etaire

de

la

page

Certaines

techniques

de

parall?elisation

pr?esent?ees

dans

cette

th?ese

ayant

pour

origine

une

etude

empirique

du

comportement

du

syst?eme

Koan

et

toutes

les

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

exp?eriences

qui

l'accompagnent

ayant

et?e

men?ees

sur

ce

syst?eme

l'annexe

A

est

consacr?ee

a

la

pr?esentation

de

Koan

aux

choix

qui

ont

et?e

faits

lors

de

son

elaboration

et

a

l'estimation

de

ses

performances

intrins?eques

Mises

en

oeuvre

de

MVP

Il

existe

aujourd

hui

de

nombreuses

mises

en

oeuvre

de

MVP

sur

des

machines

a

m?emoire

distribu?ee

-LRB-

on

peut

se

reporter

a

Raina

-LSB-

-RSB-

pour

une

synth?ese

des

techniques

employ?ees

-RRB-

parmi

lesquelles

outre

Koan

on

peut

citer

Ivy

-LSB-

-RSB-

Gothic

-LSB-

-RSB-

Clouds

-LSB-

-RSB-

Munin

-LSB-

-RSB-

Linda

-LSB-

-RSB-

et

Myoan

-LSB-

-RSB-

Ces

mises

en

oeuvre

se

distinguent

suivant

qu'elles

reposent

sur

une

extension

du

syst?eme

ou

du

langage

-LRB-

Linda

-RRB-

suivant

le

mod?ele

de

coh?erence

choisi

-LRB-

coh?erence

forte

pour

Ivy

Gothic

et

Myoan

-RRB-

ainsi

que

le

grain

de

coh?erence

-LRB-

la

page

pour

Ivy

Gothic

et

Myoan

l'objet

pour

Munin

-RRB-

Toutes

n'entrent

donc

pas

dans

notre

cadre

d'

etude

Nous

nous

restreignons

en

effet

aux

seules

MVP

utilisant

un

mod?ele

de

coh?erence

forte

g?er?ee

par

un

protocole

par

invalidation

et

utilisant

la

page

comme

grain

de

coh?erence

Les

principales

machines

a

v?erifier

ces

hypoth?eses

sont

alors

Koan

Ivy

Gothic

et

Myoan

N?eanmoins

les

techniques

d?evelopp?ees

dans

cette

th?ese

peuvent

s

av?erer

utiles

-LRB-

m

eme

si

c'est

dans

de

moindres

proportions

-RRB-

dans

le

cas

de

machines

utilisant

des

grains

de

coh?erence

plus

faibles

voire

dans

le

cas

de

machines

de

conceptions

diff?erentes

telles

que

la

KSR

Environnements

de

programmation

pour

MVP

L'exploitation

du

potentiel

de

calcul

d'une

machine

a

m?emoire

distribu?ee

n?ecessite

qu'une

attention

particuli?ere

soit

attach?ee

au

programme

aux

donn?ees

manipul?ees

et

aux

caract?eristiques

de

l'architecture

L'effort

a

fournir

pour

acqu?erir

ces

connaissances

peut

etre

r?eparti

entre

le

programmeur

et

le

compilateur

On

caract?erise

souvent

un

environnement

de

programmation

par

le

degr?e

d'interaction

qu'il

impose

entre

son

utilisateur

et

le

compilateur

A

une

extr

emit?e

du

spectre

se

trouve

l'approche

omanuelleAE

o?u

l'utilisateur

a

la

charge

de

toute

la

gestion

du

parall?elisme

et

doit

indiquer

en

d?etail

sa

mise

en

oeuvre

en

g?en?eral

par

l'utilisation

d'une

biblioth?eque

de

primitives

de

communication

A

l'autre

extr

emit?e

se

trouvent

les

environnements

de

parall?elisation

automatique

o?u

le

compilateur

produit

seul

le

code

parall?ele

en

partant

de

la

version

s?equentielle

du

programme

Dans

le

cas

des

environnements

de

programmation

pour

MVP

cet

antagonisme

est

encore

modifi?e

par

le

r

ole

particulier

jou?e

par

le

syst?eme

d'exploitation

Cette

section

pr?esente

les

caract?eristiques

g?en?erales

d'un

environnement

de

programmation

pour

MVP

Ces

caract?eristiques

sont

illustr?ees

par

les

choix

qui

ont

et?e

effectu?es

lors

de

l'

elaboration

du

projet

Fortran-S

Ces

choix

sont

compar?es

aux

alternatives

classiques

en

soulignant

les

avantages

et

les

inconv?enients

qu'il

y

a

a

laisser

la

gestion

de

la

m?emoire

a

la

charge

du

syst?eme

d'exploitation

L'environnement

Fortran-S

Le

but

du

projet

Fortran-S

d?evelopp?e

par

F.

Bodin

et

al.

-LSB-

-RSB-

est

d'utiliser

une

extension

modeste

d'un

langage

de

programmation

classique

et

de

chercher

a

r?epartir

equitablement

les

t

aches

entre

le

programmeur

le

compilateur

et

le

syst?eme

d'exploitation

Cette

m?ethode

qui

est

celle

qui

nous

concernera

dans

cette

etude

est

bas?ee

sur

l'utilisation

d'une

MVP

implant?ee

dans

le

syst?eme

d'exploitation

et

sur

laquelle

reposeront

l'espace

d'adressage

commun

et

toute

la

gestion

des

communications

Le

r

ole

du

compilateur

se

concentre

alors

sur

la

g?en?eration

de

processus

parall?eles

et

l'ad

equation

avec

la

machine

cible

Les

auteurs

proposent

d'

etendre

le

langage

Fortran

a

un

environnement

de

programmation

pour

la

MVP

KOAN

Ce

mod?ele

de

programmation

appel?e

Fortran-S

est

bas?e

sur

l'utilisation

de

directives

de

compilation

Cette

m?ethode

permet

de

ne

pas

modifier

la

syntaxe

du

langage

Fortran

telle

qu'elle

est

utilis?ee

couramment

par

la

communaut?e

scientifique

Les

premiers

travaux

effectu?es

a

l'aide

de

cet

environnement

-LSB-

-RSB-

ont

mis

en

evidence

d'une

part

la

facilit?e

de

transition

entre

un

programme

s?equentiel

Fortran

et

sa

version

parall?ele

et

d'autre

part

la

n?ecessit?e

d'apporter

a

la

compilation

des

am?eliorations

au

code

parall?ele

produit

en

utilisant

des

techniques

sp?ecifiques

aux

MVP

Il

fournit

un

cadre

parfait

d'application

pour

les

techniques

de

compilation

que

nous

pr?esentons

dans

cette

th?ese

Choix

d'un

mod?ele

de

parall?elisme

Le

parall?elisme

contenu

dans

une

application

peut

etre

exploit?e

en

pr?ecisant

prioritairement

la

distribution

des

donn?ees

sur

les

diff?erents

noeuds

on

parle

alors

de

parall?elisation

par

distribution

des

donn?ees

L'ordonnancement

des

instructions

se

fait

dans

ce

cas

en

distribuant

a

un

processeur

les

calculs

modifiant

les

donn?ees

dont

il

est

propri?etaire

-LRB-

owner

compute

rule

-LSB-

-RSB-

-RRB-

La

solution

alternative

consiste

a

commencer

par

sp?ecifier

la

r?epartition

des

calculs

sur

les

diff?erents

processeurs

en

s

appliquant

par

la

suite

a

fournir

aux

processeurs

les

donn?ees

dont

ils

ont

besoin

On

parle

alors

de

parall?elisation

par

distribution

du

contr

ole

La

gestion

explicite

de

tous

les

mouvements

de

donn?ees

constituant

un

travail

fastidieux

cette

technique

est

le

plus

souvent

utilis?ee

dans

le

seul

cas

o?u

il

existe

une

m?emoire

commune

permettant

de

s

abstraire

des

probl?emes

d'acc

es

aux

donn?ees

L'avantage

de

la

parall?elisation

par

distribution

des

donn?ees

telle

qu'elle

est

employ?ee

dans

les

projets

Pandore

-LSB-

-RSB-

Vienna

Fortran

-LSB-

-RSB-

Fortran

-LSB-

-RSB-

Fortran

D

-LSB-

-RSB-

ou

HPF

-LSB-

-RSB-

est

qu'elle

implique

naturellement

une

localit?e

temporelle

et

une

affinit?e

sur

les

ecritures

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

Dans

le

cas

d'une

machine

munie

d'un

dispositif

de

MVP

la

volont?e

de

lib?erer

le

programmeur

des

probl?emes

d'acc

es

aux

donn?ees

fait

que

le

choix

s

est

port?e

sur

une

parall?elisation

par

distribution

du

contr

ole

Cependant

si

cette

transparence

des

acc?es

peut

etre

souhaitable

il

serait

fatal

pour

les

performances

du

programme

qu'elle

devienne

une

abstraction

des

propri?et?es

de

localit?e

des

donn?ees

Il

appartient

donc

au

programmeur

ou

au

compilateur

d'adapter

le

programme

de

mani?ere

a

am?eliorer

ses

propri?et?es

de

localit?e

et

d'utiliser

un

mode

d'ex

ecution

parall?ele

permettant

de

tirer

profit

de

l'affinit

e.

Choix

d'un

mode

d'ex

ecution

parall?ele

Les

deux

principaux

types

de

programmes

parall?eles

utilis?es

sur

les

machines

MIMD

se

distinguent

par

leur

mode

de

cr?eation

de

processus

Certains

langages

permettent

la

cr?eation

dynamique

de

processus

durant

l'ex

ecution

du

programme

Ce

type

de

mod?ele

s

accompagne

g?en?eralement

d'une

distribution

du

contr

ole

Le

code

parall?ele

d?ecrit

le

flux

de

contr

ole

a

ex?ecuter

en

utilisant

une

primitive

fork

pour

cr?eer

un

ensemble

de

processus

et

une

primitive

join

pour

en

attendre

la

fin

d'ex

ecution

Ce

mode

d'ex

ecution

fork

and

join

induit

un

co

ut

important

a

l'ex

ecution

d

u

a

la

gestion

dynamique

des

processus

et

a

leur

migration

sur

les

diff?erents

processeurs

De

plus

cette

migration

des

processus

s

accompagne

de

la

migration

des

donn?ees

et

du

contexte

n?ecessaire

a

sa

r?esolution

ce

qui

restreint

en

g?en?eral

son

champ

d'application

aux

seules

machines

poss?edant

un

espace

m?emoire

global

Un

second

mod?ele

d'ex

ecution

appel?e

mod?ele

SPMD

-LRB-

Single

Program

Multiple

Data

-RRB-

a

donc

et?e

d?evelopp?e

initialement

pour

les

machines

a

m?emoire

distribu?ee

Selon

ce

mod?ele

un

unique

processus

est

cr?e?e

sur

chaque

processeur

au

d?ebut

du

programme

et

reste

actif

jusqu

a

la

fin

de

celui-ci

Lorsqu'il

s

accompagne

de

distribution

des

donn?ees

ce

mod?ele

a

alors

l'avantage

de

laisser

au

programmeur

une

vision

s?equentielle

de

son

programme

chaque

processus

correspondant

au

traitement

s?equentiel

a

apporter

pour

mettre

a

jour

un

sous-ensemble

des

donn?ees

a

traiter

Cependant

le

fait

que

le

mod?ele

SPMD

induise

un

tr?es

faible

co

ut

de

gestion

a

l'ex

ecution

a

et?e

suffisant

pour

tenter

egalement

les

utilisateurs

de

distribution

du

contr

ole

Le

projet

Epex

-LSB-

-RSB-

propose

d'utiliser

ce

type

de

programme

en

diff?erenciant

dans

le

flux

de

contr

ole

trois

types

de

code

les

sections

monoprocesseurs

les

sections

ind?ependantes

-LRB-

chaque

processeur

ex?ecute

le

m

eme

code

en

parall?ele

-RRB-

et

les

sections

partag?ees

-LRB-

les

boucles

parall?eles

distribu?ees

sur

les

diff?erents

processeurs

-RRB-

Ce

mod?ele

accompagn?e

de

distribution

du

contr

ole

a

egalement

et?e

adopt?e

par

le

projet

Fortran-S

L'id

ee

retenue

est

d'utiliser

un

code

SPMD

pour

les

boucles

parall?eles

et

de

dupliquer

les

sections

s?equentielles

sur

tous

les

processeurs

en

ins?erant

le

code

eventuellement

n?ecessaire

pour

n'autoriser

qu'un

seul

processeur

a

modifier

une

variable

partag?ee

ou

a

ex?ecuter

une

op?eration

d'en

tr?ee

sortie

Discussion

Nous

r?esumons

dans

les

paragraphes

suivants

les

avantages

et

les

inconv?enients

li?es

a

l'utilisation

d'une

MVP

et

les

contraintes

que

cela

implique

lors

de

la

mise

au

point

d'un

compilateur

pour

MVP

Les

atouts

de

la

m?emoire

virtuelle

L'utilisation

d'une

MVP

dot?e

d'un

environnement

tel

que

Fortran-S

poss?ede

des

avantages

a

diff?erents

niveaux

Le

mod?ele

de

parall?elisme

que

nous

venons

de

d?ecrire

permet

la

mise

en

oeuvre

simple

d'une

coop?eration

par

utilisation

de

variables

partag?ees

ce

qui

est

toujours

appr?eci?e

par

le

programmeur

L'utilisation

de

programmes

SPMD

permet

de

r?eduire

le

co

ut

de

gestion

des

codes

produits

et

facilite

la

recherche

d'affinit

e

entre

boucles

a

la

compilation

La

parall?elisation

par

distribution

du

contr

ole

permet

de

laisser

les

probl?emes

d'acc

es

aux

donn?ees

a

la

seule

charge

du

syst?eme

d'exploitation

Les

propri?et?es

du

m?ecanisme

de

MVP

La

communication

par

page

permet

de

r?eduire

la

latence

du

r?eseau

et

de

tirer

profit

des

propri?et?es

de

localit?e

spatiale

La

migration

syst?ematique

des

pages

lors

des

ecritures

et

la

possibilit?e

de

diffuser

des

copies

multiples

en

lecture

permet

l'exploitation

des

propri?et?es

de

localit?e

temporelle

Notons

que

ces

deux

avantages

etant

implicitement

dus

a

la

gestion

des

pages

par

le

syst?eme

et

non

a

une

analyse

de

donn?ees

leur

exploitation

est

encore

possible

dans

les

cas

-LRB-

trop

fr?equents

-RRB-

o?u

les

propri?et?es

de

localit?e

ne

peuvent

etre

d?etect?ees

a

la

compilation

Les

propri?et?es

intrins?eques

de

l'architecture

distribu?ee

sous-jacente

sont

conserv?ees

Outre

les

propri?et?es

architecturales

-LRB-

co

ut

r?eduit

extension

facile

a

un

grand

nombre

de

processeurs

etc.

-RRB-

on

garde

la

possibilit?e

d'utiliser

des

objets

locaux

des

echanges

de

messages

-LRB-

pour

les

op?erations

de

r?eduction

et

de

synchronisation

par

exemple

-RRB-

ainsi

que

les

facilit?es

de

diffusion

de

donn?ees

sur

diff?erents

processeurs

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

Les

faiblesses

de

la

m?emoire

virtuelle

L'exploitation

d'une

MVP

se

heurte

n?eanmoins

a

plusieurs

difficult?es

-LCB-

Les

acc?es

aux

donn?ees

etant

g?er?es

a

l'ex

ecution

par

le

syst?eme

d'exploitation

de

fa?con

transparente

pour

l'utilisateur

d'autant

plus

d'efforts

doivent

etre

produits

a

la

compilation

pour

conditionner

le

programme

et

exploiter

ses

propri?et?es

de

localit?e

-LCB-

Les

m?emoires

locales

des

diff?erents

processeurs

etant

utilis?ees

comme

des

caches

on

est

confront?e

aux

probl?emes

classiques

de

gestion

de

caches

-LSB-

-RSB-

-LCB-

Le

choix

d'une

fonction

de

placement

initiale

des

donn?ees

dans

les

m?emoires

locales

et

les

probl?emes

de

od?epart

a

froidAE

que

cela

engendre

En

effet

si

cette

fonction

est

mal

adapt?ee

au

probl?eme

les

premiers

acc?es

risquent

d'induire

un

grand

nombre

de

mouvements

de

pages

simultan?es

au

risque

de

saturer

le

r?eseau

-LCB-

Le

choix

d'un

algorithme

de

vidage

des

m?emoires

locales

Dans

le

cas

o?u

un

processeur

a

besoin

de

recevoir

une

copie

de

page

et

o?u

sa

m?emoire

locale

est

remplie

il

faut

choisir

d'

y

enlever

certaines

pages

en

esp?erant

ne

pas

en

avoir

besoin

dans

un

avenir

proche

-LSB-

-RSB-

-LCB-

Le

co

ut

d

u

a

la

gestion

des

d?efauts

de

page

des

changements

de

droits

d'acc

es

et

de

propri?etaires

Ce

co

ut

d?epend

principalement

du

protocole

de

gestion

choisi

-LRB-

centralis?e

ou

distribu?e

fixe

ou

dynamique

-RRB-

-LCB-

Enfin

le

principal

inconv?enient

d'une

MVP

munie

d'un

protocole

de

coh?erence

forte

est

l'introduction

du

ph?enom?ene

de

faux-partage

Supposons

que

deux

processeurs

doivent

ecrire

dans

deux

donn?ees

situ?ees

sur

une

m

eme

page

M

eme

si

les

instructions

d'

ecriture

sont

ind?ependantes

au

sens

de

Banerjee

-LSB-

-RSB-

le

protocole

de

coh?erence

forte

ne

permettra

pas

deux

ecritures

simultan?ees

sur

la

page

donc

les

acc?es

aux

donn?ees

ne

pourront

pas

etre

effectu?es

en

parall?ele

De

plus

si

chaque

processeur

a

plusieurs

ecritures

a

effectuer

dans

cette

page

ce

genre

de

conflit

est

susceptible

d'engendrer

un

grand

nombre

d'aller-retour

de

la

page

entre

les

m?emoires

locales

des

processeurs

en

conflit

c'est

ce

qu'on

appelle

l'effet

ping-pong

L'

etude

d?etaill?ee

de

ces

ph?enom?enes

fait

l'objet

du

chapitre

Les

caract?eristiques

de

notre

approche

Le

but

de

cette

th?ese

est

de

pr?esenter

des

techniques

de

compilation

s

int?egrant

dans

le

cadre

du

projet

Fortran-S

et

d'en

d?egager

des

enseignements

visant

Les

caract?eristiques

de

notre

approche

a

faciliter

la

t

ache

du

programmeur

Les

caract?eristiques

g?en?erales

qui

nous

tiendront

lieu

d'hypoth

eses

et

d'objectifs

sont

les

suivantes

-LCB-

Les

tendances

actuelles

tant

en

ce

qui

concerne

les

constructeurs

de

machines

que

les

projets

universitaires

montrent

que

l'utilisation

de

m?emoires

distribu?ees

est

la

meilleure

garantie

d'extensibilit

e

a

un

tr?es

grand

nombre

de

processeurs

D'autre

part

les

habitudes

de

programmation

r?eclament

l'existence

d'un

espace

d'adressage

global

Parce

qu'elles

pr?esentent

des

difficult?es

propres

dues

a

la

gestion

par

pages

de

la

m?emoire

et

la

souplesse

d'intervention

suffisante

pour

y

palier

nous

nous

concentrerons

sur

le

cas

des

machines

OSMA

a

m?emoire

virtuelle

partag?ee

g?er?ee

par

le

syst?eme

et

utilisant

un

protocole

de

coh?erence

forte

par

invalidation

sur

ecriture

Nous

tenterons

n?eanmoins

de

souligner

les

techniques

dont

le

champ

d'application

serait

plus

large

-LCB-

Le

co

ut

d'acc

es

a

la

m?emoire

n

etant

pas

uniforme

sur

ces

machines

les

probl?emes

de

localit?e

prennent

une

importance

capitale

Les

probl?emes

de

localit?e

sont

d'autant

plus

complexes

que

le

transfert

des

donn?ees

et

la

gestion

de

la

coh?erence

s

effectue

par

pages

La

localit?e

n'est

donc

plus

seulement

caract?eris?ee

par

une

direction

privil?egi?ee

mais

doit

faire

intervenir

des

estimations

quantitatives

fines

pour

prendre

en

compte

les

risques

de

faux-partage

Cette

restriction

n?ecessite

une

mod?elisation

pr?ecise

du

comportement

d'une

MVP

et

est

a

l'origine

des

difficult?es

de

mise

au

point

de

programmes

parall?eles

sur

ces

machines

-LCB-

Nous

nous

restreignons

au

cas

o?u

la

distribution

des

calculs

est

bas?ee

sur

le

partitionnement

des

nids

de

boucles

les

programmes

que

nous

nous

fixons

pour

cible

etant

les

codes

num?eriques

a

acc?es

r?eguliers

ecrits

dans

un

langage

de

type

-LCB-

Nous

nous

concentrons

sur

les

d?efauts

de

pages

d

us

au

choix

de

partitionnement

des

boucles

et

non

aux

limitations

de

la

m?emoire

aussi

nous

n?egligeons

les

migrations

de

pages

cons?equentes

au

vidage

des

m?emoires

locales

dans

l'

eventualit?e

o?u

elles

seraient

de

taille

insuffisante

pour

permettre

l'ex

ecution

du

programme

-LCB-

Nous

utilisons

une

adaptation

des

techniques

classiques

de

transformations

de

programme

au

cas

des

MVP

pour

am?eliorer

les

propri?et?es

de

localit?e

ainsi

que

les

performances

des

codes

transform?es

En

particulier

l'am

elioration

de

la

localit?e

spatiale

a

pour

effet

de

r?eduire

le

nombre

de

pages

utilis?ees

par

un

m

eme

processeur

ce

qui

justifie

l'hypoth

ese

pr?ec?edente

-LCB-

Une

attention

particuli?ere

est

apport?ee

a

l'

etape

de

partitionnement

des

boucles

car

c'est

l?a

qu'interviennent

les

probl?emes

de

coh?erence

donc

de

Chapitre

Machines

parall?eles

et

m?emoire

virtuelle

partag?ee

faux-partage

et

de

ping-pong

ainsi

que

la

n?ecessit?e

d'optimiser

l'affinit

e

entre

les

pages

de

la

MVP

et

les

processeurs

Le

nombre

et

la

taille

des

partitions

devront

etre

ajust?es

de

mani?ere

a

r?epondre

aux

contraintes

classiques

de

performance

r?eduction

du

co

ut

de

communication

r?eduction

du

co

ut

d'ordonnancement

equilibre

des

charges

entre

les

processeurs

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Uptal

Banerjee

-LSB-

-RSB-

d?efinit

la

d?ependance

entre

deux

instructions

comme

une

contrainte

s?emantique

imposant

un

ordre

d'ex

ecution

et

donc

interdisant

une

ex?ecution

parall?ele

de

ces

instructions

Ces

contraintes

sont

g?en?eralement

dues

au

fait

que

les

instructions

r?ef?erencent

une

m

eme

donn?ee

en

lecture

ou

en

ecriture

Une

m?emoire

virtuelle

partag?ee

maintenue

fortement

coh?erente

par

un

m?ecanisme

d'invalidation

au

niveau

de

la

page

interdit

a

deux

processeurs

d'ex

ecuter

en

parall?ele

des

ecritures

dans

une

m

eme

page

Aucun

ordre

d'ex

ecution

n'est

impos?e

entre

ces

deux

ecritures

mais

la

perte

du

parall?elisme

rappelant

le

cas

des

d?ependances

on

parle

alors

de

fausse

d?ependance

Celle-ci

n

etant

pas

due

au

partage

d'une

m

eme

donn?ee

mais

a

l'acc

es

a

deux

donn?ees

diff?erentes

appartenant

a

la

m

eme

page

on

parle

egalement

dans

ce

cas

de

faux-partage

Le

but

de

ce

chapitre

est

d'

etudier

le

ph?enom?ene

de

faux-partage

d'en

d?eterminer

les

causes

et

d'

etudier

quantitativement

son

effet

sur

le

nombre

de

migrations

de

pages

La

d?etection

du

faux-partage

n?ecessite

une

analyse

fine

des

el?ements

acc?ed?es

par

un

programme

Il

importe

de

savoir

pour

chaque

donn?ee

a

quelle

page

elle

appartient

et

si

cette

page

contient

d'autres

el?ements

acc?ed?es

L'analyse

doit

egalement

prendre

en

compte

l'ordonnancement

du

programme

pour

estimer

le

nombre

de

processeurs

distincts

acc?edant

a

une

m

eme

page

Nous

proposons

dans

la

section

d'analyser

le

comportement

de

la

m?emoire

virtuelle

en

fonction

des

acc?es

aux

pages

dans

le

cas

de

deux

ordonnancements

classiques

des

boucles

les

ordonnancements

cycliques

et

par

blocs

d'it

erations

Nous

verrons

que

dans

le

cas

g?en?eral

aucun

de

ces

partitionnements

du

domaine

d'it

eration

ne

permet

d'

eliminer

le

faux-partage

Cependant

l'estimation

des

performances

dans

ces

deux

cas

classiques

nous

permet

de

tirer

les

enseignements

n?ecessaires

au

choix

d'un

partitionnement

adapt?e

et

fournit

des

bornes

th?eoriques

qui

seront

utiles

a

l'

evaluation

des

m?ethodes

futures

Ce

mod?ele

s

appuie

sur

une

classification

des

pages

de

la

MVP

suivant

les

acc?es

qu'elles

subissent

La

section

montre

comment

le

nombre

de

pages

de

chaque

classe

peut

etre

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

calcul?e

pr?ecis?ement

dans

le

cas

d'une

boucle

de

parcours

de

matrice

et

l'estimation

du

co

ut

de

communication

que

l'on

peut

en

d?eduire

La

section

pr?esente

une

comparaison

entre

les

r?esultats

th?eoriques

issus

de

cette

etude

et

les

valeurs

exp?erimentales

obtenues

sur

la

MVP

KOAN

Analyse

des

acc?es

aux

pages

de

la

MVP

Nous

nous

proposons

de

mod?eliser

le

comportement

d'une

boucle

parall?ele

etant

fix?e

un

ordonnancement

et

une

distribution

des

donn?ees

en

utilisant

une

classification

des

pages

de

la

MVP

Pour

ce

faire

nous

consid?ererons

pour

chaque

page

le

nombre

de

processeurs

acc?edant

a

cette

page

pendant

l'ex

ecution

de

chaque

boucle

parall?ele

En

effet

plus

une

page

est

partag?ee

par

un

grand

nombre

de

processeurs

durant

une

boucle

parall?ele

moins

la

localit?e

spatiale

de

cette

boucle

pourra

etre

exploit?ee

et

surtout

plus

des

boucles

parall?eles

au

sens

de

Banerjee

-LSB-

-RSB-

se

trouveront

s?equentialis?ees

pour

des

raisons

de

faux-partage

Cette

classification

des

pages

nous

permettra

de

d?eduire

une

estimation

du

volume

de

communication

pendant

l'ex

ecution

d'une

boucle

Un

exemple

de

faux-partage

Consid?erons

la

boucle

et

les

notations

et

hypoth?eses

suivantes

illustr?ees

sur

la

figure

Nid

While

-LRB-

-RRB-

DoAll

i

N

Doj

M

A

-LSB-

i

j

-RSB-

f

-LRB-

i

j

-RRB-

EndDo

EndDoAll

EndWhile

-LCB-

La

fonction

f

est

ind?ependante

du

tableau

A.

-LCB-

Le

tableau

A

est

stock?e

dans

la

m?emoire

virtuelle

par

colonnes

comme

le

montrent

les

figures

-LRB-

b

et

c

-RRB-

-LCB-

Le

premier

el?ement

de

la

premi?ere

colonne

de

A

est

align?e

sur

le

d?ebut

d'une

page

-LCB-

On

note

p

le

nombre

de

processeurs

-LCB-

On

note

N

et

M

respectivement

le

nombre

de

colonnes

et

de

lignes

de

A.

-LCB-

On

suppose

que

la

taille

des

pages

de

la

MVP

est

un

multiple

de

la

taille

des

el?ements

du

tableau

A.

On

note

T

le

nombre

d'

el?ements

contenus

dans

Analyse

des

acc?es

aux

pages

de

la

MVP

une

page

On

suppose

que

la

taille

des

m?emoires

locales

est

suffisante

-LRB-

et

que

les

boucles

pr?esentent

suffisamment

de

localit?e

spatiale

-RRB-

pour

que

n'interviennent

pas

de

migrations

de

pages

dues

au

manque

de

place

dans

une

m?emoire

On

consid?ere

les

deux

ordonnancements

statiques

suivants

de

la

boucle

parall?ele

-LCB-

Une

distribution

cyclique

des

it?erations

de

la

boucle

parall?ele

sur

les

processeurs

-LRB-

voir

figures

-LRB-

b

et

d

-RRB-

-RRB-

Le

processeur

i

traite

les

it?erations

d'indice

congruent

a

i

modulo

p

-LCB-

Un

ordonnancement

par

blocs

-LRB-

voir

figures

-LRB-

c

et

e

-RRB-

-RRB-

Le

processeur

i

traite

les

it?erations

appartenant

a

l'intervalle

j

-LSB-

id

N

p

e

-LRB-

i

-RRB-

dN

p

e

-RSB-

j

Nous

supposons

en

outre

que

la

distribution

initiale

des

pages

dans

les

m?emoires

locales

est

cyclique

-LRB-

la

page

i

est

plac?ee

dans

la

m?emoire

du

processeur

i

mod

p

comme

c'est

le

cas

sur

la

figure

-LRB-

a

-RRB-

-RRB-

Si

l'on

consid?ere

le

nid

ordonnanc?ee

cycliquement

avec

les

colonnes

du

tableau

A

plus

courtes

que

les

pages

de

la

MVP

-LRB-

voir

-LRB-

d

-RRB-

-RRB-

les

processeurs

P

et

P

acc?edent

tous

les

deux

a

des

el?ements

distincts

de

la

page

On

a

donc

un

ph?enom?ene

de

faux-partage

lors

de

l'acc

es

a

cette

page

Cet

acc?es

est

susceptible

d'engendrer

par

exemple

les

communications

suivantes

-LRB-

-RRB-

P

est

le

propri?etaire

initial

de

la

page

il

effectue

l'

ecriture

sur

A

-LSB-

-RSB-

-LRB-

-RRB-

P

envoie

une

requ

ete

pour

obtenir

les

droits

en

ecriture

sur

la

page

afin

de

modifier

A

-LSB-

-RSB-

-LRB-

-RRB-

P

envoie

la

page

a

P

et

perd

la

propri?et?e

de

la

page

-LRB-

-RRB-

P

effectue

l'

ecriture

sur

A

-LSB-

-RSB-

-LRB-

-RRB-

P

envoie

une

requ

ete

pour

obtenir

les

droits

en

ecriture

sur

la

page

afin

de

modifier

A

-LSB-

-RSB-

-LRB-

-RRB-

etc.

On

voit

que

le

ph?enom?ene

de

faux-partage

risque

de

provoquer

un

nombre

de

migrations

de

pages

allant

jusqu

a

une

migration

pour

chaque

ecriture

Le

volume

de

communication

est

alors

inutilement

accru

et

le

parall?elisme

de

la

boucle

Doall

est

partiellement

perdu

Cependant

nous

avons

d?ecrit

le

pire

des

cas

et

on

peut

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

AA

j

j

i

i

-LRB-

c

-RRB-

-LRB-

b

-RRB-

Ordonnancement

cyclique

Ordonnancement

par

blocs

Cas

Les

colonnes

font

plus

d'une

page

AA

j

j

i

i

-LRB-

d

-RRB-

-LRB-

e

-RRB-

Ordonnancement

cyclique

Ordonnancement

par

blocs

Les

colonnes

font

moins

d'une

pageCas

page

CPU

CPU

CPU

page

page

-LRB-

a

-RRB-

page

page

page

page

page

page

page

page

page

page

Cache

M?moire

locale

Donn?es

locales

Placement

Placement

Placement

Espace

d'adressage

global

Distribution

initiale

cyclique

des

pages

Fig.

Influence

de

l'ordonnancement

sur

le

faux

partage

Analyse

des

acc?es

aux

pages

de

la

MVP

penser

qu'un

processeur

aura

le

temps

d'effectuer

plusieurs

ecritures

avant

de

perdre

les

droits

sur

la

page

Si

nous

comparons

le

comportement

du

nid

de

boucles

avec

un

ordonnancement

cyclique

et

un

ordonnancement

par

blocs

on

observe

que

dans

le

premier

cas

-LRB-

figure

-LRB-

b

-RRB-

-RRB-

les

pages

et

sont

victimes

de

faux-partage

alors

que

dans

le

second

-LRB-

figure

-LRB-

c

-RRB-

-RRB-

seules

les

pages

et

sont

concern?ees

Il

appara

t

donc

que

les

performances

de

la

MVP

sont

intimement

li?ees

a

l'ordonnancement

des

boucles

et

au

placement

des

donn?ees

dans

la

MVP

C'est

pourquoi

le

mod?ele

pr?esent?e

dans

ce

chapitre

s

appuie

sur

une

classification

des

pages

en

fonction

du

placement

initial

de

la

page

et

des

acc?es

a

cette

page

pour

un

ordonnancement

fix?e

Classification

des

pages

Nous

distinguons

quatre

classes

de

pages

-LRB-

qui

ne

sont

pas

a

priori

d'intersection

vide

-RRB-

toutes

les

d?efinitions

seront

illustr?ees

sur

l'exemple

de

la

figure

en

supposant

une

distribution

initiale

cyclique

des

pages

et

un

ordonnancement

cyclique

de

la

boucle

DO

i

-LRB-

cf

figures

-LRB-

a

-RRB-

-LRB-

b

-RRB-

-RRB-

D?efinition

On

appelle

d?efaut

a

froid

la

requ

ete

par

un

processeur

d'une

page

a

laquelle

il

sera

le

seul

a

acc?eder

pendant

toute

l'ex

ecution

de

la

boucle

Une

telle

page

est

appel?ee

page

froide

Par

d?efinition

une

page

froide

ne

subira

qu'un

seul

transfert

au

cours

de

l'ex

ecution

de

la

boucle

d

u

a

une

mauvaise

attribution

initiale

de

la

page

Les

effets

de

ces

pages

sur

les

performances

du

programme

sont

donc

marginaux

si

la

boucle

externe

est

suffisamment

r?ep?et?ee

Par

exemple

la

page

qui

appartient

initialement

au

processeur

contient

une

partie

de

la

premi?ere

colonne

de

A

qui

ne

sera

acc?ed?ee

que

par

le

processeur

De

m

eme

les

pages

et

sont

froides

D?efinition

Une

page

est

dite

au

moins

partiellement

bien

attribu?ee

si

elle

est

acc?ed?ee

au

moins

une

fois

au

cours

du

programme

par

son

propri?etaire

initial

Les

pages

et

sont

au

moins

partiellement

bien

attribu?ees

D?efinition

Une

page

est

dite

stable

si

elle

n'est

acc?ed?ee

que

par

son

propri?etaire

initial

durant

toute

l'ex

ecution

du

programme

Les

pages

et

sont

stables

D?efinition

On

appelle

conflit

l'acc

es

simultan?e

de

plusieurs

processeurs

a

une

m

eme

page

une

page

susceptible

de

provoquer

des

conflits

durant

une

ex?ecution

parall?ele

est

appel?ee

page

conflictuelle

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Les

el?ements

A

-LSB-

M

-RSB-

et

A

-LSB-

-RSB-

sont

m?emoris?es

a

des

adresses

contigu?es

de

la

page

et

sont

acc?ed?es

en

parall?ele

respectivement

par

P

et

P

En

cons?equence

la

page

est

conflictuelle

Il

en

va

de

m

eme

pour

les

pages

et

Le

nombre

de

migrations

de

page

engendr?ees

par

un

conflit

sera

etudi?e

au

paragraphe

D?efinition

Le

degr?e

-LRB-

de

partage

-RRB-

d'un

conflit

est

le

nombre

de

processeurs

diff?erents

acc?edant

a

la

page

conflictuelle

durant

l'ex

ecution

de

la

boucle

Une

page

conflictuelle

devra

au

moins

migrer

une

fois

vers

la

m?emoire

locale

de

chaque

processeur

en

conflit

pour

lui

permettre

d'effectuer

son

ecriture

Le

nombre

minimum

de

migrations

d'une

page

conflictuelle

est

donc

egal

a

son

degr?e

si

elle

n'est

pas

au

moins

partiellement

bien

attribu?ee

et

a

son

degr?e

moins

un

dans

le

cas

contraire

Ce

minimum

est

atteint

dans

le

cas

o?u

l'ex

ecution

n'engendre

aucun

ph?enom?ene

de

ping-pong

D?efinition

Une

page

conflictuelle

subit

un

effet

ping-pong

lorsqu'au

moins

un

des

processeurs

en

conflit

sur

cette

page

doit

effectuer

plusieurs

requ

etes

pour

mener

a

bien

tous

ses

acc?es

en

ecriture

sur

cette

page

Lorsqu'il

n

y

a

pas

de

ping-pong

le

processeur

qui

poss?ede

les

droits

en

ecriture

a

le

temps

d'effectuer

tous

ses

acc?es

en

ecriture

avant

de

recevoir

la

requ

ete

d'un

autre

processeur

en

conflit

Il

est

important

de

noter

que

cette

classification

ne

d?efinit

pas

une

partition

des

pages

-LRB-

une

m

eme

page

peut

appartenir

a

plusieurs

classes

-RRB-

Ainsi

une

page

au

moins

partiellement

bien

attribu?ee

-LRB-

propri?et?e

ind?ependante

du

partage

-RRB-

peut

etre

soit

stable

soit

conflictuelle

suivant

qu'elle

est

acc?ed?ee

par

un

ou

plusieurs

processeurs

au

cours

du

programme

Nous

avons

choisi

ce

type

de

classification

pour

distinguer

les

influences

respectives

des

propri?et?es

de

partage

et

de

la

distribution

initiale

ce

qui

a

egalement

l'avantage

de

faciliter

le

calcul

du

nombre

d'

el?ements

de

chaque

classe

Nous

noterons

respectivementNtot

Nfr

Nconf

Npba

et

Nsta

le

nombre

total

de

pages

acc?ed?ees

par

la

boucle

et

le

nombre

de

pages

froides

conflictuelles

au

moins

partiellement

bien

attribu?ees

et

stables

Nous

noterons

enfin

D

la

somme

des

degr?es

des

diff?erentes

pages

conflictuelles

Calcul

du

nombre

minimum

de

migrations

de

pages

En

fonction

des

propri?et?es

de

migration

des

diff?erentes

classes

de

pages

on

obtient

le

r?esultat

suivant

Th?eor?eme

Le

nombre

minimum

de

migrations

de

pages

pendant

l'ex

ecution

d'une

boucle

parall?ele

est

Cmin

D

Ntot

Nconf

Npba

Analyse

des

acc?es

aux

pages

de

la

MVP

Les

migrations

suppl?ementaires

qui

pourraient

avoir

lieu

seraient

la

cons?equence

d'effets

ping-pong

pendant

les

conflits

D?emonstration

Le

nombre

minimum

de

migrations

dues

a

l'ensemble

des

pages

conflictuelles

est

D

moins

le

nombre

de

pages

a

la

fois

conflictuelles

et

au

moins

partiellement

bien

attribu?ees

Le

nombre

exact

de

migrations

dues

a

l'ensemble

des

pages

non

conflictuelles

est

egal

au

nombre

de

pages

froides

qui

est

egalement

egal

au

nombre

total

de

pages

non

conflictuelles

moins

le

nombre

de

pages

a

la

fois

non

conflictuelles

et

au

moins

partiellement

bien

attribu?ees

En

sommant

sur

les

deux

ensembles

on

en

d?eduit

que

le

nombre

minimum

de

migrations

est

D

plus

le

nombre

de

pages

non

conflictuelles

moins

Npba

ce

qui

conduit

a

l'expression

du

th?eor?eme

Cette

borne

inf?erieure

nous

sera

tr?es

utile

pour

guider

les

choix

de

transformations

a

appliquer

a

un

programme

pour

r?eduire

les

effets

du

faux-partage

et

en

cons?equence

am?eliorer

les

performances

-LRB-

voir

le

chapitre

-RRB-

Cependant

elle

n'est

encore

qu'une

faible

estimation

du

co

ut

de

communication

effectif

La

premi?ere

raison

est

qu'elle

ne

prend

pas

en

compte

les

effets

du

ping-pong

si

bien

que

le

nombre

r?eel

de

migrations

peut

etre

bien

au-del

a

du

minimum

calcul?e

et

la

seconde

raison

est

que

le

co

ut

de

communication

pendant

l'ex

ecution

parall?ele

de

la

boucle

ne

d?epend

pas

seulement

du

nombre

total

de

conflits

mais

principalement

de

la

fa?con

dont

ces

conflits

sont

r?epartis

sur

les

processeurs

En

effet

un

conflit

impliquant

processeurs

sur

une

m

eme

page

sera

beaucoup

plus

co

uteux

et

susceptible

d'engendrer

des

effets

ping-pong

que

conflits

op?erant

en

parall?ele

sur

des

couples

distincts

de

processeurs

ne

partageant

pas

de

liens

de

communication

Ce

dernier

point

sera

etudi?e

au

paragraphe

Le

minimum

obtenu

au

th?eor?eme

correspond

au

cas

id?eal

o?u

une

seule

migration

de

page

suffit

pour

qu'un

processeur

puisse

y

faire

tous

ses

acc?es

en

ecriture

Le

cas

le

plus

d?efavorable

a

lieu

au

contraire

lorsque

les

processeurs

ne

peuvent

effectuer

qu'une

ecriture

avant

de

se

voir

priv?es

de

la

page

si

bien

qu'ils

doivent

faire

une

requ

ete

par

el?ement

acc?ed?e

Le

th?eor?eme

d?ecrit

les

diff?erents

cas

qui

peuvent

alors

se

pr?esenter

D?efinition

Le

nombre

maximum

de

migrations

qui

peuvent

etre

engendr?ees

par

un

conflit

est

appel?e

le

co

ut

maximal

du

conflit

Th?eor?eme

On

note

A

le

nombre

d'

el?ements

de

la

page

modifi?es

par

les

diff?erents

processeurs

-LRB-

-RRB-

Dans

le

cas

d'un

conflit

de

degr?e

deux

le

co

ut

maximal

du

conflit

est

egal

a

deux

fois

le

nombre

minimum

d'

el?ements

acc?ed?es

par

un

des

deux

processeurs

en

conflit

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

-LRB-

-RRB-

Si

le

conflit

est

de

degr?e

sup?erieur

a

trois

et

que

l'un

des

processeurs

acc?ede

a

plus

de

la

moiti?e

des

el?ements

alors

le

nombre

maximum

de

migrations

est

-LRB-

A

M

-RRB-

o?u

M

est

le

nombre

maximum

d'

el?ements

acc?ed?es

par

un

des

processeurs

-LRB-

-RRB-

Dans

tous

les

autres

cas

le

nombre

maximum

de

migrations

est

egal

a

A

D?emonstration

La

d?emonstration

du

premier

cas

est

triviale

chaque

ecriture

co

utant

dans

le

pire

des

cas

une

migration

vers

la

m?emoire

locale

de

l'

ecrivain

et

une

migration

vers

la

m?emoire

locale

du

second

processeur

ainsi

jusqu

a

ce

que

le

processeur

effectuant

le

moins

d'

ecritures

ait

termin?e

Si

le

conflit

est

de

degr?e

sup?erieur

a

trois

avec

M

Page

Pi

Pj

Pk

le

pire

cas

a

lieu

lorsqu'il

y

a

d'abord

un

ping-pong

entre

Pi

et

Pj

ne

permettant

qu'une

seule

ecriture

a

la

fois

puis

lorsque

Pi

a

fini

ses

ecritures

un

ping-pong

entre

Pj

et

Pk

ne

permettant

qu'une

seule

ecriture

a

la

fois

jusqu

a

ce

que

Pk

termine

a

son

tour

Le

nombre

de

migrations

est

alors

de

deux

fois

le

nombre

d'

ecritures

de

Pi

plus

deux

fois

le

nombre

d'

ecritures

de

Pk

ce

qui

conduit

a

la

forme

donn?ee

Dans

tous

les

autres

cas

le

pire

comportement

est

donn?e

par

l'algorithme

suivant

il

y

a

ping-pong

-LRB-

ne

permettant

qu'une

ecriture

a

la

fois

-RRB-

entre

les

deux

processeurs

ayant

le

plus

d'

ecritures

a

effectuer

jusqu

a

ce

qu'il

reste

a

tous

les

processeurs

le

m

eme

nombre

d'acc

es

a

faire

Les

processeurs

terminent

alors

leurs

ecritures

cycliquement

Ce

comportement

engendre

alors

une

migration

par

el?ement

de

la

page

Co

ut

d'un

conflit

Nous

avons

effectu?e

des

mesures

exp?erimentales

sur

la

MVP

KOAN

pour

etudier

les

param?etres

qui

influaient

sur

le

co

ut

d'un

conflit

-LRB-

le

nombre

de

d?efauts

de

page

qu'il

engendre

-RRB-

et

pouvoir

situer

ainsi

le

nombre

r?eel

de

d?efauts

de

pages

lors

de

l'ex

ecution

d'une

boucle

par

rapport

aux

bornes

inf?erieures

et

sup?erieures

donn?ees

par

les

th?eor?emes

et

A

l'issue

de

ces

exp?eriences

nous

pouvons

conclure

que

les

principaux

param?etres

susceptibles

d'aggraver

l'ampleur

d'un

conflit

sont

Le

degr?e

du

conflit

Durant

une

phase

conflictuelle

tous

les

acc?es

en

ecritures

sont

s?equentialis?es

le

degr?e

du

conflit

peut

donc

etre

vu

comme

le

nombre

Analyse

des

acc?es

aux

pages

de

la

MVP

de

processeurs

sur

lesquels

le

parall?elisme

est

perdu

Il

correspond

egalement

au

nombre

de

processeurs

cherchant

a

acc?eder

simultan?ement

a

la

m

eme

m?emoire

locale

au

risque

de

perturber

l'

etat

du

r?eseau

Sur

le

syst?eme

KOAN

lorsque

le

degr?e

d'un

conflit

est

sup?erieur

a

deux

le

comportement

est

similaire

a

une

s?equence

de

conflits

entre

paires

de

processeurs

Ce

ph?enom?ene

a

pu

etre

observ?e

en

etudiant

les

traces

de

programmes

o?u

p

processeurs

acc?edent

en

parall?ele

aux

el?ements

d'une

m

eme

page

Nous

avons

effectu?e

des

exp?eriences

en

distribuant

les

el?ements

de

la

page

sur

les

processeurs

soit

cycliquement

soit

par

blocs

et

en

faisant

varier

le

nombre

de

processeurs

entre

et

Le

nid

de

boucles

donne

le

code

SPMD

correspondant

p

note

le

nombre

de

processeurs

P

rid

le

processeur

num?ero

id

A

est

un

tableau

-LSB-

T

-RSB-

o?u

T

est

la

taille

d'une

page

et

o?u

l'

el?ement

A

-LSB-

-RSB-

est

align?e

sur

un

d?ebut

de

page

Nid

Distribution

cyclique

Do

i

P

rid

i

T

par

pas

de

p

A

-LSB-

i

-RSB-

EndDo

Distribution

par

blocs

Do

i

P

ridd

Tp

e

i

-LRB-

P

rid

-RRB-

dTp

e

par

pas

de

A

-LSB-

i

-RSB-

EndDo

Les

r?esultats

obtenus

sont

toujours

comparables

a

celui

de

la

figure

qui

illustre

le

comportement

du

programme

cyclique

sur

processeurs

-LRB-

le

processeur

etant

le

gestionnaire

de

la

page

-RRB-

Les

croix

repr?esentent

pour

chaque

processeur

les

dates

auxquelles

ils

effectuent

un

d?efaut

de

page

Les

dates

utilis?ees

pour

visualiser

la

r?epartition

des

d?efauts

au

cours

du

temps

sont

locales

aux

processeurs

ce

graphe

n'est

donc

pas

exact

du

fait

du

d?ecalage

pouvant

exister

entre

les

horloges

des

diff?erents

processeurs

Cependant

la

pr?ecision

est

suffisante

pour

affirmer

que

les

conflits

ont

lieu

par

paires

-LRB-

except?e

pour

le

gestionnaire

-RRB-

les

dates

de

premi?ere

requ

ete

de

chaque

processeur

montrant

que

les

eventuels

d?ecalages

sont

tr?es

inf?erieurs

a

l'

ecart

entre

les

conflits

On

peut

conclure

de

cette

premi?ere

exp?erience

que

les

conflits

entre

plus

de

deux

processeurs

sont

a

eviter

absolument

car

ils

ont

pour

effets

-LCB-

De

s?equentialiser

les

requ

etes

On

perd

donc

tout

parall?elisme

durant

l'ex

ecution

de

la

section

de

code

correspondante

-LCB-

D'engendrer

un

grand

nombre

de

d?efauts

de

pages

-LCB-

En

cons?equence

du

point

pr?ec?edent

d'encombrer

gravement

le

r?eseau

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Le

temps

n?ecessaire

pour

ex?ecuter

une

telle

boucle

est

souvent

sup?erieur

au

temps

s?equentiel

et

on

aura

donc

int?er

et

a

pr?evoir

et

a

eliminer

l'occurrence

de

tels

conflits

quitte

a

faire

effectuer

les

ecritures

sur

cette

page

par

un

seul

processeur

Nous

n

etudierons

donc

en

d?etails

que

les

conflits

entre

deux

processeurs

Le

nombre

d'

ecritures

qu'un

processeur

peut

effectuer

lorsqu'il

obtient

une

page

Dans

le

cas

d'un

conflit

osatur?eAE

o?u

le

gestionnaire

traite

en

permanence

un

d?efaut

en

ecriture

sur

la

page

le

temps

entre

le

moment

o?u

un

processeur

re?coit

la

page

et

celui

o?u

elle

est

invalid?ee

est

constant

et

egal

au

temps

de

traitement

d'un

d?efaut

par

le

gestionnaire

Le

nombre

d'

ecritures

possibles

ne

d?epend

donc

que

de

la

fr?equence

de

ces

ecritures

et

donc

essentiellement

du

temps

d'

evaluation

de

la

partie

droite

de

l'affectation

Pour

montrer

l'influence

de

ce

param?etre

nous

avons

effectu?e

une

s?erie

d'exp

eriences

sur

KOAN

et

calcul?e

a

l'ex

ecution

le

nombre

de

d?efauts

de

pages

engendr?es

par

un

conflit

entre

deux

processeurs

Pour

etudier

ce

ph?enom?ene

sur

des

conflits

de

co

uts

maximaux

diff?erents

nous

avons

utilis?e

le

programme

suivant

param?etr?e

par

x

et

Tc

deux

processeurs

P

et

P

acc?edent

en

parall?ele

a

une

m

eme

page

P

modifie

les

x

premiers

el?ements

de

la

page

et

P

les

T

x

derniers

chaque

processeur

effectue

une

ecriture

toutes

les

Tc

microsecondes

-LRB-

on

utilise

pour

cela

une

fonction

de

d?elai

-RRB-

On

a

mesur?e

le

nombre

de

migrations

de

pages

correspondant

aux

valeurs

x

-LSB-

-RSB-

-LRB-

Les

pages

de

la

MVP

contenant

el?ements

la

proportion

d'

ecritures

effectu?ees

par

P

varie

donc

entre

et

et

pour

Tc

variant

entre

et

secondes

c'est

a-dire

d'une

valeur

n?egligeable

a

une

valeur

du

m

eme

ordre

de

grandeur

que

la

gestion

d'un

d?efaut

de

page

sur

KOAN

-LRB-

voir

l'annexe

A

-RRB-

Les

courbes

et

donnent

le

nombre

de

migrations

de

pages

en

fonction

de

x

et

Tc

Le

nombre

minimum

de

migrations

donn?e

par

le

th?eor?eme

est

de

un

dans

tous

les

cas

et

le

maximum

fourni

par

le

th?eor?eme

est

respectivement

de

et

d?efauts

de

page

La

figure

illustre

le

fait

que

si

le

calcul

de

la

partie

droite

de

l'affectation

est

suffisamment

rapide

le

nombre

de

d?efauts

de

page

est

quasiment

insensible

au

co

ut

maximal

du

conflit

et

proche

de

sa

valeur

minimum

Lorsque

l'intervalle

entre

deux

ecritures

est

tel

qu'il

ne

permet

pas

plusieurs

ecritures

avant

qu'un

processeur

ne

perde

la

propri?et?e

d'une

page

le

nombre

de

migrations

est

egal

au

maximum

th?eorique

Analyse

des

acc?es

aux

pages

de

la

MVP

R?partition

des

d?fauts

de

pages

entre

processeurs

Temps

-LRB-

microsecondes

-RRB-

Processeurs

Fig.

S?equentialisation

des

acc?es

en

cas

de

conflit

-LRB-

Cas

d'un

conflit

entre

processeurs

-RRB-

Entre

ces

deux

extr

emit?es

le

nombre

de

d?efauts

de

page

cro

t

lin?eairement

avec

le

co

ut

maximal

du

conflit

selon

une

pente

d?ependant

du

temps

de

calcul

La

figure

montre

la

forme

de

l'influence

du

temps

de

calcul

sur

le

nombre

de

d?efauts

engendr?es

Les

valeurs

num?eriques

sont

caract?eristiques

de

l'implantation

de

KOAN

cependant

on

peut

s

attendre

a

observer

un

comportement

g?en?eral

similaire

avec

les

autres

mises

en

oeuvre

de

MVP

En

effet

ce

comportement

-LRB-

sch?ematis?e

sur

la

figure

dans

le

cas

de

deux

processeurs

P

et

P

diff?erents

du

gestionnaire

de

page

G

et

sur

la

figure

dans

le

cas

o?u

l'un

d'eux

est

le

gestionnaire

-RRB-

est

principalement

d

u

a

la

latence

du

r?eseau

au

transfert

par

page

et

au

protocole

d'invalidation

qui

sont

communs

a

la

plupart

des

MVP

D'apr

es

ce

sch?ema

et

la

figure

on

peut

tirer

les

conclusions

suivantes

en

fonction

des

valeurs

respectives

de

la

latence

du

r?eseau

L

de

la

dur?ee

d'un

acc?es

en

ecriture

Te

du

d?elai

de

calcul

Tc

et

de

la

somme

du

temps

de

r?eception

et

d'envoi

d'un

message

court

T

Cas

o?u

Tc

L

Te

T

Dans

le

cas

de

KOAN

cela

correspond

a

Tc

seconds

Un

processeur

ne

peut

alors

effectuer

qu'une

ecriture

a

la

fois

avant

de

perdre

la

propri?et?e

de

la

page

Le

nombre

de

migrations

est

alors

egal

au

maximum

donn?e

par

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

500 1000 1500 2000

Dur?e

d'un

calcul

-LRB-

micro-secondes

-RRB-

Nombre

de

d?fauts

de

page

Co?t

Co?t

Co?t

Co?t

Fig.

Influence

du

d?elai

de

calcul

sur

le

ph?enom?ene

de

ping-pong

pour

diff?erentes

valeurs

du

co

ut

maximal

du

conflit

Cas

d'un

conflit

entre

deux

processeurs

le

th?eor?eme

Cette

valeur

est

critique

en

dessous

de

ce

seuil

on

passe

de

fa?con

brutale

a

deux

ecritures

au

minimum

par

acc?es

En

effet

a

alors

le

temps

de

commencer

la

seconde

ecriture

et

la

requ

ete

de

est

retard?ee

jusqu

a

la

fin

de

celle-ci

Cas

o?u

Tc

L

Te

T

Le

nombre

de

migrations

de

page

d?ecro

t

lin?eairement

avec

Tc

Dans

le

cas

de

KOAN

ce

comportement

admet

une

exception

au

voisinage

de

Tc

secondes

lorsque

l'un

des

processeurs

en

conflit

est

le

gestionnaire

de

page

Si

apr?es

un

d?efaut

en

ecriture

le

gestionnaire

re?coit

une

requ

ete

sans

avoir

pu

effectuer

au

moins

un

acc?es

en

ecriture

la

requ

ete

est

refus?ee

par

l'envoi

d'un

message

onot

readyAE

le

processeur

en

d?efaut

doit

en

cons?equence

effectuer

deux

d?efauts

pour

obtenir

la

page

ce

qui

explique

les

pics

de

la

figure

au

voisinage

de

cette

valeur

Lorsque

le

temps

de

calcul

devient

n?egligeable

le

nombre

de

migrations

atteint

le

minimum

th?eorique

Analyse

des

acc?es

aux

pages

de

la

MVP

200 400 600 800

Co?t

maximal

du

conflit

Nombre

de

d?fauts

de

pages

d

micro

sec

d

d

d

d

Fig.

Influence

du

co

ut

maximal

du

conflit

sur

le

ph?enom?ene

de

ping-pong

pour

diff?erentes

valeurs

du

d?elai

de

calcul

Cas

d'un

conflit

entre

deux

processeurs

Conclusions

Les

performances

d'un

nid

de

boucle

sur

une

MVP

peuvent

a

priori

para

tre

difficiles

a

pr?edire

car

elles

d?ependent

d'un

grand

nombre

de

param?etres

d'origines

diverses

la

r?epartition

des

donn?ees

dans

la

m?emoire

globale

l'ordonnancement

des

instructions

sur

les

processeurs

le

d?elai

entre

deux

ecritures

etc.

Nous

proposons

de

s?erier

la

prise

en

compte

de

ces

param?etres

afin

d'en

tirer

des

le?cons

sur

le

comportement

d'une

MVP

La

r?epartition

des

donn?ees

et

l'ordonnancement

choisi

permettent

d'obtenir

une

classification

des

pages

suivant

les

acc?es

qu'elles

subissent

On

en

d?eduit

les

pages

qui

seront

susceptibles

de

provoquer

des

conflits

d'acc

es

et

des

bornes

inf?erieures

et

sup?erieures

du

nombre

de

mouvements

de

pages

que

provoquera

l'ex

ecution

de

la

boucle

Le

comportement

effectif

fluctue

alors

entre

ces

deux

bornes

en

fonction

de

l'ampleur

des

conflits

Ces

bornes

se

r?ev?elent

tr?es

utiles

pour

estimer

l'impact

d'une

transformation

Pour

un

ordonnancement

fix?e

le

but

sera

alors

de

se

rapprocher

autant

que

possible

du

minimum

th?eorique

D'autre

part

une

etude

empirique

nous

a

permis

de

d?eterminer

les

param?etres

influant

sur

le

co

ut

r?eel

d'un

conflit

Ce

constat

nous

offre

un

point

de

d?epart

pour

mettre

en

oeuvre

des

transformations

limitant

les

effets

du

faux-partage

comme

nous

le

verrons

au

chapitre

Voyons

dans

un

cas

particulier

comment

toutes

les

grandeurs

d?efinies

dans

ce

mod?ele

peuvent

etre

calcul?ees

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

temps

de

transfert

d'une

page

temps

de

transfert

d'un

message

court

page

confirmation

G

T

demande

d'acc

s

en

criture

Temps

d?faut

de

page

en

criture

Pr

Pr

Te

acc?s

en

criture

Tc

temps

de

calcul

L

latence

du

r?seau

Fig.

Conflit

entre

deux

processeurs

et

Exemple

d'application

Nous

montrons

dans

ce

paragraphe

comment

calculer

pr?ecis?ement

le

cardinal

de

chaque

classe

de

pages

et

comment

les

utiliser

pour

estimer

le

co

ut

de

communication

durant

l'ex

ecution

du

nid

dans

les

conditions

de

la

figure

-LRB-

a

-RRB-

-LRB-

b

-RRB-

Notion

de

Pav?e

Afin

de

pouvoir

etudier

la

distribution

des

conflits

sur

les

diff?erents

processeurs

nous

devons

d?eterminer

quand

et

a

quels

endroits

ils

ont

lieu

Nous

avons

vu

pr?ec?edemment

que

les

pages

conflictuelles

d?ependaient

de

l'ordonnancement

il

est

donc

naturel

qu'elles

apparaissent

avec

une

r?egularit?e

refl?etant

celle

de

l'ordonnancement

choisi

Dans

le

cas

de

l'exemple

de

la

figure

les

pages

conflictuelles

r?esultent

des

colonnes

du

tableau

A

qui

commencent

ou

finissent

en

milieu

de

page

il

est

donc

capital

de

pouvoir

d?eterminer

ces

colonnes

D?efinition

On

d?efinit

un

pav?e

comme

l'ensemble

des

pages

situ?ees

entre

deux

positions

successives

o?u

le

d?ebut

d'une

colonne

co

ncide

avec

le

d?ebut

d'une

page

La

figure

illustre

cette

d?efinition

dans

les

deux

cas

possibles

o?u

les

colonnes

Exemple

d'application

page

G

Te

acc?s

en

criture

requ?te

Not

Ready

Temps

d?faut

de

page

en

criture

Pr

Fig.

Conflit

entre

un

processeur

et

le

gestionnaire

sont

plus

grandes

ou

plus

courtes

que

les

pages

Th?eor?eme

Si

on

note

d

le

pgcd

de

M

et

T

t

Td

et

m

Md

alors

un

pav?e

contient

m

pages

et

t

colonnes

D?emonstration

Les

adresses

des

premiers

el?ements

des

pages

sont

les

multiples

de

T

et

le

premier

el?ement

de

la

i?eme

colonne

de

A

est

l'

el?ement

iM

Donc

la

colonne

i

commence

en

d?ebut

de

page

ssi

iM

est

un

multiple

de

T

donc

si

et

seulement

si

c'est

un

multiple

de

ppcm

-LRB-

M

T

-RRB-

ce

qui

est

equivalent

a

i

multiple

de

ppcm

-LRB-

M

T

-RRB-

M

T

d

t

Sym?etriquement

la

page

i

commence

sur

le

premier

el?ement

d'une

colonne

ssi

iT

est

un

multiple

de

ppcm

-LRB-

M

T

-RRB-

soit

ssi

i

est

un

multiple

de

ppcm

-LRB-

M

T

-RRB-

T

M

d

m

Dans

le

premier

cas

de

la

figure

les

pages

contiennent

six

el?ements

et

les

colonnes

el?ements

les

pav?es

contiennent

alors

colonnes

et

pages

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Pages

Colonnes

processeurs

Cas

-LRB-

-RRB-

M

T

PAV

PAV

PagesColonnes

processeurs

Cas

-LRB-

-RRB-

M

T

Fig.

D?efinition

des

pav?es

D?etermination

des

classes

de

pages

Nous

donnons

dans

ce

paragraphe

les

r?esultats

quantitatifs

concernant

notre

classification

des

pages

Le

th?eor?eme

donne

le

nombre

de

pages

conflictuelles

et

leurs

degr?es

Les

th?eor?emes

et

donnent

respectivement

les

nombres

de

pages

stables

au

moins

partiellement

bien

attribu?ees

et

froides

Avant

toute

chose

notons

que

le

nombre

total

de

pages

n?ecessaires

pour

stocker

le

tableau

A

-LSB-

N

M

-RSB-

dans

la

MVP

est

Ntot

dNM

T

e

-LRB-

-RRB-

Th?eor?eme

-LCB-

Si

M

T

le

nombre

de

pages

conflictuelles

durant

l'ex

ecution

de

la

boucle

est

Nconf

N

dN

t

e

et

chaque

conflit

est

de

degr?e

deux

La

somme

des

degr?es

des

conflits

est

donc

dans

ce

cas

D

-LCB-

Si

M

T

le

nombre

de

pages

conflictuelles

durant

l'ex

ecution

de

la

boucle

est

Nconf

dM

-LRB-

N

-RRB-

T

e

et

les

conflits

sont

de

degr?e

soit

dT

Me

soit

dT

Me

La

somme

des

degr?es

des

conflits

valant

D

N

dM

-LRB-

N

-RRB-

T

e

dN

t

e

Exemple

d'application

D?emonstration

-LCB-

Si

M

T

-LRB-

Premier

cas

de

la

figure

-RRB-

une

page

conflictuelle

n'engendre

qu'un

seul

conflit

et

tous

les

conflits

sont

de

degr?e

A

l'int

erieur

d'un

pav?e

les

pages

conflictuelles

sont

celles

qui

contiennent

les

fins

de

colonnes

except?e

la

derni?ere

du

pav?e

Le

nombre

de

telles

pages

est

donc

simplement

t

dans

un

pav?e

complet

Si

N

n'est

pas

un

multiple

de

t

-LRB-

i.e.

si

la

division

euclidienne

de

N

par

t

s

ecrit

N

at

b

avec

b

-RRB-

il

reste

b

colonnes

dans

un

pav?e

incomplet

La

derni?ere

colonne

ne

finit

pas

sur

une

borne

de

page

mais

la

page

sur

laquelle

il

termine

n'est

pas

conflictuelle

puisque

la

fin

de

la

page

n'est

pas

acc?ed?ee

Il

y

a

donc

b

pages

conflictuelles

dans

un

eventuel

pav?e

incomplet

de

b

colonnes

Les

N

colonnes

se

r?epartissent

en

a

pav?es

complets

et

b

colonnes

dans

un

pav?e

incomplet

le

nombre

de

pages

conflictuelles

est

donc

a

-LRB-

t

-RRB-

b

N

a

si

b

et

de

a

-LRB-

t

-RRB-

N

a

si

b

d'

o?u

dans

tous

les

cas

de

N

dN

t

e

La

somme

des

degr?es

des

conflits

est

egale

a

deux

fois

ce

nombre

-LCB-

Si

M

T

-LRB-

deuxi?eme

cas

de

la

figure

-RRB-

alors

toutes

les

pages

sont

conflictuelles

Une

page

contient

soit

dT

Me

soit

dT

Me

colonnes

Pour

calculer

les

degr?es

des

conflits

nous

allons

distinguer

cette

fois-ci

diff?erents

types

de

colonnes

Si

un

processeur

acc?ede

a

une

colonne

contenue

dans

une

seule

page

-LRB-

cas

des

colonnes

et

de

l'exemple

-RRB-

cet

acc?es

ne

le

fera

participer

qu

a

un

conflit

Si

la

colonne

est

a

cheval

sur

deux

pages

-LRB-

colonnes

et

-RRB-

cet

acc?es

lui

co

utera

deux

conflits

Le

nombre

de

ces

colonnes

a

l'int

erieur

d'un

pav?e

est

egal

a

m

Toutes

les

autres

colonnes

provoquant

un

conflit

la

somme

des

degr?es

des

conflits

a

l'int

erieur

d'un

pav?e

est

donc

egale

a

-LRB-

m

-RRB-

-LRB-

t

m

-RRB-

t

m

Dans

un

pav?e

incomplet

de

b

colonnes

la

derni?ere

page

n'est

pas

conflictuelle

si

elle

ne

contient

que

des

el?ements

de

la

derni?ere

colonne

-LRB-

la

page

ne

serait

pas

conflictuelle

si

le

dernier

pav?e

incomplet

ne

contenait

que

les

colonnes

et

-RRB-

Par

contre

elle

est

conflictuelle

dans

le

cas

contraire

-LRB-

la

page

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

serait

conflictuelle

si

le

dernier

pav?e

incomplet

ne

contenait

que

les

colonnes

et

-RRB-

Le

nombre

de

pages

conflictuelles

est

donc

dans

tous

les

cas

de

d

-LRB-

b

-RRB-

M

T

e

qui

repr?esente

les

pages

n?ecessaires

pour

stocker

b

colonnes

Comme

pr?ec?edemment

les

b

colonnes

engendrent

un

conflit

sauf

ceux

qui

sont

a

cheval

entre

deux

pages

conflictuelles

qui

en

engendre

deux

la

somme

des

degr?es

des

conflits

est

donc

finalement

de

b

d

-LRB-

b

-RRB-

M

T

e

dans

le

dernier

pav?e

Nous

pouvons

maintenant

calculer

le

nombre

total

de

pages

conflictuelles

pour

les

N

colonnes

-LCB-

Si

b

Le

nombre

total

de

pages

conflictuelles

est

de

at

dM

-LRB-

b

-RRB-

T

e

atMT

dM

-LRB-

b

-RRB-

T

e

datM

M

-LRB-

b

-RRB-

T

e

dM

-LRB-

N

-RRB-

T

e

et

la

somme

des

degr?es

est

de

a

-LRB-

t

m

-RRB-

b

d

-LRB-

b

-RRB-

M

T

e

N

am

a

d

-LRB-

b

-RRB-

M

T

e

N

a

datM

-LRB-

b

-RRB-

M

T

e

N

dM

-LRB-

N

-RRB-

T

e

a

-LCB-

si

b

Le

nombre

total

de

pages

conflictuelles

est

de

NM

T

dM

-LRB-

N

-RRB-

T

e

car

M

T

et

la

somme

des

degr?es

est

de

a

-LRB-

t

m

-RRB-

N

am

a

N

aTm

T

a

N

atMT

a

N

NMT

a

N

dM

-LRB-

N

-RRB-

T

e

a

Exemple

d'application

Donc

dans

tous

les

cas

le

nombre

total

de

pages

conflictuelles

est

de

dM

-LRB-

N

-RRB-

T

e

et

la

somme

des

degr?es

des

conflits

est

de

N

dM

-LRB-

N

-RRB-

T

e

dN

t

e

Cherchons

maintenant

a

caract?eriser

les

pages

stables

et

les

pages

au

moins

partiellement

bien

attribu?ees

Nous

allons

montrer

que

ce

nombre

est

egal

au

nombre

de

solutions

d'un

syst?eme

diophantien

dont

on

sait

d?eterminer

les

solutions

Commen?cons

par

chercher

les

relations

entre

les

pages

de

la

MVP

et

les

colonnes

du

tableau

A.

Lem

me

-LCB-

La

page

i

ne

contient

que

des

el?ements

de

la

colonne

j

ssi

it

jm

j

-LSB-

m

t

-RSB-

j

-LCB-

La

page

i

contient

-LRB-

entre

autres

-RRB-

des

el?ements

de

la

colonne

j

ssi

it

jm

j

-LSB-

t

m

-RSB-

j

-LCB-

La

page

i

est

conflictuelle

ssi

j

-LSB-

N

-RSB-

j

tel

que

it

jm

j

-LSB-

t

-RSB-

j

-LSB-

j

-LSB-

m

t

m

-RSB-

j

o?u

m

et

t

sont

d?efinis

au

th?eor?eme

Th?eor?eme

Le

nombre

de

pages

stables

durant

l'ex

ecution

de

la

boucle

est

Nsta

N

X

max

min

j

I

p

k

j

-LRB-

m?t

-RRB-

-LRB-

-RRB-

pt

k

max

l

-LRB-

m?t

-RRB-

pt

m

l

>=p

m

Th?eor?eme

Le

nombre

de

pages

partag?ees

ou

non

au

moins

partiellement

bien

attribu?ees

est

Npba

N

X

max

min

j

I

p

k

j

-LRB-

m?t

-RRB-

m

pt

k

max

l

-LRB-

m?t

-RRB-

t

pt

m

l

>=p

m

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

D?emonstration

du

lem

me

La

page

i

commence

en

iT

et

termine

en

-LRB-

i

-RRB-

T

La

colonne

j

commence

en

jM

et

termine

en

-LRB-

j

-RRB-

M

La

page

i

est

donc

enti?erement

dans

la

colonne

j

ssi

-LCB-

La

page

commence

apr?es

le

d?ebut

de

la

colonne

soit

iT

jM

i.e.

iT

jM

-LCB-

La

page

finit

avant

la

fin

de

la

colonne

soit

-LRB-

i

-RRB-

T

-LRB-

j

-RRB-

M

i.e.

iT

jM

M

T

La

page

i

contient

au

moins

un

morceau

de

colonne

j

ssi

-LCB-

La

page

finit

apr?es

le

d?ebut

de

la

colonne

soit

-LRB-

i

-RRB-

T

jM

i.e.

iT

jM

T

-LCB-

La

page

commence

avant

la

fin

de

la

colonne

soit

iT

-LRB-

j

-RRB-

M

i.e

iT

jM

M

Les

valeurs

prises

par

iT

jM

etant

n?ecessairement

des

multiples

de

d

le

pgcd

de

M

et

T

on

en

d?eduit

les

deux

premiers

r?esultats

du

lem

me

en

divisant

par

d

les

in?egalit?es

pr?ec?edentes

Le

dernier

r?esultat

est

alors

imm?ediat

en

consid?erant

qu'une

page

est

conflictuelle

ssi

elle

contient

des

el?ements

d'au

moins

deux

colonnes

diff?erentes

D?emonstration

des

th?eor?emes

et

La

page

i

est

suppos?ee

etre

initialement

dans

la

m?emoire

locale

du

processeur

i

-LSB-

p

-RSB-

et

la

colonne

j

sera

trait?ee

par

le

processeur

j

-LSB-

p

-RSB-

La

page

est

donc

bien

attribu?ee

ssi

i

-LSB-

p

-RSB-

j

-LSB-

p

-RSB-

i.e.

ssi

Zt.q

i

j

lp

Finalement

le

nombre

de

pages

stables

est

donc

le

nombre

de

solutions

-LRB-

i

j

k

l

-RRB-

du

syst?eme

diophantien

suivant

-LRB-

it

jm

k

i

j

lp

avec

i

j

-LSB-

I

-RSB-

j

j

j

-LSB-

N

-RSB-

j

k

j

-LSB-

m

t

-RSB-

j

l

Z

-LRB-

-RRB-

On

sait

r?esoudre

ce

probl?eme

-LRB-

voir

-LSB-

-RSB-

Part

II

chap

-RRB-

en

mettant

le

syst?eme

sous

sa

forme

normale

d'Hermite

et

en

r?esolvant

les

in?egalit?es

associ?ees

On

en

d?eduit

le

th?eor?eme

Exemple

d'application

De

m

eme

le

nombre

de

pages

au

moins

partiellement

bien

attribu?ees

est

le

nombre

de

solutions

du

syst?eme

-LRB-

it

jm

k

i

j

lp

avec

i

j

-LSB-

I

-RSB-

j

j

j

-LSB-

N

-RSB-

j

k

j

-LSB-

t

m

-RSB-

j

l

Z

-LRB-

-RRB-

ce

qui

conduit

au

r?esultat

du

th?eor?eme

Th?eor?eme

Le

nombre

de

pages

froides

durant

l'ex

ecution

de

la

boucle

I

est

finalement

le

nombre

de

pages

ni

conflictuelles

ni

stables

d'

o?u

Nfr

Ntot

Nconf

Nsta

-LRB-

-RRB-

Calcul

du

co

ut

de

communication

D'apr

es

les

calculs

de

Ntot

Nconf

D

et

Npba

on

est

en

mesure

de

calculer

le

nombre

minimum

de

migrations

de

pages

donn?e

par

le

th?eor?eme

Cependant

ce

minimum

ne

refl?ete

pas

en

g?en?eral

tr?es

pr?ecis?ement

le

temps

d'ex

ecution

pour

deux

raisons

d'une

part

il

ne

fournit

qu'un

temps

global

de

communications

sans

prendre

en

compte

la

fa?con

dont

elles

se

parall?elisent

et

d'autre

part

il

ne

fait

pas

intervenir

les

d?efauts

suppl?ementaires

dus

aux

ph?enom?enes

de

ping-pong

C'est

pourquoi

nous

calculons

dans

les

paragraphes

suivants

une

borne

sup?erieure

du

nombre

de

d?efauts

engendr?es

par

un

conflit

sous

l'effet

ping-pong

et

la

fa?con

dont

les

conflits

se

r?epartissent

sur

les

diff?erents

processeurs

Nous

nous

restreignons

dans

ce

qui

va

suivre

au

cas

o?u

M

T

-LRB-

le

premier

cas

du

th?eor?eme

-RRB-

De

plus

nous

supposerons

que

la

taille

de

la

page

T

est

une

puissance

de

deux

ce

qui

est

toujours

le

cas

en

pratique

Co

ut

maximal

des

conflits

Nous

avons

vu

que

le

nombre

de

migrations

de

pages

engendr?ees

par

un

conflit

etait

proportionnel

au

co

ut

maximal

de

ce

conflit

si

l'intervalle

de

temps

entre

deux

acc?es

restait

constant

-LRB-

cf

figure

-RRB-

Le

nombre

de

migrations

pendant

le

programme

sera

donc

encore

proportionnel

a

la

somme

des

co

uts

maximaux

des

conflits

Th?eor?eme

Si

M

T

le

nombre

de

migrations

de

page

dues

a

l'effet

ping-pong

pendant

le

conflit

peut

etre

major?e

par

T

dNt

e

si

t

et

il

est

nul

si

t

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

pi

Vjo

Vjo

-LRB-

jo

-RRB-

M

iT

joM

M

T

Fig.

Conflit

sur

une

page

Pi

et

sont

deux

colonnes

adjacentes

D?emonstration

D'apr

es

le

dernier

cas

du

lem

me

on

a

vu

qu

a

l'int

erieur

d'un

pav?e

la

page

i

est

conflictuelle

ssi

j

-LSB-

N

-RSB-

j

tel

que

la

colonne

j

appartienne

au

pav?e

et

que

it

jm

j

-LSB-

t

-RSB-

j

-LSB-

j

-LSB-

m

t

m

-RSB-

j

On

sait

que

le

degr?e

est

alors

de

deux

et

que

cette

page

contient

des

el?ements

des

deux

colonnes

j

et

j

avec

it

jm

j

-LSB-

m

t

m

-RSB-

j

et

it

-LRB-

j

-RRB-

m

j

-LSB-

t

-RSB-

j

-LRB-

voir

figure

-RRB-

Notons

k

la

valeur

de

-LRB-

j

-RRB-

m

it

Le

nombre

d'

el?ements

de

la

colonne

j

appartenant

a

la

page

i

est

M

-LRB-

iT

jM

-RRB-

-LRB-

j

-RRB-

M

iT

dk

Le

nombre

d'

el?ements

de

la

colonne

j

appartenant

a

la

page

i

est

T

-LRB-

iT

-LRB-

j

-RRB-

M

-RRB-

-LRB-

j

-RRB-

M

iT

T

d

-LRB-

t

k

-RRB-

Quand

on

parcourt

les

t

pages

conflictuelles

du

pav?e

k

parcourt

l'ensemble

j

-LSB-

t

-RSB-

j

Le

nombre

minimum

d'

el?ements

a

traiter

pour

les

diff?erents

conflits

du

pav?e

est

donc

fmin

-LRB-

-LRB-

t

k

-RRB-

d

kd

-RRB-

k

j

-LSB-

t

-RSB-

jg

Or

-LRB-

t

k

-RRB-

d

kd

ssi

k

t

Comme

T

est

une

puissance

de

t

l'est

aussi

Si

t

M

est

un

multiple

de

T

On

est

donc

dans

le

cas

o?u

les

colonnes

sont

egales

aux

pav?es

et

on

n

a

en

cons?equence

aucun

conflit

Sinon

t

est

multiple

de

Les

co

uts

maximaux

des

t

conflits

d'un

pav?e

complet

sont

donc

finalement

fd

-LRB-

t

-RRB-

d

-LRB-

t

-RRB-

d

-LRB-

t

-RRB-

d

dg

dans

un

certain

ordre

La

somme

des

co

uts

maximaux

sur

tout

le

pav?e

vaut

alors

Exemple

d'application

@t

X

i

id

A

td

-LRB-

td

-LRB-

t

-RRB-

-RRB-

td

Qui

se

simplifie

en

T

t

On

ne

peut

d?eterminer

exactement

les

co

uts

maximaux

dans

un

eventuel

dernier

pav?e

incomplet

car

on

ignore

dans

quel

ordre

ils

sont

distribu?es

dans

le

pav?e

Cependant

comme

nous

cherchons

un

majorant

nous

pouvons

surestimer

l'effet

de

ce

dernier

pav?e

en

le

supposant

complet

La

somme

des

co

uts

maximaux

-LRB-

sur

les

dNt

e

pav?es

suppos?es

complets

-RRB-

est

alors

de

T

t

dN

t

e

Remarque

Il

est

important

de

noter

qu'en

l'absence

de

pav?e

incomplet

N

est

un

multiple

de

t

et

le

r?esultat

devient

ind?ependamment

de

la

taille

des

colonnes

-LRB-

sauf

bien

sur

si

t

vaut

-RRB-

Intuitivement

cela

traduit

le

fait

que

si

on

modifie

la

taille

des

colonnes

sans

effectuer

un

alignement

sur

les

pages

-LRB-

cas

t

-RRB-

le

nombre

de

conflits

varie

mais

les

el?ements

conflictuels

ne

font

que

se

regrouper

dans

plus

ou

moins

de

pages

leur

nombre

total

restant

constant

Une

modification

de

la

taille

des

donn?ees

risque

donc

de

n'avoir

qu'une

faible

influence

sur

les

performances

si

on

ne

s

applique

pas

a

l'adapter

exactement

a

la

taille

des

pages

-LRB-

t

-RRB-

ou

si

on

ne

l'accompagne

pas

d'une

r?eduction

de

la

dur?ee

entre

deux

acc?es

-LRB-

on

a

vu

au

paragraphe

pr?ec?edent

que

cela

r?eduisait

l'influence

du

co

ut

maximal

des

conflits

sur

le

nombre

de

d?efauts

de

page

-RRB-

Distribution

des

pages

conflictuelles

On

a

calcul?e

pr?ec?edemment

le

nombre

de

conflits

qui

pouvaient

avoir

lieu

entre

deux

processeurs

devant

acc?eder

a

la

m

eme

page

Mais

ce

nombre

ne

permet

pas

a

lui

seul

d'estimer

le

temps

perdu

a

g?erer

des

conflits

pendant

l'ex

ecution

d'une

it?eration

En

effet

cette

perte

de

temps

d?epend

egalement

de

la

r?epartition

des

conflits

entre

les

processeurs

Selon

que

les

conflits

sont

ou

non

bien

r?epartis

entre

les

processeurs

leur

effet

est

parall?elis?e

ou

pas

D'apr

es

notre

d?ecoupage

en

pav?e

un

processeur

intervient

dans

deux

conflits

s

il

acc?ede

a

une

colonne

qui

n'est

ni

la

premi?ere

ni

la

derni?ere

d'un

pav?e

et

dans

un

seul

conflit

dans

le

cas

contraire

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Nous

allons

maintenant

chercher

a

d?eterminer

quels

sont

ces

processeurs

oprivil?egi?esAE

et

l'influence

qu'ils

ont

sur

la

parall?elisation

des

conflits

Th?eor?eme

Soit

p

le

nombre

de

processeurs

et

t

tel

qu'il

a

et?e

d?efini

au

th?eor?eme

Si

le

pgcd

de

p

et

de

t

est

egal

a

un

ou

deux

alors

les

conflits

sont

r?epartis

equitablement

entre

les

processeurs

Sinon

il

y

a

pgcd

-LRB-

p

t

-RRB-

processeurs

privil?egi?es

et

un

d?es?equilibre

de

b

N

ppcm

-LRB-

p

t

-RRB-

c

conflits

entre

les

processeurs

privil?egi?es

et

les

autres

Les

processeurs

non

privil?egi?es

interviennent

dans

Cmax

p

pgcd

-LRB-

p

t

-RRB-

b

N

ppcm

-LRB-

p

t

-RRB-

c

conflits

ce

qui

correspond

au

co

ut

parall?ele

des

conflits

D?emonstration

Les

extr

emit?es

des

pav?es

sont

constitu?ees

par

les

colonnes

it

ou

it

i

j

-LSB-

bN

tc

-RSB-

j

donc

les

processeurs

privil?egi?es

sont

ceux

qui

s

ecrivent

it

-LSB-

p

-RSB-

ou

-LRB-

it

-RRB-

-LSB-

p

-RSB-

Or

les

deux

suites

-LRB-

it

-LSB-

p

-RSB-

-RRB-

i

j

-LSB-

bN

tc

-RSB-

j

et

-LRB-

it

-LSB-

p

-RSB-

-RRB-

i

j

-LSB-

bN

tc

-RSB-

j

sont

cycliques

d'ordre

O

p

pgcd

-LRB-

p

t

-RRB-

Donc

O

processeurs

sont

privil?egi?es

parce

qu'ils

commencent

un

pav?e

et

O

processeurs

le

sont

parce

qu'ils

terminent

un

pav?e

Pour

conna

tre

le

nombre

de

processeurs

privil?egi?es

il

faut

maintenant

savoir

si

ces

ensembles

ont

des

el?ements

en

commun

Un

el?ement

appartient

aux

deux

ensembles

ssi

il

peut

s

ecrire

it

-LSB-

p

-RSB-

et

jt

-LSB-

p

-RSB-

or

it

jt

-LSB-

p

-RSB-

-LRB-

-RRB-

-LRB-

j

i

-RRB-

t

-LSB-

p

-RSB-

-LRB-

-RRB-

Z

tq

-LRB-

j

i

-RRB-

t

vp

-LRB-

-RRB-

l

est

premier

avec

p

-LRB-

Th?eor?eme

de

B?ezout

-RRB-

Donc

l'intersection

entre

les

deux

ensembles

est

non

vide

ssi

t

est

premier

avec

p.

Or

si

c'est

le

cas

alors

O

p

et

tous

les

processeurs

sont

privil?egi?es

-LRB-

autant

dire

qu'aucun

ne

l'est

-RRB-

et

les

conflits

sont

equilibr?es

S'il

ne

sont

pas

premiers

entre

eux

alors

les

deux

ensembles

sont

disjoints

et

chacun

de

cardinal

O

il

y

a

donc

processeurs

privil?egi?es

et

p

non

privil?egi?es

Si

pgcd

-LRB-

p

t

-RRB-

alors

p

et

l?a

encore

tous

les

processeurs

sont

privil?egi?es

Dans

les

autres

cas

les

conflits

ne

sont

pas

r?epartis

equitablement

sur

les

processeurs

D'apr

es

le

cycle

de

la

suite

des

processeurs

privil?egi?es

chacun

de

ces

processeurs

est

privil?egi?e

tous

les

O

pav?es

donc

ils

evitent

ainsi

au

moins

b

N

Otc

b

N

ppcm

-LRB-

p

t

-RRB-

c

Etude

exp?erimentale

conflits

chacun

Donc

si

l'on

note

Cmax

le

nombre

de

conflits

effectu?es

par

un

processeur

non

privil?egi?e

on

a

D

-LRB-

p

-RRB-

Cmax

-LRB-

Cmax

b

N

ppcm

-LRB-

p

t

-RRB-

c

-RRB-

D'

o?u

l'on

d?eduit

Cmax

p

p

b

N

ppcm

-LRB-

p

t

-RRB-

c

soit

Cmax

p

pgcd

-LRB-

p

t

-RRB-

b

N

ppcm

-LRB-

p

t

-RRB-

c

On

dispose

d?esormais

de

formules

quantifiant

les

performances

du

nid

de

boucle

etudi?e

sur

une

MVP

Apr?es

avoir

valid?e

ces

formules

en

les

comparant

aux

r?esultats

obtenus

exp?erimentalement

sur

la

MVP

KOAN

nous

serons

en

mesure

de

les

utiliser

pour

etudier

le

comportement

de

la

MVP

sur

un

large

spectre

de

param?etres

Etude

exp?erimentale

Le

but

de

ce

paragraphe

est

de

montrer

dans

quelle

mesure

les

calculs

pr?ec?edents

sont

aptes

a

pr?edire

les

performances

d'une

MVP

Toutes

les

exp?eriences

relat?ees

dans

ce

paragraphe

ont

et?e

effectu?ees

sur

un

muni

du

syst?eme

KOAN

Afin

de

valider

notre

mod?ele

nous

avons

utilis?e

un

nid

de

boucles

similaire

au

nid

en

simulant

le

temps

de

calcul

de

l'affectation

par

l'appel

a

une

fonction

de

d?elai

wait

-LRB-

d

-RRB-

Pour

permettre

de

distinguer

les

effets

du

d?emarrage

a

froid

de

ceux

des

pages

conflictuelles

la

boucle

while

-LRB-

-RRB-

du

nid

est

r?eduite

aux

deux

it?erations

d'une

boucle

Do

k

comme

il

est

montr?e

sur

le

nid

de

boucles

Nid

Do

k

DoAll

i

Do

j

wait

-LRB-

d

-RRB-

A

-LSB-

i

j

-RSB-

-LRB-

acc?es

locaux

-RRB-

EndDo

EndDoAll

EndDo

En

faisant

varier

la

valeur

du

param?etre

d

nous

montrons

a

quelles

conditions

le

comportement

de

la

MVP

s

approche

des

r?esultats

pr?edits

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Description

des

exp?eriences

Nous

utilisons

dans

cette

partie

les

outils

d'analyse

de

traces

fournis

par

le

syst?eme

KOAN

Lors

d'un

d?efaut

de

page

il

nous

est

ainsi

possible

de

m?emoriser

le

num?ero

de

la

page

en

d?efaut

et

les

processeurs

qui

effectuent

les

requ

etes

Nous

pouvons

ainsi

calculer

le

cardinal

des

diff?erentes

classes

de

pages

en

conservant

s?epar?ement

les

traces

des

communications

issues

des

deux

it?erations

de

la

boucle

externe

-LCB-

Durant

la

premi?ere

ex?ecution

on

est

ainsi

en

mesure

d'identifier

les

pages

froides

ou

conflictuelles

-LCB-

Lors

de

la

seconde

it?eration

-LRB-

o?a

chaudAE

-RRB-

seules

les

pages

conflictuelles

provoquent

des

d?efauts

Cela

nous

permet

de

distinguer

les

pages

de

ces

deux

classes

les

pages

stables

seront

simplement

les

pages

restantes

Le

tableau

A

a

et?e

d?eclar?e

comme

r?eel

donc

la

taille

des

el?ements

est

de

quatre

octets

et

une

page

contient

el?ements

Nous

utilisons

une

distribution

cyclique

de

la

boucle

parall?ele

sur

et

processeurs

en

prenant

ou

colonnes

de

taille

variant

entre

une

et

deux

pages

Les

diff?erentes

valeurs

de

M

choisies

permettent

d'obtenir

des

tailles

de

pav?es

variant

entre

et

colonnes

Nous

avons

egalement

test?e

une

distribution

par

blocs

de

la

boucle

parall?ele

sur

et

processeurs

avec

des

colonnes

plus

petites

que

les

pages

et

el?ements

le

nombre

de

colonnes

etant

fix?e

a

la

taille

de

la

page

Pour

chacune

de

ces

exp?eriences

les

valeurs

th?eoriques

du

cardinal

de

chaque

classe

etaient

egales

aux

valeurs

mesur?ees

Analyse

des

r?esultats

La

figure

montre

pour

N

et

processeurs

la

variation

du

nombre

de

pages

conflictuelles

ou

froides

et

le

nombre

minimum

de

migrations

de

pages

donn?e

par

le

th?eor?eme

Le

nombre

de

pages

froides

cro

t

r?eguli?erement

avec

la

taille

des

colonnes

mais

le

nombre

de

pages

conflictuelles

varie

de

fa?con

beaucoup

plus

irr?eguli?ere

Ceci

est

d

u

au

fait

que

ce

nombre

ne

d?epend

pas

tant

de

l'ordre

de

grandeur

de

la

taille

des

pages

que

de

la

valeur

de

pgcd

-LRB-

M

T

-RRB-

qui

varie

tr?es

irr?eguli?erement

Ainsi

entre

M

et

M

le

nombre

de

pages

froides

ne

varie

pas

de

fa?con

significative

alors

que

dans

le

m

eme

temps

le

nombre

de

conflits

passe

de

a

-LRB-

les

valeurs

de

pgcd

-LRB-

M

T

-RRB-

etant

respectivement

et

-RRB-

Ceci

est

encore

plus

visible

sur

la

figure

obtenue

en

calculant

gr

ace

au

th?eor?eme

le

nombre

de

pages

conflictuelles

pour

colonnes

de

taille

variant

entre

une

et

deux

pages

On

observe

qu'il

n

y

a

aucun

conflit

pour

M

T

et

M

et

qu'il

existe

des

valeurs

de

M

limitant

le

nombre

de

conflits

a

ou

Cependant

l'irr

egularit?e

de

cette

courbe

montre

bien

que

si

une

valeur

de

M

Etude

exp?erimentale

1100 1250 1280 1408

1536 1568 1600 1800

Taille

des

colonnes

Nombre

de

pages

conflictuelles

et

froides

Nombre

minimum

de

migrations

de

pages

Pages

froides

Nombre

minimum

de

migrations

de

pages

Pages

conflictuelles

Fig.

Influence

de

la

taille

des

colonnes

sur

le

nombre

de

pages

dans

chaque

classe

Cas

de

colonnes

r?eparties

sur

processeurs

donne

de

bonnes

performances

cette

propri?et?e

ne

peut

s

etendre

au

voisinage

de

cette

valeur

et

qu'il

serait

donc

vain

de

chercher

a

d?eterminer

une

valeur

optimale

par

des

m?ethodes

approch?ees

C'est

la

raison

pour

laquelle

les

performances

de

la

m?emoire

sont

difficiles

a

pr?edire

sans

une

etude

arithm?etique

pr?ecise

des

donn?ees

et

une

mise

au

point

fine

Ceci

corrobore

egalement

les

etudes

ant?erieures

concluant

qu'il

n'existe

pas

de

valeur

de

T

qui

soit

optimale

pour

toutes

les

tailles

de

probl?emes

La

figure

compare

le

nombre

exp?erimental

de

d?efauts

de

page

avec

notre

estimation

th?eorique

Dans

le

premier

cas

le

d?elai

de

calcul

est

fix?e

a

z?ero

Les

conflits

ont

alors

un

comportement

proche

du

meilleur

des

cas

et

le

nombre

de

d?efauts

de

page

avoisine

le

minimum

donn?e

par

le

th?eor?eme

Dans

le

second

cas

le

d?elai

est

fix?e

a

cent

microsecondes

Plusieurs

conflits

sont

alors

victimes

d'effets

ping-pong

et

l'

ecart

entre

la

pr?ediction

et

les

valeurs

exp?erimentales

devient

tr?es

important

Cette

diff?erence

n'est

pas

r?eguli?ere

et

d?epend

du

nombre

de

conflits

et

de

leur

r?epartition

sur

les

processeurs

donc

l?a

encore

des

propri?et?es

arithm?etiques

de

M

Cet

effet

ping-pong

peut

etre

visualis?e

plus

en

d?etail

sur

la

figure

Cette

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

1000 1200 1400 1600

1800 2000 2200

Taille

des

colonnes

Nconf

Nombre

de

conflits

Fig.

Influence

de

la

taille

des

colonnes

sur

le

nombre

de

conflits

Cas

de

colonnes

r?eparties

sur

processeurs

figure

a

et?e

obtenue

gr

ace

aux

traces

de

l'exp

erience

N

M

sur

processeurs

et

montre

pour

chaque

page

conflictuelle

le

nombre

de

d?efauts

qu'elle

a

subis

Cette

courbe

montre

que

pages

parmi

les

pages

conflictuelles

ont

et?e

victimes

de

ping-pong

qui

ont

engendr?e

entre

et

d?efauts

de

pages

pour

un

maximum

th?eorique

de

Lorsque

le

d?elai

de

calcul

augmente

le

nombre

de

d?efauts

tend

vers

ce

maximum

pour

chacun

des

conflits

mais

la

plupart

des

conflits

evitent

encore

l'effet

ping-pong

si

bien

que

le

nombre

global

de

migrations

reste

loin

du

majorant

donn?e

par

le

th?eor?eme

Conclusions

Les

premi?eres

evaluations

de

performances

du

syst?eme

KOAN

-LSB-

-RSB-

ont

montr?e

l'irr

egularit?e

du

comportement

d'une

MVP

Une

faible

variation

des

param?etres

dans

les

donn?ees

-LRB-

taille

des

tableaux

-RRB-

leur

rangement

en

m?emoire

-LRB-

alignement

sur

les

pages

-RRB-

ou

la

parall?elisation

-LRB-

ordonnancement

-RRB-

etc.

provoquant

souvent

des

ecarts

de

performance

consid?erables

Nous

avons

dans

ce

chapitre

caract?eris?e

le

comportement

d'un

nid

de

boucle

sur

la

MVP

en

distinguant

les

effets

ind?esirables

qui

peuvent

survenir

-LRB-

simple

1000 1200 1400 1600

1800 2000 2200

Taille

des

colonnes

Nombre

de

d?fauts

de

page

Cas

d'un

faible

d?lai

de

calcul

1000 1200 1400 1600

1800 2000 2200

Taille

des

colonnes

Nombre

de

d?fauts

de

page

Cas

d'un

d?lai

de

calcul

important

Fig.

Comparaison

entre

le

nombre

exp?erimental

de

migrations

de

page

-LRB-

en

pointill?e

-RRB-

et

le

minimum

th?eorique

-LRB-

en

trait

plein

-RRB-

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

60 80 100 120

140 160 180 200

Pages

Nombre

de

d?fauts

de

page

Effet

ping-pong

Fig.

Cons?equences

de

l'effet

ping-pong

d?efauts

de

pages

provoqu?es

par

conflits

migration

de

page

conflit

d'acc

es

d?eg?en?erescence

en

ping-pong

-RRB-

et

en

analysant

les

causes

possibles

de

ses

effets

Ce

mod?ele

s

appuie

sur

une

classification

des

pages

suivant

leurs

propri?et?es

de

partage

-LRB-

le

nombre

de

processeurs

qui

les

acc?edent

-RRB-

et

de

distribution

initiale

dans

la

m?emoire

globale

Cette

classification

nous

permet

de

localiser

les

conflits

eventuels

et

de

d?eduire

des

bornes

inf?erieures

et

sup?erieures

du

nombre

de

migrations

de

pages

Ces

deux

premiers

r?esultats

ont

des

cons?equences

importantes

sur

la

recherche

de

techniques

r?eduisant

le

faux-partage

D'une

part

le

fait

de

poss?eder

un

minimum

th?eorique

permet

de

quantifier

une

transformation

en

evaluant

a

quel

point

elle

permet

de

se

rapprocher

de

ce

minimum

D'autre

part

la

localisation

des

conflits

permet

de

savoir

o?u

un

effort

doit

etre

fourni

Dans

les

cas

o?u

on

ne

sait

pas

eliminer

le

faux-partage

cela

permet

alors

d'appliquer

localement

des

m?ethodes

pour

en

r?eduire

les

effets

-LRB-

en

modifiant

le

protocole

de

coh?erence

par

exemple

-RRB-

alors

que

ces

m?ethodes

s

av?ereraient

trop

co

uteuses

si

elles

etaient

appliqu?ees

globalement

a

tout

le

nid

de

boucle

Une

etude

empirique

nous

a

permis

de

d?eterminer

les

facteurs

influant

sur

l'ampleur

d'un

conflit

en

ecriture

Le

co

ut

maximal

du

conflit

et

la

dur?ee

entre

deux

acc?es

en

ecriture

-LRB-

en

g?en?eral

fix?ee

par

le

temps

d'

evaluation

de

la

partie

droite

de

l'instruction

-RRB-

Ces

constatations

nous

serviront

de

point

de

d?epart

pour

la

recherche

de

techniques

r?eduisant

les

effets

du

faux-partage

La

r?eduction

-LRB-

ou

l'annulation

-RRB-

du

nombre

de

conflits

passant

par

la

recherche

d'un

ordonnancement

prenant

en

compte

les

bornes

de

pages

et

la

r?eduction

du

temps

de

calcul

pouvant

etre

obtenue

par

l'utilisation

d'objets

temporaires

locaux

Nous

avons

montr?e

dans

un

cas

particulier

comment

mener

tous

les

calculs

n?ecessaires

a

l'obtention

de

formules

correspondant

au

mod?ele

pr?ec?edent

Ceci

nous

a

permis

de

valider

ce

mod?ele

en

comparant

ces

formules

a

des

r?esultats

exp?erimentaux

et

de

les

utiliser

pour

voir

de

fa?con

plus

fine

l'influence

des

param?etres

M

eme

si

ces

formules

ne

proviennent

que

d'un

cas

particulier

les

causes

mises

en

jeu

sont

suffisamment

g?en?erales

pour

que

l'on

puisse

penser

que

les

conclusions

suivantes

restent

valables

dans

un

contexte

plus

large

On

a

remarqu?e

d'une

part

qu'une

modification

de

la

taille

des

donn?ees

risque

de

n'avoir

qu'un

effet

marginal

si

on

ne

s

applique

pas

a

la

faire

correspondre

a

la

taille

des

pages

ou

si

on

ne

traite

pas

conjointement

l'effet

ping-pong

en

augmentant

la

fr?equence

des

acc?es

en

ecriture

D'autre

part

on

a

not?e

que

les

performances

etaient

tr?es

sensibles

et

qu'un

bon

r?esultat

pour

une

valeur

donn?ee

d'un

param?etre

ne

se

g?en?eralise

pas

au

voisinage

de

ce

point

Il

sera

donc

n?ecessaire

d'effectuer

une

etude

arithm?etique

pr?ecise

pour

adapter

la

r?epartition

des

donn?ees

et

le

partitionnement

des

it?erations

a

la

taille

des

pages

ce

qui

fera

l'objet

du

chapitre

Chapitre

Etude

du

ph?enom?ene

de

faux-partage

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Un

nombre

important

de

travaux

de

recherche

ont

port?e

sur

les

transformations

de

programmes

en

vue

d'am

eliorer

leurs

performances

sur

une

machine

cible

donn?ee

La

plupart

de

ces

etudes

se

sont

concentr?ees

sur

l'analyse

des

nids

de

boucles

et

m

eme

souvent

les

nids

de

boucles

parfaitement

imbriqu?es

parce

qu'ils

repr?esentent

la

source

principale

de

parall?elisme

dans

les

codes

scientifiques

et

parce

qu'ils

se

pr

etent

bien

au

formalisme

alg?ebrique

L'application

d'une

transformation

de

programme

peut

etre

scind?ee

en

trois

etapes

principales

-LRB-

-RRB-

La

premi?ere

etape

consiste

a

collecter

les

informations

concernant

les

d?ependances

et

les

propri?et?es

de

parall?elisme

et

de

localit?e

de

la

boucle

etudi?ee

-LRB-

-RRB-

Le

coeur

du

probl?eme

consiste

alors

a

d?eterminer

une

transformation

l?egale

-LRB-

respectant

les

d?ependances

de

la

boucle

-RRB-

qui

permette

de

parvenir

a

un

but

fix?e

Ce

but

diff?ere

suivant

la

machine

cible

et

peut

etre

une

r?eduction

des

acc?es

distants

dans

le

cas

de

m?emoires

hi?erarchiques

une

r?eduction

des

communications

entre

processeurs

dans

le

cas

de

m?emoires

distribu?ees

l'augmentation

du

parall?elisme

l'

equilibrage

des

charges

etc.

Des

contraintes

suppl?ementaires

sur

la

transformation

sont

souvent

ajout?ees

davantage

pour

des

raisons

alg?ebriques

que

purement

informatiques

Elles

sont

dues

au

choix

des

repr?esentations

math?ematiques

a

l'

etape

-LRB-

-RRB-

et

aux

hypoth?eses

impos?ees

pour

pouvoir

r?ealiser

l'

etape

-LRB-

-RRB-

-LRB-

-RRB-

La

troisi?eme

etape

consiste

a

ecrire

la

boucle

transform?ee

plus

pr?ecis?ement

il

faut

d?eterminer

le

corps

de

la

nouvelle

boucle

et

les

bornes

et

le

pas

de

chaque

boucle

Nous

ne

nous

int?eressons

dans

ce

chapitre

qu'aux

techniques

math?ematiques

utilis?ees

aux

etapes

-LRB-

-RRB-

et

-LRB-

-RRB-

l'

etude

des

particularit?es

de

la

MVP

lors

de

l'

etape

-LRB-

-RRB-

faisant

l'objet

du

chapitre

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Les

premiers

travaux

concernant

la

recherche

de

transformations

de

programmes

ont

port?e

sur

l'

etude

individuelle

de

transformations

el?ementaires

permutations

de

boucles

-LSB-

-RSB-

inversions

de

l'ordre

d'ex

ecution

d'une

boucle

combinaisons

lin?eaires

de

boucles

dilatation

de

boucles

etc.

-LSB-

-RSB-

La

m?ethode

consistait

alors

a

chercher

empiriquement

une

suite

de

transformations

el?ementaires

l?egales

pour

parvenir

au

but

fix?e

La

difficult?e

r?eside

alors

dans

le

fait

que

l'int

er

et

d'une

transformation

n'est

pas

toujours

imm?ediat

-LRB-

elle

peut

ne

rien

am?eliorer

en

elle-m

eme

mais

rendre

l?egale

une

transformation

ult?erieure

par

exemple

-RRB-

D'autres

travaux

ont

alors

montr?e

que

ces

transformations

-LRB-

except?e

la

dilatation

-RRB-

pouvaient

etre

trait?ees

plus

globalement

en

tant

qu'applications

lin?eaires

unimodulaires

-LSB-

-RSB-

offrant

ainsi

un

cadre

d'

etude

plus

g?en?eral

et

permettant

l'application

d'outils

alg?ebriques

puissants

Soulignons

par

exemple

que

cela

facilite

grandement

l'obtention

des

boucles

transform?ees

a

l'

etape

par

l'utilisation

d'op

erations

math?ematiques

de

base

pour

trouver

les

nouveaux

vecteurs

d'it

eration

-LRB-

par

inversions

de

matrices

produits

matrice-vecteur

-RRB-

ou

plus

elabor?es

-LRB-

elimination

de

Fourier-Motzkin

programmation

lin?eaire

en

nombres

entiers

-RRB-

pour

trouver

les

nouvelles

bornes

de

boucles

Les

travaux

les

plus

r?ecents

ont

n?eanmoins

d?emontr?e

que

l'hypoth

ese

d'unimodularit

e

pouvait

se

montrer

trop

restrictive

et

proposent

une

extension

des

r?esultats

pr?ec?edents

aux

applications

enti?eres

non

singuli?eres

-LSB-

-RSB-

La

difficult?e

r?esultante

est

le

calcul

du

pas

de

la

boucle

transform?ee

-LRB-

intuitivement

on

peut

consid?erer

que

les

transformations

non

unimodulaires

ajoutent

des

el?ements

dans

l'espace

d'it

eration

qu'il

faut

oenjamberAE

lors

de

l'ex

ecution

-RRB-

Ce

dernier

point

fut

r?esolu

par

l'utilisation

des

formes

normales

d'Hermite

-LSB-

-RSB-

permettant

le

calcul

des

diff?erents

pas

-LSB-

-RSB-

La

section

montre

que

l'on

peut

encore

g?en?eraliser

ce

cadre

d'

etude

a

toutes

les

applications

rationnelles

non

singuli?eres

a

inverse

enti?ere

en

utilisant

la

th?eorie

des

treillis

L'int

er

et

d'une

g?en?eralisation

suppl?ementaire

est

que

la

r?eduction

des

hypoth?eses

math?ematiques

permet

plus

de

souplesses

dans

l'application

donc

de

prendre

en

compte

davantage

de

contraintes

li?ees

a

la

machine

cible

De

plus

le

fait

de

garder

une

matrice

de

transformation

sous

sa

forme

initiale

sans

avoir

a

la

modifier

pour

la

rendre

artificiellement

unimodulaire

rend

plus

facile

la

olectureAE

des

propri?et?es

de

la

transformation

sur

sa

forme

matricielle

La

section

traite

le

probl?eme

de

l'

ecriture

de

la

boucle

transform?ee

et

particuli?erement

de

la

recherche

des

bornes

de

boucles

-LRB-

etape

-RRB-

Nous

pr?esentons

un

rappel

des

m?ethodes

existantes

et

nous

proposons

un

raffinement

de

la

m?ethode

d'

elimination

de

Fourier-Motzkin

telle

qu'elle

est

pr?esent?ee

par

Ancourt

et

al.

-LSB-

-RSB-

Cette

modification

a

pour

but

de

r?eduire

les

probl?emes

de

gestion

des

boucles

dans

les

cas

o?u

l'image

du

domaine

d'it

eration

n'est

pas

convexe

ainsi

que

d'

eliminer

l'occurrence

d'it

erations

vides

dans

la

boucle

transform?ee

Ces

outils

th?eoriques

sont

appliqu?es

au

cas

de

la

MVP

au

chapitre

suivant

Nous

commen?cons

dans

la

section

par

rappeler

certaines

d?efinitions

im

Rappels

sur

les

poly?edres

et

les

treillis

portantes

concernant

les

poly?edres

et

les

treillis

entiers

Rappels

sur

les

poly?edres

et

les

treillis

Dans

tout

ce

paragraphe

n

est

un

entier

strictement

positif

Le

lecteur

trouvera

des

compl?ements

d'informations

dans

-LSB-

-RSB-

pour

ce

qui

concerne

les

d?efinitions

des

objets

que

nous

utilisons

-LRB-

poly?edres

modules

enveloppes

convexes

etc.

-RRB-

et

dans

-LSB-

-RSB-

pour

les

propri?et?es

et

les

diff?erentes

repr?esentations

de

ces

objets

D?efinition

Un

ensemble

P

de

points

de

Qn

est

un

poly?edre

convexe

ssi

P

fx

Qn

t.q.

Ax

Bg

o?u

A

appartient

a

Mp

n

-LRB-

Q

-RRB-

et

B

est

un

vecteur

de

Qp

D?efinition

Pour

toute

partie

J

de

Qn

on

note

J

l'enveloppe

convexe

de

J

autrement

dit

le

plus

petit

convexe

contenant

J

On

rappelle

que

dans

le

cas

o?u

J

est

constitu?e

d'un

nombre

fini

de

points

l'enveloppe

convexe

de

J

est

alors

le

plus

petit

poly?edre

convexe

contenant

J

D?efinition

On

appelle

Z-module

tout

sous-module

-LRB-

de

type

fini

-RRB-

de

Zn

Un

Z-module

peut

etre

vu

comme

l'ensemble

des

combinaisons

lin?eaires

enti?eres

d'une

famille

libre

finie

de

vecteurs

de

Zn

Par

abus

de

langage

on

parle

de

base

pour

une

telle

famille

D?efinition

On

appelle

treillis

entier

-LRB-

ou

treillis

-RRB-

associ?e

au

point

Zn

et

au

Z-module

M

toute

partie

de

Zn

de

la

forme

T

fx

Zn

x

y

y

M

g

-LRB-

Un

treillis

est

donc

dans

le

cas

des

modules

l'

equivalent

d'un

sous

espace

affine

dans

le

cas

vectoriel

-RRB-

D?efinition

Soit

M

un

Z-module

et

J

une

partie

de

M

J

est

dite

M-convexe

-LRB-

convexe

pour

la

convexit?e

induite

sur

M

-RRB-

ssi

J

M

J

D?efinition

On

appelle

poly?edre

entier

l'intersection

d'un

poly?edre

convexe

avec

un

treillis

entier

En

particulier

tous

les

domaines

d'it

erations

de

boucles

que

nous

etudierons

seront

des

poly?edres

entiers

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Application

d'une

transformation

lin?eaire

non

enti?ere

L'extension

des

transformations

de

programmes

au

cas

des

applications

non

unimodulaires

n'est

pas

motiv?ee

par

la

seule

curiosit?e

th?eorique

mais

d?ecoule

d'un

int?er

et

pratique

important

Lorsqu'on

cherche

a

transformer

une

boucle

c'est

pour

que

le

code

transform?e

poss?ede

certaines

propri?et?es

Or

les

propri?et?es

du

code

transform?e

se

traduisent

par

des

propri?et?es

de

l'inverse

de

la

transformation

On

rappelle

en

effet

que

si

l'on

applique

une

transformation

T

-LRB-

suppos?ee

l?egale

-RRB-

au

nid

de

boucles

Nid

Do

-LRB-

In

-RRB-

D

Do

In

R

A

-LSB-

H

-LRB-

In

-RRB-

-RSB-

EndDo

EndDo

les

it?erateurs

de

la

boucle

transform?ee

sont

donn?es

par

i

T

I

o?u

I

-LRB-

In

-RRB-

t

et

i

-LRB-

in

-RRB-

t

notent

respectivement

les

it?erateurs

du

nid

original

et

transform?e

Le

domaine

d'it

eration

initialement

d?efini

par

I

D

s

exprime

en

fonction

du

nouveau

vecteur

d'it

eration

par

T

D

Le

nid

de

boucle

final

est

donc

de

la

forme

Nid

Do

T

D

Do

In

R

A

-LSB-

H

-LRB-

T

-RRB-

-RSB-

EndDo

EndDo

L'am

elioration

des

propri?et?es

du

nid

de

boucles

passe

donc

par

la

recherche

d'une

matrice

T

-LRB-

inversible

-RRB-

telle

que

l'ensemble

d?ecrit

par

T

D

et

la

nouvelle

fonction

de

r?ef?erence

H

-LRB-

T

-RRB-

poss?edent

les

propri?et?es

souhait?ees

Si

on

se

restreint

a

l'utilisaton

de

transformations

T

enti?eres

il

faut

alors

de

plus

imposer

a

T

d'

etre

unimodulaire

-LRB-

c'est

a

dire

enti?ere

et

d'inverse

enti?ere

-RRB-

ce

qui

rend

la

recherche

d'une

matrice

satisfaisante

d'autant

plus

complexe

et

parfois

insoluble

Nous

nous

proposons

de

montrer

qu'il

est

possible

de

se

lib?erer

de

la

contrainte

d'unimodularit

e

sur

T

en

elargissant

le

champ

d'application

des

transformations

au

cas

des

matrices

rationnelles

inversible

d'inverse

enti?ere

-LRB-

T

existe

et

est

enti?ere

mais

n

etant

pas

a

priori

unimodulaire

T

n'est

pas

a

coefficients

entiers

mais

rationnels

-RRB-

Application

d'une

transformation

lin?eaire

non

enti?ere

Le

but

de

cette

section

est

de

montrer

comment

on

peut

appliquer

une

telle

transformation

a

un

nid

de

boucles

parfaitement

imbriqu?e

Le

paragraphe

donne

une

justification

de

l'emploi

d'une

telle

transformation

et

une

expression

du

nid

transform?e

et

des

nouveaux

it?erateurs

de

boucles

Le

paragraphe

pr?esente

sommairement

la

m?ethode

de

calcul

des

bornes

du

nouveau

domaine

d'it

eration

Enfin

le

paragraphe

donne

dans

le

cas

o?u

le

nid

original

poss?ede

un

vecteur

distance

de

d?ependance

une

expression

du

vecteur

de

d?ependance

correspondant

dans

le

nid

transform?e

On

ne

cherchera

pas

ici

a

savoir

si

la

transformation

est

l?egale

ou

non

ni

a

en

exposer

les

propri?et?es

dans

un

cadre

g?en?eral

ceci

etant

partiellement

trait?e

au

chapitre

dans

le

cadre

d'une

MVP

Pr?esentation

du

probl?eme

On

cherche

a

appliquer

au

nid

de

boucles

une

transformation

d?efinie

par

sa

matrice

T

telle

que

T

Mn

-LRB-

Q

-RRB-

avec

Det

-LRB-

T

-RRB-

et

T

Mn

-LRB-

Z

-RRB-

Les

difficult?es

li?ees

a

l'application

d'une

transformation

non

enti?ere

ont

d?ej?a

et?e

evoqu?ees

dans

le

contexte

de

l'ordonnancement

des

instructions

Dans

sa

th?ese

-LSB-

-RSB-

Tanguy

Risset

pose

le

probl?eme

de

la

s?emantique

d'une

transformation

non

enti?ere

en

ces

termes

o

il

faut

pr?eciser

la

s?emantique

d'une

transformation

non

enti?ere

Une

date

d'ex

ecution

de

signifie-t-elle

que

l'instruction

correspondante

peut

s

effectuer

au

top

-LSB-

-RSB-

ou

qu'elle

doit

s

effectuer

apr?es

ce

top

mais

que

ce

top

n'est

qu'un

sous-top

d'une

horloge

globale

plus

lente

-LSB-

-RSB-

AE

Dans

le

cadre

des

transformations

de

boucles

le

probl?eme

peut

etre

exprim?e

de

mani?ere

similaire

Les

boucles

ne

pouvant

etre

parcourues

avec

des

pas

rationnels

comment

doit-on

consid?erer

une

r?ef?erence

R

a

une

it?eration

de

S'agit

il

d'une

nouvelle

r?ef?erence

ex?ecut?ee

a

l'it

eration

ou

d'une

r?ef?erence

ex?ecut?ee

a

une

it?eration

distincte

de

et

de

et

appartenant

a

un

domaine

d'it

eration

plus

fin

Nous

proposons

ici

une

r?eponse

alternative

a

cette

question

La

transformation

associ?ee

a

-LRB-

-RRB-

transforme

l'intervalle

j

-LSB-

-RSB-

j

en

Ng

Cet

intervalle

peut

alors

etre

scind?e

en

-LSB-

o?u

Ng

et

k

k

j

-LSB-

N

-RSB-

jg

not?e

N

Nous

proposons

alors

de

scinder

la

boucle

de

parcours

de

Nid

Do

I

N

R

A

-LSB-

H

-LRB-

I

-RRB-

-RSB-

EndDo

en

deux

boucles

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Nid

Do

I

N

R

A

-LSB-

H

-LRB-

-RRB-

-RSB-

EndDo

Do

I

R

A

-LSB-

H

-LRB-

-LRB-

I

-RRB-

-RRB-

-RSB-

EndDo

Donc

on

consid?ere

dans

l'intervalle

les

points

N

comme

les

it?erations

N

de

la

premi?ere

boucle

et

les

points

-LRB-

N

-RRB-

comme

les

it?erations

N

de

la

seconde

boucle

chacune

de

ces

deux

boucles

refl?etant

les

propri?et?es

de

la

transformation

appliqu?ee

Il

est

a

noter

que

les

el?ements

du

tableau

A

ne

sont

plus

parcourus

dans

le

m

eme

ordre

-LRB-

ce

qui

etait

implicitement

le

but

de

la

transformation

-RRB-

et

qu'on

se

heurte

donc

au

probl?eme

de

la

l?egalit?e

d'une

telle

transformation

Plus

g?en?eralement

l'id

ee

de

notre

m?ethode

est

la

suivante

Une

matrice

non

unimodulaire

ne

d?efinit

pas

de

bijection

de

Zn

sur

lui-m

eme

-LRB-

ce

qui

a

priori

interdit

de

l'employer

comme

transformation

de

boucle

-RRB-

mais

de

Zn

sur

un

de

ses

sous-modules

Nous

proposons

de

rechercher

un

partitionnement

de

Zn

en

treillis

associ?es

a

un

unique

Z-module

et

d'associer

un

nid

de

boucle

a

chaque

treillis

Dans

le

cas

de

la

boucle

de

la

figure

-LRB-

a.

-RRB-

-LRB-

page

-RRB-

si

l'on

consid?ere

une

transformation

non

unimodulaire

d?efinissant

une

bijection

de

sur

M

Z

-LRB-

l'ensemble

des

couples

d'entiers

d'abscisse

paire

-RRB-

on

partitionne

en

deux

treillis

-LRB-

-RRB-

Z

-LRB-

points

d'abscisses

paires

-RRB-

et

-LRB-

-RRB-

Z

-LRB-

points

d'abscisses

impaires

-RRB-

-LRB-

cf

figure

-LRB-

-RRB-

-RRB-

et

a

chaque

treillis

on

associe

un

nid

de

boucle

Les

points

acc?ed?es

par

chacun

des

nids

sont

montr?es

sur

la

figure

-LRB-

-RRB-

On

peut

y

remarquer

le

principal

int?er

et

de

cette

m?ethode

les

projections

du

domaine

d'it

eration

initial

sur

les

axes

d'it

eration

ne

sont

pas

convexes

-LRB-

axe

I

-RRB-

et

l'ensemble

des

points

acc?ed?es

par

la

boucle

initiale

n'est

pas

non

plus

convexe

-LRB-

voir

figures

-LRB-

et

-RRB-

les

points

d'abscisse

et

ne

sont

pas

atteints

-RRB-

Par

contre

les

deux

treillis

ont

des

projections

convexes

sur

chaque

axe

d'it

eration

et

leurs

images

sont

convexes

au

sens

du

module

M

En

cons?equence

les

deux

nids

de

boucle

issus

de

notre

transformation

seront

simples

puisqu'il

n

y

aura

pas

de

otrousAE

a

g?erer

dans

les

bornes

de

boucles

Dans

le

cas

g?en?eral

d'un

partitionnement

de

Zn

en

p

treillis

-LRB-

Tp

-RRB-

la

forme

du

nid

de

boucle

transform?e

sera

Application

d'une

transformation

lin?eaire

non

enti?ere

Nid

Do

Do

In

-LRB-

treillis

-RRB-

A

-LSB-

H

-LRB-

-LRB-

:-RRB-

-RRB-

-RSB-

EndDo

EndDo

Do

Do

In

-LRB-

treillis

-RRB-

A

-LSB-

H

-LRB-

-LRB-

:-RRB-

-RRB-

-RSB-

EndDo

EndDo

Do

Do

In

-LRB-

treillis

Tp

-RRB-

A

-LSB-

H

-LRB-

fp

-LRB-

:-RRB-

-RRB-

-RSB-

EndDo

EndDo

o?u

les

fonctions

fi

effectuent

les

correspondances

entre

Zn

et

les

diff?erents

treillis

Nous

verrons

au

chapitre

qu'en

choisissant

convenablement

la

transformation

a

appliquer

l'ensemble

des

nids

de

boucles

pr?ec?edents

peut

eventuellement

etre

fusionn?e

D?etermination

des

it?erations

de

la

boucle

transfor

m?ee

Nous

utiliserons

dans

ce

paragraphe

les

deux

th?eor?emes

suivants

-LSB-

-RSB-

Th?eor?eme

Soit

A

une

matrice

de

Mn

-LRB-

Z

-RRB-

de

rang

r.

Alors

A

est

equivalente

a

une

matrice

diagonale

S

-LRB-

A

-RRB-

-LRB-

sr

-RRB-

o?u

les

si

sont

non

nuls

-LRB-

Cette

forme

est

dite

forme

de

Smith

-RRB-

Ce

r?esultat

s

etend

au

cas

des

matrices

rectangulaires

Dans

notre

cas

les

matrices

T

et

T

etant

inversibles

sont

de

rang

n

donc

leur

forme

de

Smith

ne

contient

pas

de

terme

nul

Th?eor?eme

Soit

M

un

sous-module

de

Zn

-LRB-

yr

-RRB-

une

base

de

M

et

-LRB-

xn

-RRB-

une

base

de

Zn

-LRB-

r

n

-RRB-

Soit

A

la

matrice

r

n

telle

que

y

Ax

et

S

-LRB-

sr

-RRB-

sa

forme

de

Smith

Il

existe

deux

matrices

unimodulaires

U

et

V

telles

que

A

USV

Alors

V

x

-LRB-

vn

-RRB-

est

une

base

de

Zn

et

-LRB-

srvr

-RRB-

est

une

base

de

M

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Les

d?emonstrations

de

ces

deux

th?eor?emes

peuvent

se

trouver

dans

Newmann

ou

Schrijver

-LSB-

-RSB-

Pratiquement

ce

th?or?eme

signifie

qu

etant

donn?e

une

base

de

Zn

une

matrice

A

et

le

module

M

d?efini

comme

l'image

de

Zn

par

A

la

forme

normale

de

Smith

de

A

permet

de

construire

une

nouvelle

base

de

Zn

et

une

nouvelle

base

de

M

telles

que

dans

ces

bases

l'application

associ?ee

a

A

n'effectue

que

des

dilatations

des

vecteurs

de

base

En

terme

de

transformation

de

programmes

on

en

d?eduit

que

vue

dans

cette

base

la

transformation

se

pr?esente

comme

une

s?erie

de

dilatation

de

boucles

ce

qui

rend

tr?es

simple

le

calcul

des

nouveaux

vecteurs

d'it

eration

Cette

notion

compl?ete

l'utilisation

des

formes

normales

de

Hermite

qui

fournissent

le

pas

pour

chaque

vecteur

d'it

eration

mais

pas

le

vecteur

luim

eme

Appliquons

ces

th?eor?emes

a

la

matrice

T

et

au

treillis

engendr?e

par

ses

colonnes

Notons

S

BBB

Sn

CCCA

la

forme

normale

de

Smith

de

T

T

USV

et

j

-LSB-

n

-RSB-

j

si

jSij

Soit

ffl

la

base

canonique

de

Zn

D'apr

es

le

th?eor?eme

e

-LRB-

en

-RRB-

d?efinie

comme

l'image

par

V

de

la

base

ffl

est

elle-m

eme

une

base

de

Zn

et

l'image

de

Zn

par

la

transformation

T

est

le

sous-module

M

engendr?e

par

-LRB-

sn

en

-RRB-

Dans

ces

bases

T

se

comporte

alors

comme

une

dilatation

Cependant

T

n

etant

pas

une

bijection

de

Zn

sur

lui-m

eme

ne

permet

pas

a

priori

de

d?efinir

une

transformation

de

programme

nous

allons

montrer

qu'elle

induit

en

fait

une

bijection

de

Zn

sur

Zn

j

-LSB-

N

-RSB-

j

pour

un

certain

entier

N

ce

qui

permet

de

d?efinir

une

transformation

du

nid

initial

en

N

r?epliques

de

ce

nid

On

d?efinit

les

N

Qni

si

jDet

-LRB-

T

-RRB-

j

treillis

TJ

par

J

-LRB-

jn

-RRB-

E

j

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

j

-LSB-

sn

-RSB-

j

TJ

nX

i

ji

ei

M

Soit

en

notant

EJ

Pni

ji

ei

TJ

EJ

M

Proposition

Les

treillis

TJ

J

E

forment

une

partition

de

Zn

Application

d'une

transformation

lin?eaire

non

enti?ere

D?emonstration

Commen?cons

par

montrer

que

Zn

TJ

L'inclusion

de

droite

a

gauche

est

evidente

montrons

l'inclusion

de

gauche

a

droite

Soit

X

Zn

et

X

Pni

xi

ei

son

ecriture

dans

la

base

e.

Pour

tout

i

j

-LSB-

n

-RSB-

j

notons

-LRB-

pi

qi

-RRB-

le

reste

et

le

quotient

de

la

division

euclidienne

de

xi

par

si

On

a

j

-LSB-

n

-RSB-

j

pi

j

-LSB-

si

-RSB-

j

et

X

nX

i

pi

ei

nX

i

qisi

ei

Donc

X

nX

i

pi

ei

M

avec

-LRB-

pn

-RRB-

E

d'

o?u

X

-LSB-

TJ

Ce

qui

prouve

que

Zn

ae

-LSB-

Ti

et

montre

finalement

l'

egalit?e

de

ces

deux

ensembles

Montrons

maintenant

que

les

TJ

sont

deux

a

deux

disjoints

Soient

J

-LRB-

jn

-RRB-

et

K

-LRB-

kn

-RRB-

appartenant

a

et

tels

qu'il

existe

un

el?ement

X

TJ

TK

Soit

i

j

-LSB-

n

-RSB-

j

en

projetant

X

sur

V

ect

-LRB-

ei

-RRB-

on

obtient

-LRB-

m

n

-RRB-

tel

que

ji

msi

ki

nsi

d'

o?u

ji

ki

-LSB-

si

-RSB-

Or

ji

et

ki

appartiennent

a

j

-LSB-

si

-RSB-

donc

n?ecessairement

ji

ki

Ceci

etant

vrai

pour

tout

i

j

-LSB-

n

-RSB-

j

cela

prouve

que

TJ

TK

Ce

qui

implique

que

les

treillis

sont

deux

a

deux

disjoints

et

finalement

qu'ils

forment

une

partition

de

Zn

Proposition

Soient

X

Y

deux

el?ements

de

Zn

X

et

Y

appartiennent

au

m

eme

treillis

TJ

ssi

X

Y

M

La

d?emonstration

de

cette

proposition

est

imm?ediate

Th?eor?eme

L'application

T

permet

de

d?efinir

une

bijection

T

Zn

Zn

E

i

-LRB-

I

J

-RRB-

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

ou

de

mani?ere

equivalente

une

bijection

T

Zn

Zn

j

-LSB-

N

-RSB-

j

i

-LRB-

I

j

-RRB-

et

peut

donc

etre

employ?ee

pour

effectuer

une

transformation

de

programme

Les

nouveaux

vecteurs

d'it

erations

I

pour

le

treillis

TJ

v?erifient

alors

I

T

-LRB-

i

EJ

-RRB-

D?emonstration

Soit

i

Zn

d'apr

es

la

proposition

pr?ec?edente

J

E

tel

que

i

TJ

De

plus

l'application

T

etant

non

singuli?ere

elle

est

injective

et

donc

bijective

sur

son

image

M

Donc

I

Zn

tel

que

i

EJ

T

ou

de

mani?ere

equivalente

I

T

-LRB-

i

EJ

-RRB-

Donc

l'application

T

qui

a

i

associe

-LRB-

I

J

-RRB-

est

bijective

Afin

de

simplifier

l'

ecriture

on

confondra

dans

la

suite

un

el?ement

J

de

E

avec

son

indice

j

j

-LSB-

N

-RSB-

j

dans

l'ordre

lexicographique

sur

E

-LRB-

cet

ordre

etant

total

il

d?efinit

une

bijection

de

E

sur

j

-LSB-

N

-RSB-

j

-RRB-

on

obtient

alors

la

bijection

sous

la

deuxi?eme

forme

D'apr

es

le

th?eor?eme

on

peut

donc

r?e?ecrire

la

boucle

sous

la

forme

Nid

Do

Do

In

A

-LSB-

H

-LRB-

T

-LRB-

I

-RRB-

-RRB-

-RSB-

EndDo

EndDo

Do

Do

In

A

-LSB-

H

-LRB-

T

-LRB-

I

-RRB-

-RRB-

-RSB-

EndDo

EndDo

Do

Do

In

A

-LSB-

H

-LRB-

EN

T

-LRB-

I

-RRB-

-RRB-

-RSB-

EndDo

EndDo

L'ordre

dans

lequel

sont

ecrits

les

diff?erents

nids

est

pour

l'instant

purement

arbitraire

Pour

savoir

si

un

ordre

doit

etre

impos?e

si

des

synchronisations

sont

Application

d'une

transformation

lin?eaire

non

enti?ere

n?ecessaires

ou

si

au

contraire

les

diff?erents

nids

peuvent

etre

fusionn?es

nous

devons

maintenant

nous

int?eresser

aux

d?ependances

contenues

dans

le

programme

transform?e

Afin

de

rendre

applicable

une

transformation

non

enti?ere

il

nous

reste

a

montrer

comment

obtenir

les

bornes

de

boucles

du

programme

transform?e

Calcul

des

bornes

de

boucles

Supposons

que

le

domaine

d'it

eration

initial

soit

un

poly?edre

convexe

d?efini

par

une

in?egalit?e

de

la

forme

D

fi

Zn

Ai

Bg

Soit

i

I

Zn

et

k

j

-LSB-

N

-RSB-

j

tel

que

i

Ek

T

On

a

alors

i

D

ssi

AEk

AT

B

ssi

AT

B

AEk

De

cette

forme

on

peut

d?eduire

l'expression

des

bornes

du

ki?eme

nid

de

boucle

par

les

m?ethodes

classiques

Dans

les

exemples

qui

suivront

nous

emploierons

la

m?ethode

d'

elimination

de

Fourier-Motzkin

qui

sera

etudi?ee

dans

la

section

Notons

que

le

calcul

pr?ec?edent

etant

a

effectuer

pour

toute

les

valeurs

de

k

j

-LSB-

N

-RSB-

j

on

a

int?er

et

a

appliquer

une

m?ethode

param?etr?ee

par

Ek

permettant

de

calculer

toutes

les

bornes

en

une

seule

r?esolution

Analyse

des

d?ependances

du

programme

transform?e

Nous

nous

limitons

dans

ce

paragraphe

a

la

recherche

des

d?ependances

du

nid

transform?e

dans

le

cas

o?u

le

nid

initial

pr?esente

un

vecteur

distance

de

d?ependance

C'est

par

exemple

le

cas

si

le

nid

ne

contient

qu'une

seule

r?ef?erence

en

ecriture

au

tableau

A

-LRB-

cas

auquel

nous

nous

limiterons

dans

le

cadre

de

la

r?eduction

du

faux-partage

sur

une

MVP

-RRB-

La

r?ef?erence

R

du

nid

de

boucles

initial

provoque

alors

une

d?ependance

entre

les

instructions

i

et

j

si

celles-ci

r?ef?erencent

le

m

eme

el?ement

Donc

ssi

H

-LRB-

i

-RRB-

H

-LRB-

j

-RRB-

i.e.

ssi

i

j

d

Ker

-LRB-

H

-RRB-

On

fixe

dans

la

suite

D

l'ensemble

des

d?ependances

du

nid

initial

caract?eris?ees

par

des

vecteurs

distance

d

et

on

s

int?eresse

a

l'image

de

ces

d?ependances

dans

le

nouveau

nid

de

boucles

Dans

le

programme

transform?e

il

nous

faut

distinguer

deux

types

de

d?ependances

celles

qui

ont

lieu

a

l'int

erieur

d'un

nid

-LRB-

qui

restreindront

la

parall?elisation

de

celui-ci

-RRB-

et

celles

qui

apparaissent

entre

deux

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

nids

diff?erents

-LRB-

qui

imposeront

un

ordre

d'ex

ecution

et

une

synchronisation

entre

ceux-ci

-RRB-

Th?eor?eme

-LCB-

A

l'int

erieur

d'un

nid

les

vecteurs

de

d?ependances

sont

de

la

forme

T

d

d

D

-LCB-

Entre

les

nids

j

et

k

les

vecteurs

de

d?ependances

sont

de

la

forme

T

-LRB-

d

Ek

Ej

-RRB-

d

D

D?emonstration

Les

it?erations

I

et

J

des

nids

j

et

k

sont

d?ependantes

ssi

Ej

T

Ek

T

d

d

D

i.e.

Ej

Ek

T

-LRB-

I

J

-RRB-

d

d

D

Soit

ssi

I

J

T

-LRB-

d

Ek

Ej

-RRB-

d

D

-LCB-

A

l'int

erieur

d'un

m

eme

nid

I

et

J

sont

donc

d?ependantes

ssi

I

J

et

I

J

T

d

Les

vecteurs

de

d?ependances

sont

donc

de

la

forme

T

d

d

D

-LCB-

Entre

les

nids

j

et

k

j

k

I

et

J

sont

d?ependantes

ssi

I

J

T

-LRB-

d

Ek

Ej

-RRB-

Ce

qui

correspond

aux

vecteurs

de

d?ependance

annonc?es

Soulignons

que

I

et

J

peuvent

dans

ce

cas

etre

egaux

-LRB-

on

a

alors

simplement

une

d?ependance

entre

les

m

emes

it?erations

de

deux

nids

distincts

-RRB-

Corollaire

Si

la

partition

en

treillis

est

telle

qu'il

n

y

a

pas

de

d?ependance

pour

la

boucle

initiale

entre

deux

it?erations

appartenant

a

des

treillis

distincts

alors

le

programme

transform?e

n'aura

pas

de

d?ependances

entre

nids

Ceux-ci

pourront

donc

etre

ecrits

-LRB-

et

ex?ecut?es

-RRB-

dans

un

ordre

quelconque

et

pourront

en

particulier

etre

fusionn?es

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

D?emonstration

Si

on

a

d?ependance

entre

les

it?erations

I

et

J

des

nids

j

et

k

alors

Ej

T

Tj

Ek

T

Tk

et

d

On

a

donc

d?ependance

entre

des

it?erations

et

du

nid

initial

appartenant

a

des

treillis

distincts

Par

contrapos?e

on

obtient

le

r?esultat

souhait?e

Ce

r?esultat

est

tr?es

important

en

pratique

puisqu'il

fournit

une

condition

suffisante

tr?es

simple

permettant

de

s

assurer

que

les

nids

seront

ind?ependants

Nous

nous

sommes

content?es

dans

cette

section

de

montrer

que

l'application

T

permet

de

d?efinir

une

transformation

de

programme

Il

faut

cependant

noter

les

deux

points

importants

suivant

-LCB-

Rien

ne

prouve

que

cette

transformation

soit

l?egale

et

avant

de

l'appliquer

il

faudra

veiller

-LRB-

comme

avec

tous

les

types

de

transformations

-RRB-

qu'elle

respecte

les

d?ependances

de

la

boucle

initiale

-LCB-

La

forme

obtenue

pour

la

boucle

transform?ee

peut

sembler

peu

int?eressante

du

fait

du

co

ut

suppl?ementaire

n?ecessaire

a

la

gestion

des

diff?erents

nids

de

boucles

Ce

sera

le

but

du

chapitre

de

montrer

qu'un

choix

judicieux

de

T

permet

d'assurer

la

l?egalit?e

de

la

transformation

et

les

propri?et?es

n?ecessaires

a

la

fusion

des

diff?erents

nids

de

boucles

Nous

verrons

de

plus

que

l'utilisation

des

treillis

permet

de

r?eduire

consid?erablement

la

complexit?e

du

calcul

des

bornes

de

la

boucle

transform?ee

en

am?eliorant

la

convexit?e

des

projections

enti?eres

du

domaine

d'it

eration

Un

raffinement

de

l'

elimination

de

Fourier

Motzkin

Pr?esentation

du

probl?eme

D?es

que

l'on

s

int?eresse

aux

transformations

de

programmes

on

est

confront?e

a

des

questions

telles

que

Existe-t-il

un

point

entier

dans

un

poly?edre

rationnel

convexe

donn?e

-LRB-

C'est

le

cas

lorsqu'on

cherche

a

analyser

les

d?ependances

d'un

nid

de

boucles

-RRB-

Quelle

est

la

projection

dans

une

direction

donn?ee

de

l'ensemble

des

points

entiers

de

ce

poly?edre

Ou

plus

g?en?eralement

Comment

d?eterminer

et

parcourir

l'ensemble

des

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

-LRB-

-RRB-

Etant

donn?e

une

matrice

A

a

p

lignes

et

n

colonnes

et

un

vecteur

B

de

taille

p

on

cherche

a

d?eterminer

les

solutions

rationnelles

du

syst?eme

Ax

b

Ce

syst?eme

peut

se

r?e?ecrire

sous

la

forme

suivante

-LRB-

S

-RRB-

bi

i

bi

i

bi

i

p

o?u

-LRB-

In

-RRB-

et

o?u

ap

sont

les

lignes

de

la

matrice

A

-LRB-

-RRB-

Les

deux

premi?eres

in?egalit?es

du

syst?eme

-LRB-

S

-RRB-

permettent

d'obtenir

les

bornes

de

j

-LRB-

bj

-RRB-

i

-LRB-

bi

-RRB-

et

un

nouveau

syst?eme

-LRB-

-RRB-

obtenu

a

partir

du

syst?eme

-LRB-

S

-RRB-

en

eliminant

la

variable

-LRB-

-RRB-

-LRB-

-LRB-

ai

aj

-RRB-

bi

bj

i

j

bi

i

p

-LRB-

-RRB-

En

r?ep?etant

ce

processus

on

elimine

successivement

les

-LRB-

n

-RRB-

premi?eres

composantes

de

x

et

on

termine

la

r?esolution

du

syst?eme

restant

ne

comportant

plus

qu'une

seule

inconnue

Fig.

Algorithme

d'

elimination

de

Fourier-Motzkin

sur

Q

points

entiers

contenus

dans

ce

poly?edre

-LRB-

C'est

le

probl?eme

classique

lorsqu'on

doit

ecrire

le

corps

d'une

boucle

apr?es

une

transformation

-RRB-

De

nombreuses

m?ethodes

ont

et?e

propos?ees

pour

traiter

les

syst?emes

d'in

egalit?es

en

nombre

entier

La

plupart

des

travaux

tentent

de

r?esoudre

le

probl?eme

du

parcours

des

points

entiers

contenus

dans

un

poly?edre

convexe

ou

a

calculer

les

domaines

d'it

eration

des

diff?erents

processeurs

dans

le

cadre

de

langages

utilisant

un

partitionnement

des

donn?ees

tels

que

HPF

Fortran-D

Pandore

etc.

La

plupart

des

m?ethodes

-LSB-

-RSB-

s

appuient

sur

l'algorithme

de

FourierMotzkin

-LSB-

-RSB-

Initialement

l'algorithme

de

Fourier-Motzkin

a

pour

but

de

calculer

les

solutions

rationnelles

du

syst?eme

d'in

egalit?es

La

complexit?e

de

cet

algorithme

d?ecrit

sur

la

figure

est

super-exponentielle

dans

le

pire

cas

-LSB-

-RSB-

Un

inconv?enient

suppl?ementaire

de

cette

m?ethode

est

qu'elle

engendre

un

grand

nombre

d'in

egalit?es

redondantes

rendant

les

bornes

de

boucle

excessivement

complexes

donc

la

gestion

du

nid

plus

co

uteuse

Dans

le

cas

qui

nous

pr?eoccupe

d'une

r?esolution

en

nombres

entiers

une

difficult?e

suppl?ementaire

vient

du

fait

que

m

eme

dans

le

cas

o?u

le

poly?edre

rationnel

d?ecrit

par

le

syst?eme

est

convexe

les

projections

sur

les

axes

d'it

eration

de

l'ensemble

des

points

entiers

qu'il

contient

ne

sont

en

g?en?eral

pas

convexes

sur

Z.

La

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

I

-LSB-

Pz

-RSB-

-LSB-

P

-RSB-

I

I

J

P

Fig.

Exemple

de

poly?edre

convexe

a

projection

enti?ere

non

convexe

x

figure

illustre

un

tel

cas

o?u

-LSB-

P

-RSB-

I

note

la

projection

du

poly?edre

rationnel

P

sur

l'axe

des

abscisses

et

-LSB-

PZ

-RSB-

I

la

projection

sur

le

m

eme

axe

des

points

entiers

de

P

En

cons?equence

le

nid

de

boucle

de

parcours

de

ces

points

entiers

peut

contenir

des

boucles

vides

pour

certaines

valeurs

des

it?erations

L'utilisation

de

la

forme

rationnelle

de

l'algorithme

conduit

alors

a

l'alternative

suivante

Soit

l'ex

ecution

des

it?erations

ovidesAE

ne

modifie

pas

le

programme

auquel

cas

on

peut

se

contenter

de

l'approximation

obtenue

dans

le

cas

rationnel

et

on

ex?ecute

des

it?erations

qui

ne

devraient

pas

avoir

lieu

L'avantage

est

qu'aucune

structure

suppl?ementaire

n'est

n?ecessaire

pour

eviter

les

trous

Soit

ce

n'est

pas

le

cas

et

la

boucle

obtenue

contient

alors

n?ecessairement

des

it?erations

vides

-LRB-

celles

correspondant

aux

trous

-RRB-

Dans

certains

cas

il

est

cependant

important

d'

eviter

l'occurrence

de

telles

it?erations

car

elles

alourdissent

la

gestion

de

la

boucle

et

risquent

de

provoquer

des

d?es?equilibres

de

charge

entre

processeurs

voire

de

rendre

ill?egales

certaines

transformations

C'est

le

cas

par

exemple

lorsque

l'on

souhaite

a

posteriori

eliminer

certaines

des

boucles

par

exemple

parce

qu'elles

ne

contiennent

que

des

r?eutilisations

Consid?erons

la

boucle

suivante

Nid

Do

i

Do

j

inf

-LRB-

i

-RRB-

e

sup

-LRB-

i

-RRB-

c

R

A

-LSB-

i

-RSB-

f

-LRB-

i

-RRB-

EndDo

EndDo

o?u

les

fonctions

inf

-LRB-

-RRB-

et

sup

-LRB-

-RRB-

sont

celles

qui

ont

servi

a

d?efinir

le

poly?edre

de

la

figure

La

boucle

interne

ne

contenant

que

des

r?eutilisations

on

veut

l'

eliminer

pour

obtenir

un

nid

de

la

forme

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Nid

Do

i

min

max

R

A

-LSB-

i

-RSB-

f

-LRB-

i

-RRB-

EndDo

Si

les

contraintes

sur

j

ne

sont

pas

propag?ees

de

telle

sorte

que

la

boucle

i

ne

contienne

pas

d'it

erations

vides

on

obtient

alors

min

et

max

et

les

deux

boucles

ne

sont

pas

equivalentes

l'

elimination

est

donc

ill?egale

Notre

but

est

de

proposer

un

raffinement

de

l'algorithme

de

Fourier-Motzkin

qui

garantisse

l'absence

d'it

erations

vides

G?eom?etriquement

ceci

correspond

au

fait

que

chaque

niveau

de

profondeur

k

du

nid

corresponde

au

parcours

de

la

projection

des

points

entiers

du

poly?edre

sur

le

sous-espace

d?efini

par

les

k

premi?eres

variables

Sur

l'exemple

de

la

figure

on

veut

donc

qu

a

l'issue

de

l'

elimination

la

boucle

DO

i

corresponde

au

parcours

de

la

projection

des

points

entiers

du

poly?edre

-LRB-

soit

les

points

et

-RRB-

et

non

aux

points

entiers

de

la

projection

rationnelle

-LRB-

soit

l'intervalle

entier

j

-LSB-

-RSB-

j

-RRB-

On

suppose

dans

la

suite

que

le

syst?eme

d'in

egalit?es

a

traiter

est

de

la

forme

suivante

S

fkg

aixi

akxk

ak

fkg

R

o?u

R

est

un

syst?eme

d'in

egalit?es

ne

faisant

pas

intervenir

la

variable

xk

Pugh

-LSB-

-RSB-

a

propos?e

une

extension

de

l'algorithme

standard

de

Fourier-Motzkin

dans

le

but

d'analyser

les

d?ependances

d'un

programme

Son

objectif

se

restreint

donc

a

prouver

l'existence

d'une

solution

enti?ere

plut

ot

qu

a

les

d?eterminer

toutes

La

r?esolution

du

syst?eme

pour

la

variable

xk

produit

les

in?egalit?es

X

fkg

X

fkg

La

modification

par

rapport

a

la

version

originale

consiste

alors

a

propager

l'in

egalit?e

obtenue

en

s

assurant

qu'il

existe

un

multiple

de

entre

les

bornes

Il

impose

pour

cela

la

condition

suffisante

suivante

X

fkg

ak

X

fkg

-LRB-

-RRB-

S'il

existe

une

solution

en

ajoutant

cette

in?egalit?e

alors

il

existera

une

solution

enti?ere

pour

la

variable

xk

Une

limitation

de

cette

m?ethode

est

qu'il

peut

exister

une

solution

au

syst?eme

initial

sans

qu'il

en

existe

une

si

l'on

ajoute

l'in

egalit?e

-LRB-

-RRB-

Dans

ce

cas

-LRB-

qui

est

pr?etendu

assez

rare

dans

le

cas

de

l'analyse

de

d?ependance

-RRB-

une

m?ethode

plus

pr?ecise

mais

plus

co

uteuse

est

utilis?ee

Ancourt

et

Irigoin

-LSB-

-RSB-

d?ecrivent

une

m?ethode

utilisant

l'algorithme

de

FourierMotzkin

pour

parcourir

les

points

entiers

d'un

poly?edre

La

m?ethode

propose

des

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

conditions

suffisantes

permettant

de

reconna

tre

deux

cas

particuliers

o?u

l'

elimination

est

equivalente

en

nombre

entiers

ou

rationnels

Ces

conditions

sont

les

suivantes

Si

ak

ou

alors

S

-LRB-

-RRB-

-LRB-

fkg

fkg

R

-LRB-

-RRB-

Si

l'

equation

X

fkg

X

fkg

est

redondante

alors

S

-LRB-

-RRB-

R

-LRB-

-RRB-

Lorsqu'aucune

de

ces

conditions

n'est

respect?ee

la

variable

xk

est

elimin?ee

en

utilisant

des

divisions

euclidiennes

et

l'

equivalence

AB

C

A

est

equivalent

a

B

C

A

A

L'utilisation

de

cette

propri?et?e

permet

de

calculer

des

bornes

inf?erieures

et

sup?erieures

pour

chacune

des

variables

du

syst?eme

La

construction

du

nid

de

boucle

de

parcours

du

poly?edre

est

donc

effectu?ee

en

deux

etapes

-LRB-

-RRB-

Le

calcul

des

points

entiers

solutions

en

utilisant

les

deux

conditions

de

simplification

et

eventuellement

des

divisions

euclidiennes

-LRB-

-RRB-

L'

elimination

globale

des

in?egalit?es

redondantes

en

utilisant

le

test

de

Cheng

-LSB-

-RSB-

I

X

aixi

est

redondante

dans

le

syst?eme

S

ssi

S

fIg

-LSB-

fX

aixi

n

a

pas

de

solution

-LRB-

-RRB-

L'existence

d'une

solution

est

l?a

encore

examin?ee

via

l'algorithme

de

FourierMotzkin

La

m?ethode

propos?ee

par

Le

Fur

-LSB-

-RSB-

utilise

la

m

eme

m?ethode

qu'Ancourt

en

ce

qui

concerne

la

premi?ere

etape

Il

utilise

par

contre

l'algorithme

du

simplexe

-LSB-

-RSB-

pour

appliquer

le

test

de

redondance

-LRB-

-RRB-

Il

propose

en

outre

deux

am?eliorations

de

l'algorithme

d'Ancourt

et

Irigoin

-LCB-

La

premi?ere

version

part

de

deux

constats

d'une

part

le

fait

d'

eliminer

les

contraintes

redondantes

dans

l'ordre

d?ecroissant

des

indices

xn

provoque

des

eliminations

sur

xi

de

contraintes

redondantes

dans

le

contexte

de

xi

xn

Les

eliminations

etant

d'autant

plus

efficaces

que

le

contexte

est

important

il

est

beaucoup

plus

probable

de

voir

appara

tre

des

it?erations

vides

en

position

interne

que

dans

les

boucles

externes

ce

qui

produit

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

globalement

beaucoup

plus

de

otrousAE

dans

le

parcours

du

poly?edre

En

inversant

simplement

l'ordre

des

eliminations

-LRB-

ordre

croissant

des

indices

-RRB-

Le

Fur

montre

sur

des

exemples

que

l'on

obtient

des

parcours

beaucoup

plus

compacts

le

nombre

d'it

erations

vides

passant

de

a

sur

un

nid

de

boucle

de

it?erations

contenant

in?egalit?es

sur

quatre

variables

Cela

suffit

a

diviser

par

deux

le

temps

de

parcours

-LCB-

La

seconde

version

consiste

a

ne

pas

appliquer

globalement

l'

elimination

des

redondances

en

fin

de

premi?ere

etape

mais

de

l'entrelacer

avec

la

production

de

contraintes

En

effet

la

premi?ere

etape

peut

a

elle

seule

produire

un

nombre

d'in

egalit?es

tel

qu'il

rende

peu

efficace

la

deuxi?eme

etape

Une

elimination

entrelac?ee

permet

de

contr

oler

cette

explosion

du

nombre

de

contraintes

Notons

que

si

la

premi?ere

am?elioration

vise

a

r?eduire

le

nombre

d'it

erations

vides

elle

n'en

garantit

pas

l'absence

comme

nous

nous

l'imposerons

La

m?ethode

propos?ee

par

Feautrier

-LSB-

-RSB-

s

appuie

sur

l'algorithme

du

simplexe

-LSB-

-RSB-

Feautrier

a

d?evelopp?e

une

version

param?etr?ee

de

cet

algorithme

appel?ee

PIP

-LSB-

-RSB-

Les

principales

diff?erences

avec

la

version

originale

du

simplexe

est

que

l'algorithme

utilise

des

param?etres

correspondant

a

la

structure

de

la

boucle

-LRB-

typiquement

les

bornes

des

it?erations

par

exemple

-RRB-

permettant

d'obtenir

des

r?esultats

pour

toute

une

famille

de

poly?edres

avec

un

seul

appel

a

PIP

et

que

la

fonction

a

optimiser

par

le

simplexe

est

l'ordre

lexicographique

sur

les

variables

afin

d'obtenir

les

bornes

du

poly?edre

suivant

chaque

axe

L'avantage

de

cette

m?ethode

est

qu'elle

produit

peu

d'in

egalit?es

redondantes

dans

le

syst?eme

Le

r?esultat

est

obtenu

sous

forme

d'un

arbre

de

conditions

appel?e

QUAST

-LRB-

quasi

affine

solution

tree

-RRB-

qui

doit

a

posteriori

etre

simplifi?e

-LSB-

-RSB-

pour

obtenir

les

bornes

de

boucle

Des

tests

de

comparaison

de

performance

-LSB-

-RSB-

montrent

que

FourierMotzkin

donne

de

meilleurs

r?esultats

que

cette

m?ethode

-LRB-

en

temps

de

calcul

et

en

espace

m?emoire

requis

-RRB-

dans

le

cas

de

probl?emes

de

petite

taille

mais

est

plus

rapidement

limit?e

dans

le

cas

de

probl?emes

complexes

H.P.

Williams

-LSB-

-RSB-

a

et?e

a

notre

connaissance

le

premier

a

constater

que

l'algorithme

de

Fourier-Motzkin

pouvait

etre

utilis?e

pour

r?esoudre

les

probl?emes

de

programmation

lin?eaire

en

nombres

entiers

c'est

a

dire

chercher

a

optimiser

une

fonction

lin?eaire

sur

les

points

entiers

d'un

poly?edre

Il

utilise

des

tests

portant

sur

les

valeurs

de

congruence

des

variables

pour

permettre

une

elimination

exacte

en

nombres

entiers

Un

exemple

illustre

l'obtention

de

ces

tests

mais

l'auteur

ne

donne

pas

de

m?ethode

g?en?erale

pour

les

produire

en

fonction

des

donn?ees

D'autre

part

il

peut

s

autoriser

des

changements

de

variables

ce

qui

ne

peut

etre

le

cas

dans

le

cadre

de

la

g?en?eration

de

code

o?u

on

a

besoin

des

bornes

des

variables

originales

Enfin

les

tests

sur

les

congruences

sont

ecrits

sous

forme

d'

enum?eration

des

cas

possibles

ce

qui

produit

un

tr?es

grand

nombre

d'in

egalit?es

et

fournit

un

r?esultat

permettant

bien

la

recherche

d'une

solution

optimale

par

enum?eration

mais

s

av?ere

mal

adapt?ee

a

la

r?e?ecriture

de

boucles

Cependant

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

la

rigueur

dans

la

recherche

des

bornes

exactes

a

chaque

etape

par

l'utilisation

de

tests

de

congruence

et

les

outils

arithm?etiques

utilis?es

pour

les

combiner

-LRB-

le

th?eor?eme

des

restes

chinois

notamment

-RRB-

fournit

une

base

solide

pour

la

r?esolution

de

notre

probl?eme

La

m?ethode

que

nous

proposons

cherche

a

d?ecrire

exactement

les

points

entiers

-LRB-

et

non

une

approximation

-RRB-

d'un

poly?edre

en

utilisant

l'algorithme

de

FourierMotzkin

Nous

nous

imposons

en

outre

que

chaque

niveau

de

profondeur

du

nid

corresponde

au

parcours

de

la

projection

orthogonale

du

poly?edre

sur

le

sousespace

d?efini

par

les

k

premi?eres

variables

Nous

ne

nous

int?eresserons

pas

aux

techniques

d'

elimination

des

in?egalit?es

redondantes

en

ce

sens

les

m?ethodes

pr?ec?edemment

cit?ees

sont

compl?ementaires

de

la

n

otre

L'id

ee

de

notre

m?ethode

est

que

la

non

convexit?e

des

projections

de

l'ensemble

des

points

entiers

-LRB-

les

trous

dans

l'ensemble

solution

-RRB-

est

due

au

fait

qu'il

existe

des

solutions

dans

certains

sous-ensembles

de

Zet

pas

dans

d'autres

Nous

proposons

alors

de

distinguer

ces

sous-ensembles

par

des

tests

de

congruence

et

d'exprimer

les

bornes

de

l'ensemble

solution

en

fonction

de

ces

valeurs

de

congruence

Les

bornes

de

boucle

peuvent

alors

etre

-LRB-

tr?es

-RRB-

complexes

mais

assurent

l'exactitude

des

solutions

tout

en

evitant

l'occurrence

d'it

erations

vides

Nous

utiliserons

dans

cette

section

les

propri?et?es

classiques

suivantes

des

fonctions

enti?eres

plafond

et

plancher

-LSB-

-RSB-

Soit

x

R

n

p

Z

q

N

-LCB-

d?xe

bxc

-LCB-

b?xc

dxe

-LCB-

l

dxe

n

q

m

lx

nq

m

-LCB-

j

bxc

n

q

k

jx

nq

k

Afin

de

r?esoudre

certaines

in?egalit?es

contenant

des

fonctions

parties

enti?eres

nous

utiliserons

egalement

les

quatre

r?esultats

suivants

-LRB-

voir

-LSB-

-RSB-

pour

les

d?emonstrations

-RRB-

-LRB-

-RRB-

dxe

n

x

n

-LRB-

-RRB-

bxc

n

x

n

-LRB-

-RRB-

dpq

e

n

p

qn

q

-LRB-

-RRB-

bpq

c

n

p

qn

q

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Elimination

en

nombres

entiers

Dans

toute

cette

partie

A

est

une

matrice

a

n

colonnes

et

p

lignes

a

coefficients

entiers

B

est

un

vecteur

de

Zp

et

P

le

poly?edre

de

Qn

d?efini

par

P

fI

-LRB-

In

-RRB-

AI

Bg

Nous

proposons

maintenant

de

d?emontrer

le

r?esultat

suivant

Th?eor?eme

L'ensemble

S

des

points

entiers

du

poly?edre

P

peut

etre

d?ecrit

par

un

syst?eme

d'in

egalit?es

o?u

les

bornes

d?ependent

de

tests

de

congruence

plus

pr?ecis?ement

pour

chaque

variable

Ij

j

j

-LSB-

n

-RSB-

j

il

existe

un

entier

Mj

et

un

sous-ensemble

des

repr?esentants

canoniques

des

classes

de

congruence

modulo

Mj

tels

que

S

soit

d?ecrit

par

des

in?egalit?es

du

type

Pour

C

j

-LSB-

Mj

-RSB-

j

si

Ij

C

mod

Mj

alors

Ij

U

cj

-LRB-

Ij

-RRB-

ou

si

Ij

C

mod

Mj

alors

Ij

Lcj

-LRB-

Ij

-RRB-

o?u

les

fonctions

Uj

et

Lj

ne

font

intervenir

que

les

composantes

Ij

et

des

constantes

enti?eres

et

sont

ferm?ees

par

addition

multiplication

par

une

constante

et

l'utilisation

de

fonctions

plafond

plancher

minimum

et

maximum

De

plus

-LCB-

Le

nombre

de

fonctions

plafond

ou

plancher

imbriqu?ees

est

au

plus

egal

a

-LRB-

n-j

-RRB-

-LCB-

j

-LSB-

n

-RSB-

j

l'ensemble

des

points

d?ecrits

par

les

in?egalit?es

o?u

n'interviennent

que

les

variables

Ij

en

partie

gauche

est

l'ensemble

des

points

entiers

de

la

projection

orthogonale

de

S

sur

-LRB-

Ij

-RRB-

La

complexit?e

de

la

r?esolution

de

ce

probl?eme

et

des

bornes

r?esultantes

etant

essentiellement

due

aux

congruences

et

a

l'utilisation

de

fonctions

parties

enti?eres

il

est

bon

de

pouvoir

majorer

leur

nombre

et

nous

veillerons

a

d?eterminer

pr?ecis?ement

leurs

causes

Le

dernier

point

est

le

plus

novateur

-LRB-

il

etait

absent

des

versions

pr?ec?edentes

-LSB-

-RSB-

-RRB-

La

d?emonstration

que

nous

proposons

est

constructive

c'est

a

dire

qu'elle

illustre

la

m?ethode

de

r?esolution

en

m

eme

temps

qu'elle

en

prouve

la

validit?e

Le

paragraphe

pr?esente

un

r?esum?e

de

cette

m?ethode

ainsi

que

deux

exemples

d'applications

auxquels

il

peut

etre

conseill?e

de

se

reporter

pour

suivre

plus

ais?ement

les

diff?erentes

etapes

de

la

d?emonstration

D?emonstration

Nous

allons

d?emontrer

par

r?ecurrence

sur

j

que

l'on

peut

d?ecrire

les

points

entiers

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

du

poly?edre

par

des

in?egalit?es

quelconques

ne

concernant

que

Ij

et

des

in?egalit?es

de

la

forme

pr?ecis?ee

par

le

th?eor?eme

pour

les

variables

d'indice

sup?erieur

a

j.

Montrons

tout

d'abord

que

le

r?esultat

est

vrai

pour

j

n

On

r?eordonne

les

lignes

de

A

et

B

de

mani?ere

a

ce

que

les

premi?eres

lignes

de

A

aient

un

coefficient

nul

en

colonne

n

les

suivantes

un

coefficient

strictement

positif

et

les

derni?eres

un

coefficient

strictement

n?egatif

BBBBBBB

An

A

n

A?n

CCCCCCCA

BBBBBB

Bn

B

n

B?n

CCCCCCA

S

peut

donc

etre

d?ecrit

par

An

-LRB-

In

-RRB-

t

Bn

a

a

nIn

b

a

r

a

r

nIn

b

r

a

a

nIn

b

a?q

a?q

nIn

b?q

Ou

de

mani?ere

equivalente

An

-LRB-

In

-RRB-

t

Bn

In

b

b

a

a

n

a

n

c

In

b

b

r

a

r

a

r

n

a

r

n

c

In

d

b

a

a

n

a

n

e

In

d

b?q

a?q

a?q

n

a?q

n

e

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

soit

finalement

An

-LRB-

In

-RRB-

t

Bn

In

min

b

b

a

a

n

a

n

c

b

b

r

a

r

a

r

n

a

r

n

c

In

max

d

b

a

a

n

a

n

e

d

b?q

a?q

a?q

n

a?q

n

e

Ce

qui

correspond

bien

a

la

forme

souhait?ee

pour

la

variable

In

sans

test

de

congruences

et

avec

une

seule

profondeur

de

fonctions

enti?eres

Supposons

maintenant

que

l'on

ait

mis

les

contraintes

sous

la

forme

voulue

pour

les

variables

In

Ik

Ak

-LRB-

Ik

-RRB-

t

Bk

-LRB-

Ek

-RRB-

et

pour

j

k

des

in?egalit?es

du

type

si

Ij

C

mod

Mj

alors

Ij

U

cj

-LRB-

Ij

-RRB-

-LRB-

-RRB-

ou

si

Ij

C

mod

Mj

alors

Ij

Lcj

-LRB-

Ij

-RRB-

-LRB-

-RRB-

En

r?eordonnant

les

lignes

de

Ak

et

Bk

on

peut

comme

pr?ec?edemment

ramener

l'

equation

-LRB-

Ek

-RRB-

a

un

syst?eme

d'in

egalit?es

du

type

Ak

-LRB-

Ik

-RRB-

t

Bk

Ik

Uk

-LRB-

Ik

-RRB-

Ik

Lk

-LRB-

Ik

-RRB-

Afin

que

l'

elimination

des

contraintes

ne

concernant

que

les

variables

Ik

In

fournisse

les

points

entiers

de

la

projection

de

S

sur

-LRB-

Ik

-RRB-

il

est

encore

n?ecessaire

de

se

restreindre

aux

valeurs

de

Ik

pour

lesquelles

ces

contraintes

admettent

un

ensemble

non

vide

de

solutions

Supposons

par

exemple

que

l'on

effectue

l'

elimination

des

variables

i

j

k

-LRB-

dans

cet

ordre

-RRB-

dans

un

syst?eme

d'in

egalit?es

Si

l'

elimination

de

la

variable

i

a

produit

la

contrainte

si

i

mod

alors

i

j

l'

elimination

de

k

doit

assurer

qu'il

existe

au

moins

un

entier

congru

a

modulo

entre

et

j

On

en

d?eduira

-LRB-

en

fonction

de

j

-RRB-

les

valeurs

de

k

pour

lesquelles

la

contrainte

initiale

admet

un

ensemble

de

solutions

non

vide

Plus

g?en?eralement

lors

de

l'

elimination

de

la

variable

Ik

cette

v?erification

suppl?ementaire

doit

etre

effectu?ee

pour

tous

les

couples

de

contraintes

de

type

et

avec

j

k

ne

faisant

intervenir

que

des

variables

d'indice

inf?erieur

ou

egal

a

k

et

o?u

la

variable

Ik

intervient

au

moins

une

fois

La

notation

Lcj

-LRB-

Ij

-RRB-

peut

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

etre

trompeuse

a

ce

sujet

Elle

rappelle

que

la

borne

consid?er?ee

est

in?ependante

de

j

j

mais

n'assure

pas

qu'elle

d?epende

effectivement

de

j

-LRB-

Dans

l'exemple

pr?ec?edent

la

borne

inf?erieure

ne

d?epend

pas

de

k

par

exemple

mais

le

couple

form?e

des

bornes

et

j

r?epond

au

crit?ere

ci-dessus

-RRB-

Pour

un

indice

j

k

donn?e

notons

-LRB-

Lj

-LRB-

Ik

-RRB-

Uj

-LRB-

Ik

-RRB-

-RRB-

les

bornes

associ?ees

a

un

couple

de

contraintes

v?erifiant

le

crit?ere

pr?ec?edent

Lors

de

l'

elimination

de

k

il

faut

donc

ajouter

au

syst?eme

toutes

les

contraintes

du

type

congru

a

C

modulo

Mj

dans

l'intervalle

j

-LSB-

Lj

-LRB-

Ik

-RRB-

Uj

-LRB-

Ik

-RRB-

-RSB-

j

pour

j

k

Commen?cons

par

montrer

que

ce

type

de

contrainte

peut

se

ramener

a

une

in?egalit?e

sans

condition

de

congruence

En

effet

l'existence

d'un

el?ement

congru

a

C

modulo

Mj

dans

l'intervalle

j

-LSB-

Lj

-LRB-

Ik

-RRB-

Uj

-LRB-

Ik

-RRB-

-RSB-

j

est

equivalent

a

Ztq

Lj

-LRB-

Ik

-RRB-

C

lMj

Uj

-LRB-

Ik

-RRB-

soit

Ztq

Lj

-LRB-

Ik

-RRB-

C

Mj

l

Uj

-LRB-

Ik

-RRB-

C

Mj

ce

qui

est

vrai

si

et

seulement

si

Lj

-LRB-

Ik

-RRB-

C

Mj

Uj

-LRB-

Ik

-RRB-

C

Mj

-LRB-

-RRB-

Il

nous

reste

a

exprimer

cette

condition

sous

la

forme

donn?ee

par

le

th?eor?eme

pour

cela

on

doit

donc

o

extraire

AE

la

variable

Ik

des

fonctions

plancher

ou

plafond

contenues

dans

une

in?egalit?e

du

type

-LRB-

Ik

-RRB-

U

j

-LRB-

Ik

-RRB-

pour

se

ramener

a

une

expression

de

le

forme

si

Ik

C

mod

Mk

alors

Ik

U

ck

-LRB-

Ik

-RRB-

ou

si

Ik

C

mod

Mk

alors

Ik

Lck

-LRB-

Ik

-RRB-

Pour

extraire

la

variable

Ik

de

ces

in?egalit?es

suppl?ementaires

nous

allons

utiliser

quelques

r?esultats

interm?ediaires

Lem

me

Pour

extraire

la

variable

Ik

d'une

fonction

de

type

AIk

B

M

ss

ou

AIk

B

M

il

suffit

de

conna

tre

la

valeur

de

Ik

modulo

m

o?u

m

M

pgcd

-LRB-

A

M

-RRB-

D?emonstration

Nous

allons

montrer

le

r?esultat

dans

le

cas

d'une

fonction

plancher

le

cas

d'une

fonction

plafond

se

traitant

de

la

m

eme

mani?ere

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Soit

l'expression

AIk

B

M

-LRB-

-RRB-

Soit

d

le

pgcd

de

A

et

M

et

m

Md

on

sait

que

les

valeurs

possibles

de

AIk

mod

M

sont

de

la

forme

jd

j

j

-LSB-

m

-RSB-

j

Si

AIk

jd

-LSB-

M

-RSB-

AIk?jd

est

un

multiple

de

M

on

peut

donc

ecrire

l'expression

-LRB-

-RRB-

sous

la

forme

-LRB-

-RRB-

jB

AIk?jd

jd

M

k

jB

jd

M

k

AIk?jd

M

Il

reste

a

d?eterminer

en

fonction

de

Ik

quand

est-ce

que

AIk

jd

-LSB-

M

-RSB-

On

utilise

pour

cela

le

th?eor?eme

d'inversion

plus

g?en?eral

suivant

Th?eor?eme

Soit

d

pgcd

-LRB-

A

M

-RRB-

a

Ad

m

Md

ua

vm

l'identit

e

de

B?ezout

associ?ee

et

b

B

mod

d.

Les

valeurs

possibles

de

AIk

B

-LSB-

M

-RSB-

sont

de

la

forme

jd

b

j

j

-LSB-

m

-RSB-

j

Et

alors

AIk

B

-LRB-

jd

b

-RRB-

-LSB-

M

-RSB-

-LRB-

-RRB-

Ik

u

-LRB-

j

b

B

d

-RRB-

-LSB-

c

-RSB-

En

particulier

si

B

AIk

jd

-LSB-

M

-RSB-

-LRB-

-RRB-

Ik

ju

-LSB-

m

-RSB-

D?emonstration

du

th?eor?eme

Si

AIk

B

jd

b

-LSB-

M

-RSB-

alors

uAIk

uB

-LRB-

jd

b

-RRB-

u

-LSB-

M

-RSB-

-LRB-

d

vM

-RRB-

Ik

-LRB-

jd

b

B

-RRB-

u

-LSB-

M

-RSB-

dIk

-LRB-

jd

b

B

-RRB-

u

-LSB-

M

-RSB-

Ik

-LRB-

j

b?Bd

-RRB-

u

-LSB-

m

-RSB-

R?eciproquement

Si

Ik

-LRB-

j

b?Bd

-RRB-

u

-LSB-

m

-RSB-

alors

aIk

-LRB-

j

b?Bd

-RRB-

ua

-LSB-

m

-RSB-

AIk

-LRB-

j

b?Bd

-RRB-

uA

-LSB-

M

-RSB-

AIk

-LRB-

j

b?Bd

-RRB-

-LRB-

d

vC

-RRB-

-LSB-

M

-RSB-

AIk

jd

b

B

-LSB-

M

-RSB-

AIk

B

jd

b

-LSB-

M

-RSB-

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

Remarque

Nous

avons

d?emontr?e

une

forme

plus

g?en?erale

de

ce

th?eor?eme

car

elle

nous

sera

utile

dans

la

suite

cependant

nous

n'avons

besoin

ici

que

de

la

version

simple

o?u

B

L'int

er

et

d'utiliser

une

congruence

modulo

m

et

d'inverser

ensuite

la

relation

est

que

cela

r?eduit

le

nombre

de

valeurs

a

tester

de

M

a

m

Md

Lem

me

Pour

extraire

la

variable

Ik

d'une

combinaison

lin?eaire

du

type

rfr

AnIk

Bn

Mr

r

-LRB-

-RRB-

o?u

les

fi

sont

des

fonctions

enti?eres

plancher

ou

plafond

il

suffit

de

conna

tre

la

valeur

de

Ik

-LSB-

P

-RSB-

o?u

mi

Mi

pgcd

-LRB-

Ai

Mi

-RRB-

pour

tout

i

j

-LSB-

r

-RSB-

j

et

P

ppcm

-LRB-

mi

i

j

-LSB-

r

-RSB-

j

-RRB-

D?emonstration

D'apr

es

le

lem

me

il

suffit

de

conna

tre

Ik

-LSB-

mi

-RSB-

pour

extraire

Ik

de

la

i?eme

fonction

enti?ere

Pour

pouvoir

extraire

Ik

de

l'expression

-LRB-

-RRB-

il

suffit

donc

de

conna

tre

les

valeurs

de

congruence

de

Ik

modulo

tous

les

mi

Or

on

rappelle

un

corollaire

du

th?eor?eme

des

restes

chinois

-LSB-

-RSB-

Th?eor?eme

Soit

deux

entiers

P

ppcm

-LRB-

-RRB-

d

pgcd

-LRB-

-RRB-

alors

-LRB-

-RRB-

j

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

Le

syst?eme

-LRB-

I

-LSB-

-RSB-

I

-LSB-

-RSB-

admet

au

moins

une

solution

ssi

-LSB-

d

-RSB-

-LRB-

-RRB-

et

dans

ce

cas

on

sait

calculer

j

-LSB-

P

-RSB-

j

tel

que

I

-LSB-

P

-RSB-

-LRB-

-RRB-

-LRB-

I

-LSB-

-RSB-

I

-LSB-

-RSB-

On

a

alors

ci

mod

Mi

j

-LSB-

-RSB-

j

Remarque

L'application

de

ce

th?eor?eme

nous

permet

donc

soit

d'

etablir

que

deux

conditions

de

congruence

sont

incompatibles

-LRB-

test

-RRB-

et

qu'en

cons?equence

l'in

egalit?e

correspondante

peut

etre

elimin?ee

soit

de

combiner

deux

conditions

en

une

seule

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

L?a

encore

l'utilisation

du

plus

petit

multiple

commun

a

l'avantage

de

restreindre

le

nombre

de

cas

a

observer

Ce

r?esultat

ce

g?en?eralise

au

cas

de

r

entiers

le

test

d'existence

de

solutions

et

le

calcul

de

pouvant

etre

effectu?es

pratiquement

en

appliquant

le

r?esultat

pr?ec?edent

a

-LRB-

-RRB-

puis

-LRB-

ppcm

-LRB-

-RRB-

-RRB-

etc.

puis

-LRB-

ppcm

-LRB-

Mr

-RRB-

Mr

-RRB-

Pour

une

d?emonstration

compl?ete

de

ce

th?eor?eme

on

peut

se

reporter

a

-LSB-

-RSB-

-LRB-

page

et

suivantes

-RRB-

nous

nous

contenterons

de

pr?eciser

comment

on

peut

obtenir

la

valeur

de

dans

le

cas

de

deux

entiers

Commen?cons

par

examiner

le

cas

o?u

ils

sont

premiers

entre

eux

Soient

et

premiers

entre

eux

et

l'identit

e

de

B?ezout

associ?ee

On

sait

que

dans

ce

cas

on

a

des

solutions

pour

toutes

valeurs

des

ci

-LRB-

la

condition

s

ecrit

-LSB-

-RSB-

qui

est

toujours

v?erifi?ee

-RRB-

On

a

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

Donc

-LRB-

-LSB-

-RSB-

-LSB-

-RSB-

Si

I

v?erifie

I

-LSB-

-RSB-

on

a

alors

I

-LSB-

-RSB-

-LSB-

-RSB-

et

I

-LSB-

-RSB-

-LSB-

-RSB-

R?eciproquement

si

-LRB-

I

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

alors

I

s

ecrit

a

la

fois

-LRB-

I

On

en

d?eduit

que

Or

et

etant

premiers

entre

eux

on

en

d?eduit

d'apr

es

le

th?eor?eme

de

Gauss

-LSB-

-RSB-

que

divise

l

i.e.

l

Finalement

I

s

ecrit

donc

I

ce

qui

montre

que

I

-LSB-

-RSB-

Si

et

ne

sont

pas

premiers

entre

eux

soit

d

leur

pgcd

et

et

d

l'identit

e

de

B?ezout

associ?ee

Le

syst?eme

admet

alors

une

solution

ssi

-LSB-

d

-RSB-

-LRB-

voir

-LSB-

-RSB-

-RRB-

Notons

kd

On

a

alors

d

-LSB-

-RSB-

-LSB-

-RSB-

d

-LSB-

-RSB-

-LSB-

-RSB-

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

Donc

-LRB-

d

-LSB-

-RSB-

-LSB-

-RSB-

ce

qui

est

la

condition

souhait?ee

Exemple

On

cherche

un

entier

v?erifiant

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

Le

pgcd

de

et

vaut

et

est

congru

a

trois

modulo

donc

le

premier

couple

de

congruence

admet

une

solution

L'identit

e

de

B?ezout

associ?ee

s

ecrit

D'apr

es

ce

qu'on

vient

de

voir

le

premier

couple

de

congruence

est

equivalent

a

-LSB-

-RSB-

et

etant

premiers

entre

eux

-LRB-

-RRB-

le

syst?eme

initial

admet

une

solution

et

est

finalement

equivalent

a

-LSB-

-RSB-

-LSB-

-RSB-

L'application

directe

de

ce

th?eor?eme

montre

qu'il

suffit

donc

de

conna

tre

la

classe

de

congruence

de

Ik

modulo

P

ppcm

-LRB-

mi

i

j

-LSB-

r

-RSB-

j

-RRB-

pour

extraire

Ik

de

l'expression

Nous

sommes

maintenant

en

mesure

de

d?emontrer

que

plus

g?en?eralement

Lem

me

Une

in?egalit?e

du

type

-LRB-

-RRB-

Uj

-LRB-

Ik

-RRB-

Lj

-LRB-

Ik

-RRB-

peut

toujours

se

mettre

sous

une

des

trois

formes

suivantes

-LRB-

-RRB-

si

Ik

C

mod

Mk

alors

Ik

U

ck

-LRB-

Ik

-RRB-

-LRB-

-RRB-

si

Ik

C

mod

Mk

alors

Ik

Lck

-LRB-

Ik

-RRB-

-LRB-

-RRB-

si

Ik

C

mod

Mk

alors

Uj

-LRB-

Ik

-RRB-

Lj

-LRB-

Ik

-RRB-

in?egalit?e

ind?ependante

de

Ik

en

ajoutant

au

plus

un

test

de

congruence

sur

Ik

et

au

plus

une

profondeur

de

fonction

enti?ere

aux

fonctions

U

et

L.

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

D?emonstration

Nous

allons

d?emontrer

ce

lem

me

par

r?ecurrence

sur

la

profondeur

maximum

pm

de

fonctions

plafond

ou

plancher

contenant

la

variable

Ik

dans

l'expression

-LRB-

-RRB-

Si

pm

-LRB-

-RRB-

s

ecrit

aIk

Uj

-LRB-

Ik

-RRB-

bIk

Lj

-LRB-

Ik

-RRB-

Si

a

b

on

obtient

une

in?egalit?e

de

la

forme

sinon

si

a

b

on

obtient

Ij

Lj

-LRB-

-RRB-

Uj

-LRB-

-RRB-

a

b

et

si

a

b

on

obtient

Ij

Lj

-LRB-

-RRB-

Uj

-LRB-

-RRB-

a

b

Ce

qui

prouve

que

pour

pm

le

r?esultat

est

vrai

et

que

sa

r?esolution

n?ecessite

au

plus

l'intervention

d'une

fonction

enti?ere

suppl?ementaire

Supposons

maintenant

que

le

lem

me

soit

vrai

jusqu?a

pm

et

que

l'expression

-LRB-

-RRB-

comporte

une

profondeur

maximale

de

pm

fonctions

enti?eres

contenant

Ik

D'apr

es

le

lem

me

on

peut

extraire

Ik

de

toutes

les

fonctions

de

profondeur

pm

-LRB-

les

plus

internes

-RRB-

en

faisant

intervenir

au

plus

un

test

de

congruence

On

obtient

alors

une

fonction

de

profondeur

maximale

pm

dont

on

sait

par

hypoth?ese

de

r?ecurrence

extraire

Ik

sous

une

des

trois

formes

propos?ees

avec

au

plus

un

test

de

congruence

Le

th?eor?eme

des

restes

chinois

permet

alors

de

regrouper

ces

deux

tests

en

un

seul

portant

sur

le

ppcm

La

fonction

finale

est

alors

de

profondeur

et

d'apr

es

l'

etude

du

cas

pm

sa

r?esolution

n?ecessite

au

plus

une

fonction

enti?ere

suppl?ementaire

Comme

il

avait

eventuellement

et?e

n?ecessaire

d'en

utiliser

une

pour

mettre

l'in

egalit?e

sous

forme

la

r?esolution

du

cas

Ik

a

donc

introduit

au

plus

un

test

de

congruence

et

deux

fonctions

enti?eres

Dans

le

cas

o?u

k

la

forme

-LRB-

-RRB-

correspond

a

une

in?egalit?e

o?u

n'interviennent

plus

aucunes

variables

Il

importe

alors

de

savoir

si

l'in

egalit?e

correspondante

-LRB-

constante

-RRB-

est

vraie

ou

fausse

pour

d?eterminer

s

il

existe

des

solutions

pour

une

valeur

de

congruence

de

Ik

donn?ee

Ce

cas

correspond

aux

hypoth?eses

k

et

a

b

il

s

agit

donc

de

r?esoudre

une

in?egalit?e

du

type

-LRB-

-RRB-

dAI

C

M

e

bAI

B

M

c

Proposition

-LCB-

Si

C

B

l'in

egalit?e

-LRB-

-RRB-

est

toujours

fausse

-LCB-

si

C

B

M

elle

est

toujours

vraie

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

-LCB-

si

C

B

M

Notons

d

pgcd

-LRB-

A

M

-RRB-

m

M

=d

a

A

=d

c

C

mod

d

et

-LRB-

u

v

-RRB-

les

coefficients

de

l'identit

e

de

B?ezout

associ?ee

a

-LRB-

A

M

d

-RRB-

-LRB-

on

a

donc

uA

vM

d

-RRB-

On

d?efinit

JJ

min

-LRB-

m

bC

B

c

d

c

-RRB-

et

la

suite

Ij

j

j

-LSB-

JJ

-RSB-

j

par

j

j

-LSB-

JJ

-RSB-

j

Ij

-LRB-

j

c

C

d

-RRB-

u

mod

m

L'in

egalit?e

-LRB-

-RRB-

est

vraie

ssi

j

j

-LSB-

JJ

-RSB-

j

l

Ztq

I

Ij

lm

D?emonstration

L'in

egalit?e

-LRB-

-RRB-

est

vraie

ssi

il

existe

un

multiple

de

M

entre

IA+B

et

IA+C

ou

de

mani?ere

equivalente

si

IA

C

mod

M

C

B

D?ebarrassons

nous

tout

d'abord

de

deux

cas

simples

IA+C

mod

M

j

-LSB-

M

-RSB-

j

donc

-LCB-

Si

C

B

l'in

egalit?e

est

toujours

fausse

-LCB-

Si

C

B

M

elle

est

toujours

vraie

Int?eressons

nous

maintenant

au

cas

C

B

M

La

suite

-LRB-

Ia

C

mod

M

-RRB-

est

une

r?eplique

cyclique

de

cycle

m

de

l'ensemble

fc

c

d

c

-LRB-

m

-RRB-

dg

parcouru

dans

un

certain

ordre

Donc

IA

C

mod

M

C

B

ssi

j

-LSB-

m

-RSB-

j

tel

que

IA

C

mod

M

jd

c

et

jd

c

C

B

soit

j

bC?B?c

d

c

Donc

ssi

j

-LSB-

JJ

-RSB-

j

tel

que

IA

C

jd

c

-LSB-

M

-RSB-

Or

d'apr

es

le

th?eor?eme

d'inversion

IA

C

jd

c

-LSB-

M

-RSB-

ssi

I

-LRB-

j

c

C

d

-RRB-

u

-LSB-

m

-RSB-

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

donc

ssi

I

Ij

lm

l

Z

ce

qui

termine

la

d?emonstration

Nous

sommes

maintenant

en

mesure

de

terminer

la

d?emonstration

du

th?eor?eme

L'application

du

lem

me

termine

la

d?emonstration

de

la

propri?et?e

enonc?ee

au

th?eor?eme

pour

la

variable

Ik

Par

r?ecurrence

le

r?esultat

est

donc

vrai

pour

tout

k

j

-LSB-

n

-RSB-

j

ce

qui

termine

la

d?emonstration

du

th?eor?eme

R?esum?e

de

la

m?ethode

Exemples

Les

diff?erentes

etapes

de

l'algorithme

que

nous

proposons

peuvent

se

synth?etiser

comme

suit

-LRB-

-RRB-

Soit

Ax

b

le

syst?eme

a

r?esoudre

et

la

variable

a

eliminer

Soit

Mi

les

valeurs

absolues

des

coefficients

de

la

premi?ere

colonne

-LRB-

i.e.

correspondant

a

-RRB-

On

note

alors

le

syst?eme

-LRB-

S

-RRB-

bi

i

bi

i

bi

i

p

-LRB-

-RRB-

La

difficult?e

provient

du

cas

o?u

Mi

est

diff?erent

de

car

comme

on

cherche

les

solutions

enti?eres

on

ne

peut

alors

diviser

l'in

egalit?e

par

Mi

sans

ajouter

des

fonctions

enti?eres

plafond

ou

plancher

L'

elimination

de

la

variable

est

obtenue

par

la

formule

suivante

j

-LRB-

bj

Mj

e

-RRB-

i

-LRB-

bbi

Mi

c

-RRB-

-LRB-

-RRB-

Le

nouveau

syst?eme

-LRB-

-RRB-

est

obtenu

en

prenant

les

in?egalit?es

du

syst?eme

-LRB-

S

-RRB-

ne

contenant

pas

et

les

in?egalit?es

issues

de

l'

elimination

pr?ec?edente

-LRB-

-RRB-

-LRB-

Mj

e

b

Mi

c

i

j

bi

i

p

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

-LRB-

-RRB-

L'

etape

suivante

consiste

a

eliminer

du

syst?eme

-LRB-

-RRB-

On

doit

alors

extraire

des

fonctions

enti?eres

La

m?ethode

pour

l'extraire

d'une

in?egalit?e

de

la

forme

-LRB-

-RRB-

bj

Mj

e

bi

Mi

c

-LRB-

-RRB-

Nj

Ni

-LRB-

In

-RRB-

est

la

suivante

-LRB-

A

-RRB-

On

utilise

le

fait

que

l

bxc

l

Z

est

equivalent

a

l

x.

-LRB-

-RRB-

bj

Mj

e

bi

Mi

-LRB-

-RRB-

-LRB-

B

-RRB-

Puis

on

extrait

de

-LRB-

-RRB-

Mj

e

en

r?ecrivant

-LRB-

-RRB-

sous

la

forme

-LRB-

-RRB-

Si

pgcd

-LRB-

Nj

Mj

-RRB-

k

-LSB-

Mj

-RSB-

alors

bj

Mj

e

bj

pgcd

-LRB-

Nj

Mj

-RRB-

k

Mj

e

pgcd

-LRB-

Nj

Mj

-RRB-

k

Mj

avec

k

j

-LSB-

Mj

pgcd

-LRB-

Nj

Mj

-RRB-

-RSB-

j.

La

variable

a

pu

etre

extraite

de

la

fonction

enti?ere

car

dans

le

sous-ensemble

de

Zd?efini

par

la

condition

de

congruence

le

terme

-LRB-

Nj

Mj

-RRB-

k

Mj

est

entier

On

obtient

une

telle

in?egalit?e

pour

chaque

valeur

de

k

dans

l'intervalle

donn?e

En

utilisant

le

th?eor?eme

d'inversion

on

r?e?ecrit

la

condition

de

congruence

u

k

Mj

pgcd

-LRB-

Nj

Mj

-RRB-

o?u

u

est

obtenu

par

l'identit

e

de

B?ezout

-LRB-

C

-RRB-

Afin

de

combiner

les

tests

correspondant

aux

diff?erentes

in?egalit?es

on

utilise

le

corollaire

du

th?eor?eme

des

restes

chinois

-LSB-

-RSB-

ce

qui

dans

le

cas

de

deux

in?egalit?es

donne

On

sait

calculer

tel

que

ppcm

-LRB-

Mj

pgcd

-LRB-

Nj

Mj

-RRB-

Mi

pgcd

-LRB-

Ni

Mi

-RRB-

-RRB-

-LRB-

-RRB-

u

k

-LSB-

Mj

pgcd

-LRB-

Nj

Mj

-RRB-

-RSB-

-LSB-

Mi

pgcd

-LRB-

Ni

Mi

-RRB-

-RSB-

On

aboutit

ainsi

a

une

seule

condition

pour

toutes

les

contraintes

concernant

une

variable

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

-LRB-

-RRB-

En

it?erant

ce

processus

on

elimine

toutes

les

variables

successivement

Les

in?egalit?es

contenant

des

tests

de

congruence

doivent

etre

converties

avant

d'

etre

r?eint?egr?ees

au

syst?eme

On

utilise

pour

cela

les

propri?et?es

suivantes

La

condition

si

Ij

c

-LSB-

M

-RSB-

alors

Lj

Ij

Uj

est

equivalente

a

Lj

c

l

M

Uj

l

Z

qui

peut

se

r?e?ecrire

dLj

c

M

e

bUj

c

M

c

Exemple

Consid?erons

le

syst?eme

d'in

egalit?e

-LRB-

que

Pugh

-LSB-

-RSB-

qualifie

de

ocauchemarAE

tant

il

produit

d'in

egalit?es

avec

sa

m?ethode

La

figure

montre

le

poly?edre

d?efini

par

ce

syst?eme

ainsi

que

l'unique

point

entier

-LRB-

x

y

-RRB-

qu'il

contient

Suivons

la

m?ethode

pr?ec?edente

pour

r?esoudre

ce

syst?eme

en

nombres

entiers

-LRB-

-RRB-

L'

elimination

de

la

variable

y

conduit

aux

in?egalit?es

e

y

c

e

y

c

-LRB-

-RRB-

Des

in?egalit?es

pr?ec?edentes

on

d?eduit

quatre

contraintes

sur

la

variable

x

-LRB-

Ces

contraintes

sont

pr?ecis?ement

celles

qui

assurent

qu'il

existe

une

solution

y

enti?ere

aux

in?egalit?es

du

-LRB-

-RRB-

-RRB-

-LRB-

-RRB-

e

c

-LRB-

-RRB-

e

c

-LRB-

-RRB-

e

c

-LRB-

-RRB-

e

c

-LRB-

-RRB-

Les

in?egalit?es

-LRB-

-RRB-

et

-LRB-

-RRB-

sont

du

type

particulier

trait?e

par

la

proposition

Comme

et

que

elles

sont

toujours

vraies

et

n'imposent

donc

aucune

contrainte

sur

x

On

poursuit

la

m?ethode

en

commen?cant

par

l'in

egalit?e

-LRB-

-RRB-

-LRB-

A

-RRB-

On

se

d?ebarrasse

de

la

fonction

plancher

e

c

-LRB-

-RRB-

e

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

y

x

Fig.

Points

entiers

du

poly?edre

d?efini

par

le

syst?eme

-LRB-

S

-RRB-

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

-LRB-

B

-RRB-

puis

on

extrait

la

variable

x

de

l'expression

e

Si

j

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

alors

j

e

j

e

On

utilise

l'identit

e

de

B?ezout

associ?ee

a

et

on

en

d?eduit

que

la

contrainte

pr?ec?edente

est

equivalente

a

Si

x

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

alors

j

e

j

e

-LRB-

C

-RRB-

ce

qui

conduit

aux

deux

bornes

Si

x

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

alors

j

e

j

i.e.

Si

x

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

alors

j

e

i.e.

Si

x

-LSB-

-RSB-

j

j

-LSB-

-RSB-

j

alors

x

e

e

-LRB-

-RRB-

Int?eressons

nous

maintenant

a

l'in

egalit?e

-LRB-

-RRB-

-LRB-

A

-RRB-

On

se

d?ebarrasse

de

la

fonction

plancher

e

c

-LRB-

-RRB-

e

-LRB-

B

-RRB-

puis

on

extrait

la

variable

x

de

l'expression

e

Si

-LSB-

-RSB-

j

-LSB-

-RSB-

j

alors

e

e

que

l'on

r?e?ecrit

en

utilisant

l'identit

e

de

B?ezout

associ?ee

a

et

Si

x

-LSB-

-RSB-

j

-LSB-

-RSB-

j

alors

e

e

-LRB-

C

-RRB-

ce

qui

fournit

les

bornes

Si

x

-LSB-

-RSB-

j

-LSB-

-RSB-

j

alors

e

i.e.

Si

x

-LSB-

-RSB-

j

-LSB-

-RSB-

j

alors

e

i.e.

Si

x

-LSB-

-RSB-

j

-LSB-

-RSB-

j

alors

x

d

d

e

e

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

-LRB-

-RRB-

Remarquons

qu

a

ce

stade

on

dispose

alors

d'in

egalit?es

pour

chaque

valeur

de

j

et

dans

les

intervalles

donn?es

Par

exemple

le

syst?eme

pr?ec?edent

donne

pour

j

Si

x

-LSB-

-RSB-

et

x

-LSB-

-RSB-

alors

-LRB-

-RRB-

x

-LRB-

-RRB-

On

regroupe

enfin

les

conditions

de

congruence

issues

des

deux

in?egalit?es

-LRB-

-RRB-

et

-LRB-

-RRB-

en

utilisant

le

corollaire

des

restes

chinois

-LRB-

Th?eor?eme

-RRB-

x

z

-LRB-

j

-RRB-

-LSB-

-RSB-

-LRB-

ppcm

-LRB-

-RRB-

-RRB-

-LRB-

-RRB-

-LRB-

x

-LSB-

-RSB-

x

-LSB-

-RSB-

O?u

z

est

calcul?e

en

fonction

de

j

et

en

utilisant

l'identit

e

de

B?ezout

associ?ee

a

et

AE

On

obtient

z

-LRB-

j

-RRB-

j

La

contrainte

sur

la

variable

x

s

ecrit

alors

Si

x

-LSB-

-RSB-

j

-LSB-

-RSB-

j

j

j

-LSB-

-RSB-

j

alors

e

e

x

d

d

e

e

Cette

derni?ere

expression

est

complexe

et

peut

encore

contenir

des

it?erations

vides

-LRB-

dans

le

cas

j

par

exemple

on

peut

noter

qu'il

n'existe

pas

d'entiers

congrus

a

modulo

entre

et

-RRB-

cependant

lorsqu'un

x

v?erifie

a

la

fois

la

condition

de

congruence

et

les

bornes

donn?ees

on

est

s

ur

qu'il

existe

des

solutions

pour

toutes

les

variables

suivantes

-LRB-

y

dans

notre

cas

-RRB-

C'est

ce

dernier

point

qui

est

primordial

dans

le

cas

d'une

r?e?ecriture

de

programmes

Pour

les

diff?erentes

valeurs

de

j

dans

l'intervalle

j

-LSB-

-RSB-

j

la

borne

inf?erieure

prends

respectivement

les

valeurs

-LSB-

-RSB-

Pour

les

diff?erentes

valeurs

de

dans

l'intervalle

j

-LSB-

-RSB-

j

la

borne

sup?erieure

prend

respectivement

les

valeurs

-LSB-

-RSB-

Les

seules

valeurs

possibles

pour

x

sont

donc

et

On

retrouve

ici

l'approximation

que

l'on

aurait

obtenue

en

utilisant

l'algorithme

standard

Nous

sommes

cependant

en

mesure

de

d?eterminer

s

il

existe

une

solution

dans

chacun

de

ces

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

deux

cas

en

examinant

les

bornes

correspondant

aux

couples

-LRB-

j

-RRB-

associ?es

a

x

-LRB-

-RRB-

et

x

-LRB-

-RRB-

pour

lesquelles

les

bornes

obtenues

valent

x

x

x

x

il

est

clair

que

la

seule

solution

possible

est

finalement

x

comme

le

montre

la

figure

On

remarque

que

la

valeur

x

appartient

bien

a

la

projection

du

poly?edre

sur

l'axe

des

abscisses

mais

qu'aucun

point

entier

ne

lui

est

associ?e

a

l'int

erieur

du

poly?edre

-LRB-

on

n

a

aucune

solution

pour

y

avec

cette

valeur

-RRB-

L'int

er

et

de

notre

m?ethode

est

alors

de

ne

pas

retenir

cette

valeur

donc

dans

le

cadre

d'une

boucle

de

ne

pas

ex?ecuter

d'it

eration

pour

cette

valeur

a

laquelle

correspondrait

une

boucle

vide

sur

y

Exemple

Nous

allons

dans

ce

paragraphe

illustrer

sur

un

exemple

la

technique

de

transformation

de

programme

pr?esent?ee

au

paragraphe

pr?ec?edent

Nous

comparons

le

nid

de

boucles

obtenu

a

celui

qu'on

obtiendrait

en

se

restreignant

aux

matrices

unimodulaires

afin

de

mettre

en

valeur

les

avantages

de

notre

g?en?eralisation

On

se

propose

de

chercher

a

tirer

profit

des

r?eutilisations

de

donn?ees

dans

le

nid

de

boucle

-LRB-

a.

-RRB-

de

la

figure

Le

vecteur

de

r?eutilisation

-LRB-

output

dependence

sur

le

tableau

A

-RRB-

est

le

vecteur

-LRB-

-RRB-

Si

on

se

limitait

aux

matrices

unimodulaires

la

transformation

permettant

de

rendre

interne

ce

vecteur

conduirait

a

la

matrice

T

Les

vecteurs

d'it

erations

de

la

boucle

transform?ee

seraient

alors

I

J

T

i

j

i

j

et

la

boucle

transform?ee

serait

du

type

Nid

Do

I

Do

J

A

-LSB-

I

-RSB-

EndDo

EndDo

Si

l'on

effectue

une

recherche

des

bornes

de

boucles

n'interdisant

pas

les

it?erations

vides

on

obtient

les

bornes

suivantes

I

max

e

d?I

e

J

min

b

I

c

c

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

DO

i

DO

j

A

-LSB-

-RSB-

ENDDO

ENDDO

D

init

A

-LRB-

-RRB-

A

-LRB-

-RRB-

J

j

-LRB-

-RRB-

Images

des

treillis

j

j

i

i

-LRB-

-RRB-

Partitionnement

en

treillis

-LRB-

-RRB-

Application

de

la

transformation

aux

deux

treillis

-LRB-

a.

-RRB-

Nid

de

boucles

-LRB-

-RRB-

Application

de

la

transformation

I

J

J

I

T

I

A

-LRB-

j

-RRB-

d'it

ration

-LRB-

b.

-RRB-

Premi?re

transformation

-LRB-

-RRB-

Image

du

domaine

d'it

ration

-LRB-

c.

-RRB-

Deuxi?me

transformation

Fig.

Exemple

de

partitionnement

du

domaine

d'it

eration

en

treillis

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Mais

le

domaine

d'it

eration

-LRB-

bien

que

convexe

-RRB-

n'ayant

pas

une

projection

convexe

sur

l'axe

des

I

comme

le

montre

la

figure

-LRB-

-RRB-

cette

formulation

ne

permet

pas

d'

eliminer

la

boucle

Do

J

-LRB-

qui

ne

contient

pourtant

que

des

r?eutilisations

-RRB-

car

les

bornes

de

I

ne

contr

olent

pas

le

fait

qu'il

n

y

a

pas

d'it

eration

pour

I

et

I

Pour

permettre

une

telle

elimination

on

peut

calculer

des

bornes

de

boucles

par

notre

version

de

Fourier-Motzkin

Cependant

du

fait

de

la

non-convexit

e

suivant

I

cette

elimination

doit

faire

intervenir

des

congruences

et

on

obtient

apr?es

calculs

les

bornes

suivantes

Si

I

-LSB-

-RSB-

I

Sinon

I

Si

I

-LSB-

-RSB-

I

Sinon

I

max

e

d?I

e

J

min

b

I

c

c

Ce

qui

n?ecessite

des

branchements

conditionnels

dans

la

boucle

transform?ee

et

des

divisions

euclidiennes

pour

chaque

valeur

de

la

boucle

interne

Regardons

maintenant

ce

que

donne

notre

technique

appliqu?ee

a

la

matrice

non

unimodulaire

T

de

d?eterminant

Nous

ne

cherchons

pas

pour

l'instant

a

justifier

le

choix

de

cette

matrice

mais

illustrons

seulement

l'application

d'une

telle

transformation

et

ses

propri?et?es

La

forme

de

Smith

de

T

est

S

et

V

est

la

matrice

identit?e

Soit

-LRB-

-RRB-

la

base

canonique

de

M

le

module

engendr?e

par

-LRB-

-RRB-

et

et

les

treillis

affines

-LRB-

-RRB-

M

et

-LRB-

-RRB-

M

D'apr

es

la

proposition

-LRB-

-RRB-

forment

un

partitionnement

de

On

calcule

les

nouveaux

vecteurs

d'it

erations

pour

chaque

treillis

Tk

i

j

Ek

T

I

J

k

I

Cette

fois

les

projections

du

domaine

d'it

eration

transform?e

sont

toutes

les

deux

convexes

-LRB-

Figure

-LRB-

-RRB-

-RRB-

et

ce

pour

chaque

treillis

Le

calcul

des

bornes

de

boucles

ne

fait

donc

pas

intervenir

de

congruence

Pour

d?eterminer

les

bornes

de

boucles

on

effectue

une

seule

elimination

de

Fourier-Motzkin

param?etr?ee

par

k

L'

elimination

de

J

donne

max

-LRB-

d?k

e

dI

e

-RRB-

J

min

-LRB-

bI

bI

-RRB-

Un

raffinement

de

l'

elimination

de

Fourier-Motzkin

ce

qui

donne

pour

les

deux

valeurs

de

k

possibles

max

-LRB-

dI

e

-RRB-

J

min

-LRB-

bI

-RRB-

L'

elimination

de

I

donne

alors

I

La

r?ef?erence

pour

le

treillis

Tk

s

ecrit

H

-LRB-

-LRB-

k

-RRB-

t

T

-LRB-

I

J

-RRB-

t

-RRB-

soit

-LRB-

k

-RRB-

-LRB-

I

-RRB-

ce

qui

donne

respectivement

et

On

obtient

donc

finalement

le

programme

suivant

Nid

Do

I

Do

J

max

-LRB-

d

I

e

-RRB-

min

-LRB-

b

c

-RRB-

A

-LSB-

-RSB-

EndDo

EndDo

Do

I

Do

J

max

-LRB-

d

I

e

-RRB-

min

-LRB-

b

c

-RRB-

A

-LSB-

-RSB-

EndDo

EndDo

Int?eressons

nous

aux

d?ependances

entre

les

deux

nids

Si

deux

it?erations

i

et

j

du

programme

initial

sont

d?ependantes

on

a

alors

i

j

k

-LRB-

-RRB-

t.

Or

d'apr

es

la

forme

de

la

matrice

T

on

a

T

-LRB-

-RRB-

t

-LRB-

-RRB-

t

d'

o?u

-LRB-

-RRB-

t

T

-LRB-

-RRB-

t

T

-LRB-

-RRB-

M

On

en

d?eduit

que

i

et

j

appartiennent

n?ecessairement

au

m

eme

treillis

L'application

du

corollaire

nous

permet

alors

de

conclure

qu'il

n'existe

pas

de

d?ependance

entre

les

deux

nids

Nous

pouvons

donc

fusionner

les

deux

nids

en

Nid

Do

I

Do

J

max

-LRB-

d

I

e

-RRB-

min

-LRB-

b

c

-RRB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

EndDo

EndDo

La

boucle

interne

de

ce

nid

peut

alors

etre

l?egalement

elimin?ee

si

l'on

ne

veut

pas

effectuer

les

r?eutilisations

Cet

exemple

illustre

le

fait

que

l'utilisation

d'une

transformation

non

unimodulaire

permet

de

masquer

la

non

convexit?e

de

l'image

d'un

domaine

d'it

eration

La

matrice

ayant

et?e

choisie

de

telle

mani?ere

que

m

eme

si

l'image

du

poly?edre

initial

n'est

pas

convexe

l'image

de

chaque

treillis

qui

forme

sa

partition

l'est

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Ce

qui

permet

de

les

parcourir

par

des

nids

de

boucle

ne

contenant

pas

de

test

conditionnel

ni

de

calcul

de

congruences

Nous

insistons

sur

le

fait

que

rien

dans

ce

chapitre

ne

prouve

qu'il

en

sera

toujours

ainsi

Nous

fournissons

au

chapitre

quelques

indications

permettant

d'am

eliorer

au

moins

partiellement

la

convexit?e

des

images

des

domaines

d'it

eration

mais

la

caract?erisation

g?en?erale

des

domaines

a

projections

convexes

reste

hors

de

notre

port?ee

Conclusions

Les

techniques

pr?esent?ees

dans

ce

chapitre

ne

sont

pas

directement

li?ees

a

l'utilisation

de

la

m?emoire

virtuelle

partag?ee

N?eanmoins

l'importance

des

propri?et?es

de

localit?e

dans

ce

contexte

nous

a

amen?e

a

nous

int?eresser

aux

transformations

de

programme

et

a

la

r?e?ecriture

des

nids

de

boucles

Nous

avons

tout

d'abord

montr?e

que

l'application

a

un

nid

de

boucle

d'une

transformation

lin?eaire

pouvait

etre

etendue

au

cas

des

matrices

rationnelles

non

singuli?eres

a

inverse

enti?ere

L'image

de

Zn

par

une

telle

transformation

etant

un

sous-module

M

de

Zn

et

non

Zn

tout

entier

l'id

ee

de

notre

m?ethode

est

d'effectuer

un

partitionnement

de

Zn

en

treillis

associ?es

a

ce

sous-module

Via

ce

partitionnement

on

peut

alors

parcourir

tout

l'espace

d'it

eration

et

ainsi

effectuer

la

transformation

de

boucle

Le

code

final

contient

alors

autant

de

r?epliques

du

nid

initial

que

de

treillis

L'int

er

et

principal

de

cette

m?ethode

est

que

la

boucle

transform?ee

refl?ete

alors

les

propri?et?es

du

partitionnement

Si

le

domaine

d'it

eration

d'un

nid

de

boucle

ne

poss?ede

pas

des

projections

enti?eres

convexes

suivant

les

axes

correspondant

aux

it?erations

le

parcours

de

ce

poly?edre

provoque

des

it?erations

vides

Or

on

peut

souhaiter

eviter

de

telles

it?erations

vides

car

elles

ralentissent

la

gestion

du

nid

de

boucle

et

peuvent

rendre

ill?egale

l'

elimination

de

boucle

Cependant

m

eme

dans

ce

cas

il

peut

exister

un

sous-module

M

tel

que

le

domaine

d'it

eration

ait

des

projections

M-convexes

Si

l'on

applique

a

la

boucle

la

transformation

associ?ee

a

ce

module

chaque

nid

correspondant

a

chacun

des

treillis

aura

alors

un

domaine

d'it

eration

a

projection

convexe

Nous

montrons

au

chapitre

comment

construire

une

transformation

poss?edant

cette

propri?et?e

au

moins

dans

la

direction

de

localit?e

principale

de

la

MVP

-LRB-

celle

des

pages

-RRB-

Nous

pr?esentons

egalement

un

raffinement

de

l'algorithme

de

Fourier-Motzkin

tel

qu'il

est

d?ecrit

par

Ancourt

et

al.

-LSB-

-RSB-

L?a

encore

nous

nous

sommes

concentr?es

sur

le

probl?eme

de

l'

elimination

des

it?erations

vides

dans

le

cas

de

domaines

d'it

eration

dont

les

projections

ne

sont

pas

convexes

sur

Z.

Nous

proposons

d'utiliser

et

de

propager

des

tests

portant

sur

des

valeurs

de

congruence

des

it?erateurs

pour

assurer

a

chaque

niveau

de

boucle

que

les

bornes

obtenues

correspondent

exactement

au

parcours

de

la

projection

du

domaine

sur

le

sous-espace

d?efini

par

les

it?erations

externes

Cette

m?ethode

permet

d'assurer

qu'il

n'existe

pas

d'it

erations

vides

dans

les

boucles

externes

ce

qui

est

la

seule

voie

pour

rendre

l?egales

les

eliminations

de

boucles

Dans

la

version

oth?eoriqueAE

pr?esent?ee

dans

ce

document

nous

utilisons

le

th?eor?eme

des

restes

chinois

et

le

calcul

de

ppcm

afin

de

r?eduire

le

nombre

de

tests

de

congruence

-LRB-

une

composante

du

vecteur

d'it

eration

n'est

assujetie

qu

a

un

seul

test

-RRB-

Cependant

il

est

important

de

garder

en

m?emoire

en

vue

d'une

mise

en

oeuvre

pratique

que

ce

genre

de

calcul

risque

de

mener

rapidement

a

des

d?epassement

de

capacit?e

dans

le

cas

de

syst?emes

de

grande

taille

et

a

coefficients

importants

Pour

de

telles

applications

il

pourrait

etre

plus

raisonnable

de

laisser

se

multiplier

le

nombre

de

tests

que

de

chercher

a

les

regrouper

de

mani?ere

syst?ematique

Nous

souhaitons

qu'une

mise

en

oeuvre

prochaine

de

cet

algorithme

nous

permettra

d'en

souligner

la

pr?ecision

et

les

limitations

Nous

utilisons

ces

m?ethodes

dans

le

seul

cas

des

MVP

dans

le

chapitre

mais

nous

esp?erons

qu'elles

puissent

profiter

de

champs

d'applications

plus

larges

Chapitre

Outils

math?ematiques

pour

la

g?en?eration

de

code

Chapitre

R?eduction

des

effets

du

faux-partage

Nous

avons

pr?esent?e

au

chapitre

le

probl?eme

du

faux-partage

qui

intervient

lorsqu'au

moins

deux

processeurs

doivent

modifier

des

donn?ees

distinctes

appartenant

a

une

m

eme

page

Une

cons?equence

du

protocole

de

coh?erence

forte

est

que

la

page

doit

alors

migrer

au

moins

une

fois

dans

la

m?emoire

locale

de

chaque

processeur

d?esirant

y

acc?eder

Nous

avons

soulign?e

que

dans

le

pire

des

cas

un

faux-partage

pouvait

d?eg?en?erer

en

un

effet

ping-pong

multipliant

le

nombre

de

migrations

de

pages

et

donc

fatal

aux

performances

du

programme

Or

lors

de

l'ex

ecution

d'un

programme

le

m?ecanisme

de

MVP

laisse

la

gestion

des

pages

a

la

seule

charge

du

syst?eme

donc

une

fois

enclench?e

un

effet

de

faux-partage

ou

de

ping-pong

ne

peut

plus

etre

contr

ol?e

par

le

programmeur

C'est

pourquoi

nous

cherchons

a

d?etecter

et

a

traiter

ce

probl?eme

lors

des

phases

d'

ecriture

du

programme

ou

de

compilation

Nous

utilisons

dans

ce

chapitre

le

mod?ele

d?efini

dans

la

partie

pour

eliminer

le

faux-partage

ou

au

moins

r?eduire

ses

effets

Nous

avons

vu

au

paragraphe

que

le

nombre

de

d?efauts

de

pages

engendr?es

par

un

conflit

d?ependait

fortement

de

la

fr?equence

des

acc?es

en

ecriture

sur

la

page

en

conflit

Nous

proposons

donc

dans

la

section

de

r?eduire

l'impact

des

conflits

par

une

transformation

de

programme

ayant

pour

but

de

regrouper

les

op?eration

d'

ecritures

en

vue

d'acc

el?erer

leur

fr?equence

Cependant

si

cette

transformation

r?eduit

les

effets

des

conflits

elle

n'en

r?eduit

pas

le

nombre

Dans

le

cas

o?u

celui-ci

serait

encore

r?edhibitoire

nous

proposons

dans

la

section

une

transformation

moins

g?en?eralement

applicable

que

la

pr?ec?edente

mais

permettant

l'

elimination

compl?ete

du

faux-partage

Cette

technique

sera

illustr?ee

a

la

section

dans

le

cas

des

nids

de

boucles

parall?eles

a

une

et

deux

dimensions

et

etendue

dans

la

section

aux

cas

des

nids

non

parfaitement

parall?eles

Nous

montrons

dans

cette

partie

comment

assouplir

cette

m?ethode

afin

de

trouver

un

compromis

entre

l'

elimination

du

faux-partage

et

l'obtention

d'un

bon

equilibre

des

charges

Nous

commen?cons

au

paragraphe

suivant

par

r?esumer

l'

etat

de

l'art

concernant

l'

elimination

du

faux-partage

Chapitre

R?eduction

des

effets

du

faux-partage

Synth?ese

des

travaux

ant?erieurs

De

nombreuses

etudes

ont

et?e

men?ees

pour

traiter

a

la

compilation

les

probl?emes

de

ovraiAE

partage

a

l'int

erieur

d'un

nid

de

boucles

parall?eles

La

m?ethode

utilis?ee

consiste

g?en?eralement

a

employer

des

strat?egies

de

partitionnement

et

d'ordonnancement

permettant

de

tirer

profit

de

la

localit?e

des

programmes

-LSB-

-RSB-

ou

de

l'affinit

e

entre

les

diff?erents

nids

de

boucles

-LSB-

-RSB-

Ces

strat?egies

toujours

souhaitables

en

compl?ement

de

la

m?ethode

pr?esent?ee

dans

ce

chapitre

risquent

n?eanmoins

-LRB-

puisqu'elles

ne

prennent

pas

en

compte

le

fauxpartage

-RRB-

d'aggraver

l'occurrence

de

celui-ci

On

a

vu

que

le

faux-partage

est

en

partie

d

u

au

choix

d'un

protocole

de

coh?erence

forte

De

nombreux

efforts

ont

donc

naturellement

port?e

sur

l'adaptation

des

protocoles

de

coh?erence

a

ce

ph?enom?ene

Le

syst?eme

Ivy

-LSB-

-RSB-

ne

permettait

pas

l'

ecriture

simultan?ee

sur

une

page

par

plusieurs

processeurs

et

la

coh?erence

des

copies

en

lecture

etait

assur?ee

par

un

protocole

par

invalidations

Ce

syst?eme

etait

donc

tr?es

sensible

au

partage

des

donn?ees

a

l'int

erieur

d'une

m

eme

page

Depuis

certaines

mises

en

oeuvre

ont

cherch?e

a

pallier

ce

probl?eme

R.

Bisiani

A.

Nowatzyk

et

M.

Ravishankar

-LSB-

-RSB-

ont

expos?e

un

protocole

de

coh?erence

faible

pour

MVP

Une

etude

effectu?ee

a

partir

d'applications

r?eelles

sur

un

simulateur

permettant

de

modifier

la

topologie

du

r?eseau

sa

vitesse

la

vitesse

des

processeurs

et

la

taille

des

pages

montre

que

ce

type

de

protocole

permet

d'obtenir

des

performances

proches

d'une

machine

a

m?emoire

partag?ee

Le

but

de

la

th?ese

de

W.J.

Bolosky

-LSB-

-RSB-

est

de

prouver

que

des

protocoles

de

coh?erence

g?er?es

par

le

syst?eme

et

bien

adapt?es

a

l'architecture

et

aux

programmes

peuvent

offrir

des

performances

comparables

aux

protocoles

implant?es

au

niveau

de

l'architecture

Il

s

est

principalement

int?eress?e

aux

architectures

NUMA

et

OSMA

Confront?e

au

probl?eme

du

faux-partage

il

en

donne

diff?erentes

d?efinitions

possibles

et

les

m?ethodes

d'

evaluation

correspondantes

Il

en

d?eduit

l'influence

sur

la

taille

des

lignes

de

caches

ou

des

pages

de

la

MVP

La

solution

choisie

pour

limiter

les

effets

du

faux-partage

est

l'adaptation

du

protocole

de

coh?erence

au

type

d'acc

es

Son

etude

ne

prend

pas

en

compte

l'importance

de

la

localit?e

des

programmes

et

de

la

r?epartition

des

donn?ees

ce

qui

restreint

son

champ

d'application

Les

techniques

de

restructuration

de

donn?ees

ne

sont

donc

qu

evoqu?ees

sous

leur

forme

la

plus

simple

l'alignement

des

donn?ees

dans

des

pages

distinctes

J.K.

Bennett

J.B.

Carter

et

W.

Zwaenepoel

-LSB-

-RSB-

-LSB-

-RSB-

ont

d?evelopp?e

le

syst?eme

de

m?emoire

virtuelle

partag?ee

MUNIN

et

ont

propos?e

de

r?eduire

le

faux

partage

en

appliquant

un

protocole

de

coh?erence

diff?erent

selon

le

type

d'acc

es

aux

donn?ees

d'un

programme

Les

types

d'acc

es

sont

d?etermin?es

par

analyse

de

traces

et

distingu?es

par

cat?egories

Donn?ee

a

ecriture

unique

a

ecritures

multiples

de

type

producteur

consommateur

objets

locaux

objets

migrateurs

r?esultats

et

objets

de

synchronisations

Ils

disposent

de

protocoles

de

coh?erence

forte

-LRB-

par

invalidation

ou

diffusion

-RRB-

ou

faible

et

s

autorisent

des

pr?echargements

ou

des

Synth?ese

des

travaux

ant?erieurs

r?eplications

de

donn?ees

Ils

pr?etendent

que

les

restructurations

de

programmes

ou

de

donn?ees

imposent

un

effort

trop

important

de

la

part

du

programmeur

ou

du

compilateur

Leur

etude

des

cat?egories

se

fait

au

niveau

du

langage

de

programmation

par

ecriture

et

analyse

d'

ev?enements

pendant

l'ex

ecution

et

est

donc

a

priori

ind?ependant

de

la

machine

ce

qui

le

distingue

de

toutes

les

autres

etudes

Des

exp?eriences

men?ees

sur

six

programmes

C++

-LRB-

Multiplication

de

matrices

algorithme

de

Gauss

transformation

de

Fourier

rapide

tri

Quicksort

le

probl?eme

du

voyageur

de

commerce

et

le

jeu

de

la

vie

-RRB-

montrent

que

la

plupart

des

acc?es

correspondent

a

une

de

leurs

cat?egories

et

peuvent

donc

etre

trait?es

par

le

protocole

adapt?e

L'

elimination

du

faux-partage

et

de

ses

effets

a

et?e

trait?ee

par

Z.

Lahjomri

et

al.

-LSB-

-RSB-

qui

proposent

un

assouplissement

du

protocole

de

coh?erence

par

la

d?eclaration

-LRB-

par

le

programmeur

-RRB-

de

section

a

coh?erence

faible

permettant

l'

ecriture

simultan?ee

par

plusieurs

processeurs

dans

une

m

eme

page

-LRB-

il

est

alors

de

la

responsabilit?e

du

programmeur

de

s

assurer

que

les

d?ependances

contenues

dans

cette

section

sont

toutes

ofaussesAE

-RRB-

A

la

fin

d'une

telle

section

les

modifications

de

la

page

sont

alors

synth?etis?ees

pour

produire

une

copie

a

jour

de

la

page

La

coh?erence

faible

est

certainement

un

moyen

tr?es

s

ur

d'

eviter

un

trop

grand

nombre

de

migrations

de

pages

mais

induit

cependant

un

co

ut

de

gestion

a

l'ex

ecution

non

n?egligeable

D'une

part

le

syst?eme

doit

prendre

note

de

tous

les

processeurs

effectuant

des

modifications

sur

la

page

et

des

zones

qu'ils

sont

autoris?es

a

modifier

d'autre

part

ces

modifications

doivent

etre

synth?etis?ees

et

toutes

les

copies

sauf

celle

finalement

a

jour

doivent

etre

invalid?ees

Quand

bien

m

eme

l'ex

ecution

du

programme

ne

serait

pas

interrompue

durant

cette

phase

de

mise

a

jour

les

pages

modifi?ees

ne

peuvent

pas

etre

disponibles

durant

toute

cette

p?eriode

Donc

si

cette

m?ethode

conserve

l'int

er

et

de

pouvoir

traiter

a

l'ex

ecution

les

cas

epineux

o?u

trop

peu

de

param?etres

sont

connus

a

la

compilation

pour

eliminer

le

faux-partage

il

reste

pr?ef?erable

lorsque

cela

est

possible

de

traiter

ce

probl?eme

a

la

compilation

D'autre

part

le

probl?eme

consistant

a

eliminer

le

partage

a

grain

fin

tout

en

tirant

partie

de

la

localit?e

des

programmes

a

d?ej?a

et?e

etudi?e

dans

le

cadre

des

machines

partag?ees

a

m?emoire

non

uniforme

et

particuli?erement

dans

le

cas

des

caches

La

probl?ematique

diff?ere

alors

pour

plusieurs

raisons

les

lignes

de

cache

etant

en

g?en?eral

beaucoup

plus

petites

que

les

pages

des

MVP

l'impact

du

faux-partage

et

le

grain

de

pr?echargement

sont

r?eduits

rendant

ces

architectures

moins

sensibles

au

partage

des

donn?ees

En

outre

un

processeur

peut

acc?eder

a

une

donn?ee

ext?erieure

sans

pour

autant

faire

migrer

celle-ci

le

probl?eme

est

alors

de

d?ecider

quand

est-ce

qu'il

est

judicieux

de

faire

migrer

une

ligne

de

cache

Cependant

les

solutions

propos?ees

peuvent

etre

appliqu?ees

aux

MVP

et

les

remarques

concernant

le

faux-partage

et

l'importance

du

r

ole

de

la

localit?e

spatiale

sont

riches

d'enseignement

pour

une

gestion

correcte

des

m?emoires

virtuelles

Chapitre

R?eduction

des

effets

du

faux-partage

partag?ees

S.J.

Eggers

et

R.H.

Katz

ont

analys?e

-LSB-

-RSB-

l'influence

du

grain

de

partage

exhib?e

par

un

programme

sur

les

performances

du

protocole

de

coh?erence

des

caches

Ils

d?efinissent

le

partage

comme

le

nombre

de

s?equences

d'acc

es

en

ecriture

d'un

processeur

sur

une

donn?ee

partag?ee

et

le

nombre

d'

ecritures

a

l'int

erieur

de

chaque

s?equence

En

analysant

les

traces

de

programmes

parall?eles

ils

ont

cherch?e

-LSB-

-RSB-

l'influence

de

la

taille

des

lignes

du

cache

de

la

localit?e

du

programme

et

du

partage

a

grain

fin

-LRB-

a

l'int

erieur

d'une

m

eme

ligne

de

cache

-RRB-

sur

les

performances

du

bus

et

le

nombre

de

d?efauts

de

cache

Lorsque

le

programme

poss?ede

une

localit?e

importante

le

nombre

de

d?efauts

diminue

si

la

taille

des

lignes

augmente

par

un

effet

de

pr?echargement

implicite

des

donn?ees

En

revanche

le

nombre

de

d?efauts

augmente

si

le

programme

comporte

un

taux

important

de

partage

a

grain

fin

-LRB-

faux-partage

-RRB-

Sans

restructuration

du

programme

ou

des

donn?ees

aucune

taille

de

ligne

n'est

optimale

pour

les

applications

la

taille

optimale

variant

du

simple

au

quadruple

selon

le

programme

Les

solutions

propos?ees

pour

traiter

ce

probl?eme

sont

une

restructuration

des

donn?ees

-LRB-

une

donn?ee

partag?ee

par

ligne

-RRB-

effectu?ee

soit

par

le

programmeur

sous

forme

de

sp?ecifications

soit

par

le

compilateur

par

analyse

des

r?ef?erences

Ils

avouent

que

le

probl?eme

g?en?eral

leur

semble

insoluble

Dans

l'article

-LSB-

-RSB-

les

auteurs

appliquent

cette

m?ethode

a

deux

exemples

de

programmes

o?u

la

restructuration

des

donn?ees

consiste

en

une

transposition

de

tableau

Des

mesures

de

performances

montrent

que

ces

techniques

quoique

tr?es

simples

peuvent

eviter

jusqu

a

des

d?efauts

M.A.

Holliday

-LSB-

-RSB-

a

etudi?e

le

comportement

d'une

machine

NUMA

de

type

BBN

dot?ee

d'un

gestionnaire

de

migration

de

pages

Holliday

a

principalement

analys?e

l'influence

de

la

taille

des

pages

et

du

type

de

r?ef?erence

aux

donn?ees

Le

probl?eme

est

diff?erent

du

cas

des

MVP

puisqu'un

processeur

peut

acc?eder

a

une

donn?ee

non

locale

sans

pour

autant

faire

migrer

la

page

Il

propose

un

gestionnaire

de

mouvement

de

page

comportant

une

table

avec

un

historique

d'utilisation

des

pages

pour

chaque

processeur

La

page

est

allou?ee

au

processeur

qui

l'utilise

le

plus

Il

a

exp?eriment?e

ce

type

d'architecture

sur

programmes

dont

le

produit

matrice-vecteur

et

l'algorithme

de

Jacobi

et

soulign?e

les

d?egradations

dramatiques

pouvant

r?esulter

du

faux-partage

J.

Torrelas

M.S.

Lam

et

J.L.

Hennessy

-LSB-

-RSB-

proposent

sur

le

m

eme

type

de

machine

poss?edant

un

protocole

de

coh?erence

implant?e

au

niveau

de

l'architecture

une

r?eorganisation

des

donn?ees

pour

eviter

le

faux

partage

tout

en

tirant

partie

du

pr?echargement

des

donn?ees

Ils

proposent

un

algorithme

de

r?eorganisation

consistant

a

placer

les

scalaires

partag?es

dans

des

blocs

diff?erents

regrouper

les

scalaires

en

acc?es

exclusifs

dans

un

m

eme

bloc

aligner

les

r?egions

partag?ees

sur

les

bornes

de

blocs

regrouper

les

tableaux

dans

des

lignes

de

caches

adjacentes

et

recopier

les

donn?ees

partag?ees

Ils

s

int?eressent

particuli?erement

au

cas

des

scalaires

ne

posant

en

g?en?eral

pas

trop

de

probl?emes

de

places

en

m?emoire

et

permettant

des

solutions

simples

-LRB-

recopies

alignement

-RRB-

D.L.

Black

A.

Gupta

et

W.D.

Weber

-LSB-

-RSB-

ont

recherch?e

des

algorithmes

de

Synth?ese

des

travaux

ant?erieurs

gestion

des

pages

pour

utiliser

la

localit?e

sans

connaissances

a

priori

des

types

de

r?ef?erences

du

programme

Les

solutions

propos?ees

sont

les

suivantes

une

r?eplique

locale

pour

les

pages

acc?ed?ees

en

lecture

pour

les

pages

acc?ed?ees

en

ecriture

ils

proposent

un

protocole

de

migration

-LRB-

une

page

migre

d'une

m?emoire

locale

vers

une

autre

quand

le

nombre

d'acc

es

a

cette

page

d?epasse

une

certaine

borne

-RRB-

Ils

exposent

une

implantation

de

ce

protocole

int?egr?e

au

niveau

de

l'architecture

Des

exp?eriences

sur

trois

applications

ont

permis

d'obtenir

avec

ce

protocole

des

speed-up

de

a

par

rapport

a

une

strat?egie

al?eatoire

de

placement

des

pages

dans

les

m?emoires

locales

-LRB-

sic

-RRB-

C.

Dubnicki

et

T.J.

LeBlanc

-LSB-

-RSB-

se

sont

pench?es

sur

le

m

eme

probl?eme

et

remarquant

que

les

performances

sont

tr?es

sensibles

au

grain

de

partage

et

a

la

localit?e

-LRB-

entrainant

des

d?egradation

de

performances

jusqu

a

si

le

placement

des

donn?ees

est

mal

adapt?e

a

la

taille

des

lignes

de

caches

-RRB-

proposent

un

ajustement

dynamique

de

la

taille

des

blocs

Cette

taille

peut

etre

modifi?ee

par

le

protocole

de

coh?erence

qui

compte

le

nombre

d'invalidations

et

regroupe

les

lignes

de

caches

si

il

descend

en

dessous

d'une

certaine

valeur

et

les

s?epare

si

il

d?epasse

une

autre

borne

Les

simulations

de

cette

m?ethode

montrent

que

l'utilisation

de

blocs

de

taille

variable

donne

des

performances

au

moins

sup?erieures

a

celles

obtenues

avec

la

moins

bonne

taille

fixe

souvent

la

meilleure

et

n'est

jamais

a

moins

de

de

la

meilleure

taille

fixe

E.D.

Granston

et

al.

-LSB-

-RSB-

sont

a

notre

connaissance

les

premiers

a

avoir

cherch?e

a

adapter

a

la

compilation

la

structure

des

donn?ees

et

l'ordonnancement

des

boucles

parall?eles

a

la

structure

particuli?ere

des

MVP

L'id

ee

qu'ils

d?eveloppent

est

que

les

techniques

classiques

d'optimisation

de

la

localit?e

doivent

permettre

de

tirer

partie

du

pr?echargement

engendr?e

implicitement

par

la

taille

importante

des

pages

Cependant

si

on

ne

tient

pas

compte

de

la

structure

particuli?ere

d'une

MVP

on

risque

d'introduire

ainsi

de

nombreuses

fausses

d?ependances

Ils

proposent

donc

une

technique

de

blocage

oconscient

des

pagesAE

qui

consiste

a

distribuer

a

chaque

processeurs

les

it?erations

de

la

boucle

qui

acc?edent

a

un

certain

bloc

de

pages

Ces

blocs

sont

d?efinis

de

fa?con

a

distribuer

aux

processeurs

un

nombre

equitable

d'it

erations

Ils

envisagent

un

alignement

de

donn?ees

dans

le

cas

o?u

le

tableau

acc?ed?e

ne

commence

pas

en

d?ebut

de

page

ou

dans

le

cas

d'acc

es

a

plusieurs

tableaux

diff?erents

Ils

ont

egalement

propos?e

d'adapter

les

techniques

de

gestion

de

caches

et

d'optimisation

de

localit?e

au

cas

de

la

MVP

Cela

implique

que

le

compilateur

permette

des

modifications

de

placement

de

donn?ees

pendant

l'ex

ecution

et

une

coop?eration

du

syst?eme

pendant

l'ex

ecution

pour

enregistrer

les

acc?es

des

processeurs

aux

pages

et

les

migrations

de

celles-ci

Dans

certains

cas

une

analyse

des

acc?es

a

la

compilation

peut

r?eduire

le

co

ut

de

ces

op?erations

Ils

utilisent

les

m

emes

cat?egories

que

Bennett

et

al.

et

les

techniques

d'optimisation

de

localit?e

de

Torellas

et

al.

La

technique

pr?esent?ee

dans

ce

chapitre

pour

eliminer

l'occurrence

de

fauxpartage

s

inspire

de

la

m?ethode

propos?ee

par

Elana

D.

Granston

-LSB-

-RSB-

Le

but

de

cette

m?ethode

est

d'identifier

a

la

compilation

le

faux-partage

par

une

analyse

Chapitre

R?eduction

des

effets

du

faux-partage

fine

des

donn?ees

r?ef?erenc?ees

dans

le

cas

de

nids

de

boucles

parall?eles

a

une

ou

deux

dimensions

acc?edant

en

ecriture

a

un

tableau

par

une

r?ef?erence

affine

La

m?ethode

consiste

alors

a

en

d?eduire

l'ensemble

des

blocages

de

boucles

-LRB-

param?etr?es

par

un

facteur

d'alignement

et

une

taille

de

blocs

-RRB-

tels

que

deux

blocs

distincts

de

la

boucle

transform?ee

n'acc

edent

qu

a

des

pages

distinctes

Le

degr?e

de

libert?e

laiss?e

par

le

choix

d'un

repr?esentant

de

cet

ensemble

permet

alors

d'associer

a

l'

elimination

du

faux-partage

l'ajout

de

contraintes

concernant

l'affinit

e

entre

nids

de

boucles

ou

l'

equilibrage

des

charges

Nous

proposons

au

paragraphe

une

g?en?eralisation

de

ces

r?esultats

Regroupement

des

op?erations

d'

ecriture

L'effet

ping-pong

est

le

corollaire

le

plus

d?evastateur

du

ph?enom?ene

de

fauxpartage

Nous

pr?esentons

ici

une

technique

simple

permettant

de

s

assurer

qu'un

conflit

d'

ecriture

ne

d?eg?enerera

pas

en

ping-pong

D'un

point

de

vue

th?eorique

cela

implique

que

le

co

ut

a

l'ex

ecution

d

u

aux

effets

du

faux-partage

se

r?esumera

a

la

borne

inf?erieure

donn?ee

par

le

th?eor?eme

Nous

avons

montr?e

au

paragraphe

que

le

nombre

de

migrations

de

pages

induites

par

un

conflit

et

donc

la

probabilit?e

de

voir

se

d?evelopper

un

effet

ping-pong

d?ependait

de

l'intervalle

de

temps

entre

deux

ecritures

cons?ecutives

Afin

de

r?eduire

l'impact

du

faux-partage

nous

proposons

donc

d'appliquer

une

transformation

de

programme

permettant

de

regrouper

les

op?erations

d'

ecritures

Cette

transformation

doit

permettre

de

profiter

de

la

latence

du

r?eseau

pour

ex?ecuter

le

plus

possible

d'

ecritures

Elle

ne

modifie

ni

l'ordonnancement

ni

l'organisation

des

donn?ees

elle

poss?ede

donc

l'avantage

d'

etre

tr?es

largement

exploitable

et

simple

a

mettre

en

oeuvre

dans

un

compilateur

La

transformation

consiste

a

scinder

la

boucle

en

deux

parties

une

partie

effectuant

localement

les

calculs

et

une

partie

permettant

l'

ecriture

des

r?esultats

calcul?es

Ces

ecritures

n

etant

plus

ralenties

par

des

calculs

s

effectueront

a

une

fr?equence

elev?ee

ce

qui

permet

d'

eviter

l'effet

ping-pong

Afin

de

permettre

une

ex?ecution

parall?ele

entre

les

phases

de

calculs

et

d'

ecritures

et

de

r?eduire

egalement

la

taille

des

objets

permettant

le

stockage

local

temporaire

les

deux

boucles

subissent

un

m

eme

ostrip-miningAE

La

boucle

parall?ele

suivante

Nid

DOALL

i

A

-LSB-

i

-RSB-

f

-LRB-

i

-RRB-

END

DOALL

se

trouve

ainsi

r?e?ecrite

Regroupement

des

op?erations

d'

ecriture

60 80 100 120

Taille

du

vecteur

local

-LRB-

en

nombre

d'

l?ments

-RRB-

Nombre

de

d?fauts

de

pages

R?duction

de

l'effet

ping-pong

Taille

du

vecteur

local

-LRB-

en

nombre

d'

l?ments

-RRB-

Temps

de

communication

Dur?e

d'ex

cution

totale

-LRB-

ms

-RRB-

Performances

Fig.

Effets

d'un

regroupement

des

ecritures

Nid

local

vector

Local

-LSB-

-RSB-

DOALL

i

b

DO

j

min

-LRB-

-RRB-

Local

-LRB-

j

-RRB-

f

-LRB-

i

j

-RRB-

Calculs

locaux

END

DO

DO

j

min

-LRB-

-RRB-

A

-LSB-

i

j

-RSB-

Local

-LRB-

j

-RRB-

Ecritures

group?ees

END

DO

END

DOALL

Le

vecteur

Local

-LRB-

-RRB-

est

un

vecteur

auxilliaire

dont

la

taille

est

fix?ee

en

fonction

de

la

place

disponible

et

des

bornes

de

boucles

Lorsque

la

place

est

suffisante

dans

les

m?emoires

locales

la

taille

de

ce

vecteur

temporaire

peut

etre

fix?ee

a

la

taille

d'une

page

Ainsi

toutes

les

ecritures

dans

une

m

eme

page

peuvent

etre

ex?ecut?ees

durant

la

m

eme

phase

d'

ecriture

rendant

l'occurrence

d'un

effet

ping-pong

tr?es

improbable

Impact

sur

les

performances

Nous

avons

exp?eriment?e

cette

transformation

sur

la

MVP

KOAN

en

utilisant

le

programme

du

paragraphe

avec

un

co

ut

maximal

de

conflit

de

et

un

d?elai

de

calcul

d'une

milliseconde

Avec

ces

donn?ees

le

nombre

de

d?efauts

de

page

du

programme

initial

est

tr?es

proche

du

maximum

donn?e

par

le

th?eor?eme

La

partie

gauche

de

la

figure

montre

la

r?eduction

du

nombre

de

d?efauts

de

pages

lorsque

l'on

augmente

la

taille

du

vecteur

auxilliaire

Lorsque

la

taille

de

Chapitre

R?eduction

des

effets

du

faux-partage

ce

vecteur

est

egale

au

co

ut

maximal

du

conflit

tous

les

el?ements

acc?ed?es

par

le

processeur

P

sont

ecrits

lors

d'une

m

eme

phase

d'

ecriture

et

le

nombre

de

d?efauts

engendr?es

a

chut?e

jusqu'au

minimum

donn?e

par

le

th?eor?eme

La

courbe

de

droite

de

la

figure

montre

l'impact

de

cette

r?eduction

sur

le

temps

d'ex

ecution

du

programme

La

courbe

inf?erieure

correspond

au

temps

pass?e

par

KOAN

a

g?erer

la

m?emoire

la

courbe

sup?erieure

donne

le

temps

total

d'ex

ecution

On

observe

sur

cette

courbe

que

la

d?ecroissance

est

suffisamment

rapide

pour

qu'il

ne

soit

pas

n?ecessaire

d'utiliser

un

vecteur

auxilliaire

de

taille

maximale

pour

obtenir

les

performances

acceptables

Remarque

Ce

r?esultat

est

tr?es

important

dans

le

cadre

de

notre

etude

puisqu'il

motive

l'int

er

et

de

notre

mod?ele

En

effet

nous

avons

conclu

de

notre

analyse

qu'un

d?efaut

du

mod?ele

etait

son

incomp?etence

a

donner

une

estimation

du

nombre

de

d?efauts

mais

seulement

de

le

borner

Cependant

en

utilisant

la

technique

pr?esent?ee

dans

cette

section

on

est

en

mesure

d'assurer

qu'avec

une

taille

de

vecteur

auxilliaire

suffisante

il

est

possible

de

s

approcher

de

la

borne

inf?erieure

pr?edite

Cependant

cette

borne

inf?erieure

peut

encore

s

av?erer

trop

elev?ee

pour

assurer

un

co

ut

de

communication

raisonnable

D'autres

transformations

de

programmes

plus

complexes

sont

alors

n?ecessaires

pour

eliminer

le

ph?enom?ene

de

faux-partage

Ces

transformations

font

l'objet

de

la

section

suivante

Partitionnement

d'un

nid

de

boucles

paral

l?eles

en

blocs

justifi?es

Le

but

de

cette

section

est

de

montrer

comment

partitionner

un

nid

de

boucles

en

blocs

d'it

erations

justifi?es

afin

d'

eliminer

tout

risque

de

faux-partage

La

technique

pr?esent?ee

ici

g?en?eralise

les

r?esultats

d'Elana

Granston

et

al.

-LSB-

-RSB-

au

cas

des

nids

de

boucles

parall?eles

de

dimension

quelconque

et

fournit

des

el?ements

de

r?eponse

dans

le

cas

de

nids

non

parfaitement

parall?eles

La

m?ethodologie

est

la

m

eme

que

dans

-LSB-

-RSB-

rechercher

l'ensemble

des

blocages

de

boucles

tels

que

deux

blocs

distincts

acc?edent

a

des

ensembles

de

pages

disjoints

puis

ordonnancer

les

blocs

sur

les

processeurs

de

mani?ere

a

am?eliorer

l'affinit

e

entre

les

diff?erents

nids

de

boucles

-LRB-

faire

en

sorte

qu'un

processeur

acc?ede

au

m

eme

sous-ensemble

de

pages

dans

le

cas

o?u

un

m

eme

tableau

est

r?ef?erenc?e

par

plusieurs

nids

de

boucles

-RRB-

La

g?en?eralisation

au

cas

des

nids

de

dimension

quelconque

est

obtenue

aux

paragraphes

et

par

l'utilisation

de

l'algorithme

de

Fourier-Motzkin

-LRB-

voir

la

section

-RRB-

pour

d?eterminer

l'ensemble

des

it?erations

r?ef?eren?cant

une

page

donn?ee

Nous

verrons

dans

la

partie

suivante

comment

traiter

les

cas

o?u

il

existe

une

boucle

non

parall?ele

en

position

interne

ou

externe

Au

sens

typographique

align?es

sur

les

marges

de

la

page

Partitionnement

d'un

nid

de

boucles

parall?eles

en

blocs

Hypoth?eses

On

consid?ere

un

nid

de

boucle

parall?ele

parfaitement

imbriqu?e

acc?edant

via

une

r?ef?erence

affine

a

un

tableau

A

de

dimension

d

On

suppose

que

le

tableau

A

est

stock?e

dans

les

pages

de

la

m?emoire

virtuelle

dans

l'ordre

lexicographique

inverse

des

indices

de

A

-LRB-

ce

qui

correspond

a

un

rangement

par

colonnes

dans

le

cas

d'un

tableau

-RRB-

Pour

simplifier

les

expressions

commen?cons

par

nous

ramener

a

une

r?ef?erence

lin?earis?ee

et

a

un

tableau

normalis?e

en

z?ero

en

utilisant

la

proposition

suivante

Proposition

Soit

la

boucle

suivante

acc?edant

au

tableau

A

de

dimension

d

dont

les

indices

varient

dans

l'intervalle

-LRB-

nd

Nd

-RRB-

Nid

Do

Do

InR

A

-LSB-

In

cnd

In

>=d

-RSB-

EndDo

EndDo

Notons

A

le

tableau

-LRB-

Qdi

-LRB-

Ni

ni

-RRB-

-RRB-

correspondant

au

stockage

lin?earis?e

et

normalis?e

de

A

La

r?ef?erence

R

et

alors

equivalente

a

la

r?ef?erence

A

-LSB-

cnIn

Avec

cj

Pdi

-LRB-

Qi

k

-LRB-

Nk

nk

-RRB-

-RRB-

cji

j

-LSB-

n

-RSB-

j

Pdi

-LRB-

i

ni

-RRB-

-LRB-

Qi

k

-LRB-

Nk

nk

-RRB-

-RRB-

On

supposera

donc

que

la

boucle

a

partitionner

est

de

la

forme

Nid

Do

Do

InR

A

-LSB-

cnIn

EndDo

EndDo

Chapitre

R?eduction

des

effets

du

faux-partage

A

-LSB-

-RSB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

A

-LSB-

-RSB-

Tableau

A

Pages

bloc

bloc

bloc

bloc

bloc

Fig.

Recouvrement

d'un

tableau

par

des

blocs

de

pages

de

taille

donn?ee

o?u

le

tableau

A

est

un

tableau

-LRB-

N

-RRB-

de

dimension

Apr?es

blocage

la

boucle

transform?ee

sera

de

la

forme

Nid

DoAll

k

kmin

kmax

fpour

chaque

bloc

g

Do

l

-LRB-

k

-RRB-

u

-LRB-

k

-RRB-

Do

In

l

-LRB-

k

In

-RRB-

u

-LRB-

k

In

-RRB-

R

A

-LSB-

cnIn

EndDo

EndDo

Puisqu'on

ne

modifie

pas

l'ordre

des

it?erateurs

l'ordre

des

it?erations

a

l'int

erieur

d'un

bloc

sera

conserv?e

cependant

l'ordre

initial

d'ex

ecution

des

it?erations

entre

les

blocs

n'est

plus

respect?e

On

utilisera

dans

toute

la

suite

les

notations

suivantes

On

note

T

le

nombre

d'

el?ements

contenus

dans

une

page

-LRB-

exprim?e

en

nombre

d'

el?ements

du

tableau

en

supposant

que

la

taille

en

octets

des

pages

est

un

multiple

de

la

taille

des

el?ements

de

A

et

qu'un

el?ement

ne

peut

pas

etre

o?a

chevalAE

sur

deux

pages

-RRB-

On

note

p

le

nombre

de

processeurs

et

B

la

taille

des

blocs

-LRB-

exprim?ee

en

nombre

de

pages

-RRB-

D?etermination

des

blocs

Nous

cherchons

a

d?eterminer

l'ensemble

des

it?erations

r?ef?eren?cant

un

bloc

de

pages

donn?e

Pour

cela

nous

allons

d'abord

partitionner

les

pages

de

la

MVP

contenant

les

el?ements

du

tableau

en

sous-ensemble

de

pages

cons?ecutives

de

taille

donn?ee

puis

nous

d?eterminerons

l'ensemble

des

it?erations

qui

r?ef?erencent

ces

el?ements

On

cherche

a

d?efinir

un

recouvrement

de

A

par

des

blocs

de

B

pages

cons?ecutives

cherchons

pour

cela

les

el?ements

de

A

qui

se

trouvent

en

d?ebut

ou

en

fin

de

bloc

-LRB-

voir

la

figure

-RRB-

Partitionnement

d'un

nid

de

boucles

parall?eles

en

blocs

Notons

OE

l'adresse

dans

la

m?emoire

virtuelle

de

l'

el?ement

A

-LSB-

-RSB-

OE

-LRB-

OE

mod

T

-RRB-

est

un

multiple

de

T

donc

l'

el?ement

de

A

d'indice

-LRB-

OE

mod

T

-RRB-

serait

-LRB-

s

il

existait

-RRB-

a

l'adresse

OE

-LRB-

OE

mod

T

-RRB-

donc

serait

le

premier

d'une

page

-LRB-

sur

l'exemple

de

la

figure

A

-LSB-

-RSB-

est

a

l'adresse

donc

A

-LSB-

-RSB-

serait

le

premier

d'une

page

-RRB-

Les

el?ements

de

A

qui

sont

en

d?ebut

de

page

sont

donc

les

el?ements

d'indices

I

j

-LSB-

N

-RSB-

j

qui

appartiennent

a

l'ensemble

jT

j

Zg

Il

y

a

B

recouvrements

possibles

du

tableau

A

en

blocs

de

B

pages

suivant

que

l'

el?ement

A

-LSB-

-RSB-

est

plac?e

dans

la

premi?ere

la

deuxi?eme

ou

la

derni?ere

page

du

premier

bloc

du

recouvrement

Pour

un

recouvrement

donn?e

Rn

n

j

-LSB-

B

-RSB-

j

les

el?ements

de

A

qui

sont

en

d?ebut

de

bloc

sont

de

la

forme

fA

-LSB-

I

-RSB-

I

nT

kBT

k

Zg

et

les

el?ements

qui

terminent

un

bloc

sont

de

la

forme

fA

-LSB-

I

-RSB-

I

nT

-LRB-

k

-RRB-

BT

k

Zg

Un

bloc

bn

-LRB-

k

-RRB-

est

donc

finalement

de

la

forme

bn

-LRB-

k

-RRB-

j

-LSB-

nT

kBT

nT

-LRB-

k

-RRB-

BT

-RSB-

j

Afin

de

partitionner

le

nid

on

doit

maintenant

d?eterminer

les

indices

de

boucles

qui

r?ef?erencent

les

el?ements

du

tableau

A

appartenant

a

un

bloc

bn

-LRB-

k

-RRB-

donn?e

-LCB-

Le

bloc

bn

-LRB-

k

-RRB-

appartient

au

recouvrement

ssi

il

contient

au

moins

un

el?ement

du

tableau

donc

ssi

j

-LSB-

N

-RSB-

j

j

-LSB-

nT

kBT

nT

-LRB-

k

-RRB-

BT

-RSB-

j

-LCB-

L'it

eration

I

-LRB-

In

-RRB-

r?ef?erence

un

el?ement

du

bloc

bn

-LRB-

k

-RRB-

ssi

I

D

nT

kBT

cnIn

nT

-LRB-

k

-RRB-

BT

On

doit

donc

d'abord

chercher

tous

les

n-uplets

-LRB-

In

-RRB-

r?ef?eren?cant

un

el?ement

du

bloc

bn

-LRB-

k

-RRB-

puis

en

d?eduire

l'ensemble

des

valeurs

de

k

pour

lesquelles

le

bloc

est

atteint

on

en

d?eduira

la

borne

de

la

boucle

externe

parall?ele

D'apr

es

le

chapitre

il

suffit

pour

cela

d'effectuer

une

elimination

de

Fourier-Motzkin

sur

les

variables

In

k

dans

cet

ordre

-LRB-

voir

l'exemple

du

paragraphe

-RRB-

Chapitre

R?eduction

des

effets

du

faux-partage

Distribution

des

blocs

Une

fois

d?etermin?es

les

diff?erents

blocs

doivent

etre

distribu?es

sur

les

p

processeurs

L'indice

k

d'un

bloc

ne

d?epend

que

du

recouvrement

Rn

choisi

mais

pas

de

la

r?ef?erence

ni

de

la

forme

du

nid

de

boucle

Donc

si

n

est

fix?e

pour

tout

le

programme

on

obtient

une

application

injective

entre

les

blocs

et

les

processeurs

en

attribuant

cycliquement

les

premiers

aux

p

processeurs

Si

l'

elimination

de

Fourier-Motzkin

a

d?etermin?e

les

bornes

kmin

k

kmax

le

processeur

P

ri

se

verra

attribuer

l'ex

ecution

des

blocs

d'indices

kmin

ji

j

kmin

ji

kmax

Cette

distribution

a

en

outre

l'int

er

et

d'assurer

un

bon

equilibre

des

charges

etant

donn?ee

une

taille

de

bloc

Remarques

sur

le

r

ole

des

diff?erents

param?etres

Du

choix

de

la

taille

de

bloc

B

d?ependent

l'

equilibre

de

charge

entre

les

processeurs

-LRB-

plus

les

blocs

sont

petits

meilleur

sera

l'

equilibre

-RRB-

et

le

co

ut

de

gestion

du

programme

partitionn?e

-LRB-

plus

les

blocs

sont

gros

moins

il

y

en

a

et

donc

moins

il

y

a

de

bornes

a

d?eterminer

a

l'ex

ecution

-RRB-

Du

choix

du

param?etre

d'alignement

n

d?epend

l'affinit

e

entre

diff?erents

nids

de

boucles

parall?eles

Nous

reviendrons

sur

l'importance

de

ce

choix

dans

le

cas

o?u

certaines

boucles

du

nid

sont

s?equentielles

Exemple

Supposons

qu'on

cherche

a

partitionner

le

nid

suivant

Nid

Do

i

Do

j

min

-LRB-

i

-RRB-

R

A

-LSB-

i

j

-RSB-

EndDo

EndDo

en

vue

de

son

ex?ecution

sur

deux

processeurs

Le

tableau

A

est

de

taille

-LRB-

-RRB-

l'

el?ement

a

-LSB-

-RSB-

est

a

l'adresse

et

les

pages

contiennent

el?ements

La

version

lin?earis?ee

de

cette

boucle

s

ecrit

Nid

Do

i

Do

j

min

-LRB-

i

-RRB-

R

A

-LSB-

i

-RSB-

EndDo

EndDo

Les

indices

acc?edant

au

bloc

-LRB-

k

-RRB-

v?erifient

Partitionnement

d'un

nid

de

boucles

parall?eles

en

blocs

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

A

-LSB-

-RSB-

Tableau

A

Pages

A

-LSB-

-RSB-

bloc

-LRB-

i

j

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

Fig.

Partitionnement

en

blocs

justifi?es

i

j

j

i

i

-LRB-

k

-RRB-

Apr?es

elimination

de

Fourier-Motzkin

les

bornes

de

boucles

obtenues

sont

max

-LRB-

d

k?i

e

-RRB-

j

min

-LRB-

i

c

-RRB-

max

-LRB-

d

k

e

-RRB-

i

min

-LRB-

-RRB-

k

Le

programme

transform?e

s

ecrit

donc

sous

forme

SPMD

Nid

Do

k

pid

k

k

Do

i

max

-LRB-

d

k

e

-RRB-

min

-LRB-

-RRB-

Do

j

max

-LRB-

d

k?i

e

-RRB-

min

-LRB-

i

c

-RRB-

R

A

-LSB-

i

-RSB-

EndDo

EndDo

EndDo

dont

l'ex

ecution

est

illustr?ee

sur

la

figure

Les

deux

paragraphes

suivants

illustrent

l'application

de

cette

m?ethode

et

donnent

les

codes

produits

dans

le

cas

de

boucles

et

a

bornes

constantes

Ces

cas

etant

tr?es

fr?equents

on

pourra

utiliser

directement

la

forme

donn?ee

ce

qui

evitera

l'utilisation

de

l'

elimination

de

Fourier-Motzkin

a

la

compilation

Chapitre

R?eduction

des

effets

du

faux-partage

Etude

particuli?ere

de

deux

cas

classiques

Nid

de

boucle

a

une

dimension

On

applique

la

m?ethode

pr?ec?edente

au

nid

de

boucle

suivant

Nid

Do

i

N

R

A

-LSB-

ci

EndDo

On

a

suppos?e

que

ce

nid

est

parall?ele

cela

impose

donc

que

c

soit

non

nul

De

plus

nous

ne

nous

int?eressons

au

partitionnement

de

cette

boucle

que

dans

l'hypoth

ese

o?u

elle

pr?esente

du

faux

partage

c'est

a

dire

si

jcj

T

Dans

le

cas

contraire

tous

les

el?ements

acc?ed?es

appartiennent

a

des

pages

diff?erentes

excluant

tout

risque

de

partage

Les

it?erations

i

acc?edant

au

bloc

bn

-LRB-

k

-RRB-

sont

celles

qui

v?erifient

i

N

nT

kBT

ci

nT

-LRB-

k

-RRB-

BT

Si

c

est

strictement

positif

on

obtient

apr?es

elimination

de

Fourier-Motzkin

max

-LRB-

d

nT

kBT

c

e

-RRB-

i

min

-LRB-

N

b

nT

-LRB-

k

-RRB-

BT

c

c

-RRB-

d

BT

e

k

b

c

-LRB-

N

-RRB-

BT

c

Si

c

est

strictement

n?egatif

on

obtient

max

-LRB-

d

nT

-LRB-

k

-RRB-

BT

c

e

-RRB-

i

min

-LRB-

N

b

nT

kBT

c

c

-RRB-

d

c

-LRB-

N

-RRB-

BT

e

k

b

BT

c

Ces

deux

formes

peuvent

se

regrouper

en

utilisant

les

fonctions

de

signe

sur

c.

La

forme

g?en?erale

est

alors

max

-LRB-

d

nT

kBT

s

-LRB-

c

-RRB-

-LRB-

BT

-RRB-

c

e

-RRB-

i

min

-LRB-

N

b

nT

kBT

s

-LRB-

c

-RRB-

-LRB-

BT

-RRB-

c

c

-RRB-

d

s

-LRB-

c

-RRB-

c

-LRB-

N

-RRB-

BT

e

k

b

s

-LRB-

c

-RRB-

c

-LRB-

N

-RRB-

BT

c

On

rappelle

que

s

-LRB-

x

-RRB-

si

x

et

sinon

et

que

s

-LRB-

x

-RRB-

si

x

et

sinon

Partitionnement

d'un

nid

de

boucles

parall?eles

en

blocs

Remarques

-LCB-

On

peut

s

etonner

que

cette

forme

g?en?erale

des

bornes

de

boucles

obtenue

par

notre

version

de

Fourier-Motzkin

ne

pr?esente

pas

de

tests

de

congruence

La

raison

en

est

que

comme

on

a

suppos?e

que

jcj

T

BT

on

est

dans

le

cas

favorable

de

la

proposition

du

chapitre

o?u

l'in

egalit?e

nT

kBT

s

-LRB-

c

-RRB-

-LRB-

BT

-RRB-

c

e

nT

kBT

s

-LRB-

c

-RRB-

-LRB-

BT

-RRB-

c

c

est

vraie

pour

toutes

les

valeurs

de

k.

-LCB-

La

forme

g?en?erale

est

donn?ee

pour

synth?etiser

les

informations

mais

en

vue

d'une

mise

en

oeuvre

on

aurait

plut

ot

inter

et

a

produire

les

deux

programmes

possibles

et

a

choisir

a

l'ex

ecution

quel

code

ex?ecuter

a

l'aide

d'un

branchement

conditionnel

En

effet

si

l'on

ne

conna

t

pas

le

signe

de

c

a

la

compilation

produire

le

code

g?en?eral

n?ecessiterait

l'

evaluation

d'une

formule

plus

complexe

a

l'ex

ecution

Nid

de

boucles

parall?eles

a

deux

dimensions

On

s

int?eresse

maintenant

au

nid

de

boucles

suivant

Nid

Do

i

N

Do

j

M

R

A

-LSB-

EndDo

EndDo

On

suppose

que

les

deux

boucles

sont

parall?eles

il

n

y

a

donc

aucune

d?ependance

entre

les

it?erations

et

en

particulier

cela

n?ecessite

que

et

soient

non

nuls

On

a

int?er

et

a

se

d?eplacer

dans

le

sens

des

pages

avec

le

pas

de

progression

le

plus

petit

possible

on

suppose

donc

-LRB-

quitte

a

intervertir

les

boucles

i

et

j

ce

qui

est

toujours

possible

puisque

la

boucle

est

parall?ele

-RRB-

que

On

ne

s

int?eresse

enfin

qu'au

cas

o?u

ce

nid

de

boucle

pr?esente

du

faux-partage

ce

qui

impose

que

T

Les

it?erations

-LRB-

i

j

-RRB-

acc?edant

au

bloc

bn

-LRB-

k

-RRB-

sont

alors

celles

qui

v?erifient

i

N

j

M

nT

kBT

nT

-LRB-

k

-RRB-

BT

Apr?es

elimination

de

Fourier-Motzkin

on

obtient

alors

en

fonction

des

signes

respectifs

de

et

les

bornes

suivantes

-LCB-

Elimination

de

j

Chapitre

R?eduction

des

effets

du

faux-partage

j

M

d

nT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

e

j

b

nT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

c

Puisque

T

on

est

encore

dans

le

cas

favorable

de

la

proposition

du

chapitre

et

l'in

egalit?e

nT

kBT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

e

nT

kBT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

c

est

toujours

vraie

et

n'impose

donc

aucune

contrainte

sur

i

-LCB-

Elimination

de

i

i

N

d

nT

kBT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

e

i

b

nT

kBT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

c

Cette

fois-ci

les

hypoth?eses

ne

permettent

pas

d'affirmer

que

l'in

egalit?e

nT

kBT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

e

nT

kBT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

c

est

toujours

vraie

l'

elimination

de

k

risque

donc

de

faire

appara

tre

des

tests

de

congruence

-LCB-

Elimination

de

k

ae

d

s

-LRB-

-RRB-

-LRB-

N

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

BT

e

k

b

s

-LRB-

-RRB-

-LRB-

N

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

BT

c

Si

js

-LRB-

-RRB-

-LRB-

BT

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

j

par

application

de

la

proposition

du

chapitre

l'

elimination

de

k

n'impose

aucun

test

de

congruence

Dans

le

cas

contraire

on

doit

ajouter

aux

contraintes

sur

k

les

tests

donn?es

par

cette

proposition

-LRB-

il

ne

nous

para

t

pas

utile

de

donner

ici

leur

expression

particuli?ere

tr?es

complexe

-RRB-

L?a

encore

on

a

int?er

et

a

produire

les

diff?erents

codes

possibles

plut

ot

que

de

retarder

l'

evaluation

de

ces

formules

complexes

jusqu

a

l'ex

ecution

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Nous

allons

nous

int?eresser

maintenant

au

cas

o?u

le

nid

ne

contient

pas

que

des

boucles

parall?eles

Soit

qu'il

existe

effectivement

des

d?ependances

qui

n?ecessitent

l'ex

ecution

s?equentielle

d'une

des

deux

boucles

soit

que

pour

des

raisons

particuli?eres

le

programmeur

choisisse

de

ne

partitionner

qu'une

des

boucles

du

nid

La

boucle

externe

est

s?equentielle

Nid

DoSeq

i

N

DoAll

j

M

R

A

-LSB-

EndDo

EndDo

Dans

ce

cas

on

ne

partitionne

que

la

boucle

interne

comme

on

l'

a

fait

dans

le

cas

d'une

seule

dimension

L'

elimination

de

Fourier-Motzkin

doit

donc

se

faire

dans

l'ordre

sur

les

indices

j

k

pour

partitionner

la

boucle

interne

en

blocs

justi?es

Il

est

inutile

d'

y

introduire

l'it

erateur

i

la

boucle

externe

n

etant

pas

concern?ee

par

le

partitionnement

L'

elimination

donne

dans

ce

cas

-LCB-

Elimination

de

j

j

M

d

nT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

e

j

b

nT

s

-LRB-

-RRB-

-LRB-

BT

-RRB-

c

-LCB-

Elimination

de

k

ae

d

s

-LRB-

-RRB-

-LRB-

M

-RRB-

BT

e

k

b

s

-LRB-

-RRB-

-LRB-

M

-RRB-

BT

c

-LCB-

Elimination

de

i

i

N

La

difficult?e

suppl?ementaire

r?eside

alors

dans

le

fait

qu'on

doive

veiller

a

eliminer

les

migrations

de

blocs

entre

les

diff?erentes

it?erations

de

la

boucle

externe

Il

suffit

pour

cela

de

distribuer

la

boucle

k

sur

les

processeurs

par

une

application

injective

Une

solution

simple

consiste

a

affecter

au

processeur

P

ri

tous

les

blocs

k

tels

que

k

i

-LSB-

p

-RSB-

Cette

application

a

en

effet

l'avantage

d'entrelacer

les

blocs

Chapitre

R?eduction

des

effets

du

faux-partage

ce

qui

permet

d'am

eliorer

l'

equilibrage

des

charges

et

d'assurer

l'affinit

e

entre

les

blocs

et

les

processeurs

-LRB-

A

condition

bien

sur

de

toujours

utiliser

la

m

eme

valeur

pour

et

n

-RRB-

Si

l'indice

k

varie

dans

l'intervalle

j

-LSB-

Kmin

Kmax

-RSB-

j

la

plus

petite

valeur

de

k

qui

soit

congrue

a

i

modulo

p

est

alors

dKmin

i

p

ep

i

et

le

code

SPMD

produit

est

alors

Nid

Do

i

N

Do

k

dKmin?i

p

ep

i

N

step

p

Do

j

Jmin

-LRB-

i

k

-RRB-

Jmax

-LRB-

i

k

-RRB-

R

A

-LSB-

EndDo

EndDo

EndDo

o?u

Kmin

Kmax

Jmin

et

Jmax

sont

les

bornes

obtenues

pr?ec?edemment

La

boucle

interne

est

s?equentielle

Nid

DoAll

i

N

DoSeq

j

M

R

A

-LSB-

EndDo

EndDo

Supposons

maintenant

que

seule

la

boucle

externe

soit

parall?ele

Il

est

alors

toujours

l?egal

d'inverser

les

deux

boucles

ce

qui

nous

ram?ene

au

cas

pr?ec?edent

Cependant

pour

am?eliorer

la

granularit?e

du

parall?elisme

on

a

toujours

int?er

et

a

garder

la

boucle

parall?ele

externe

Plus

g?en?eralement

on

suppose

que

les

phases

d'optimisation

du

parall?elisme

et

de

la

localit?e

du

nid

de

boucles

ont

et?e

effectu?ees

en

aval

du

partitionnement

et

que

ce

dernier

doit

conserver

l'ordre

d'ex

ecution

des

it?erations

On

cherche

alors

dans

ce

cas

a

partitionner

la

boucle

en

consid?erant

comme

indivisible

l'ex

ecution

de

la

boucle

j

On

va

ici

distinguer

trois

cas

suivant

les

r?egions

atteintes

par

les

diff?erentes

it?erations

de

la

boucle

externe

-LRB-

voir

figure

-RRB-

cas

Si

deux

it?erations

cons?ecutives

de

la

boucle

externe

ne

partagent

jamais

une

m

eme

page

on

est

assur?e

qu'aucune

partition

de

cette

boucle

n'engendrera

de

faux-partage

On

peut

d?es

lors

appliquer

n'importe

quel

type

d'ordonnancement

statique

-LRB-

bloc

cyclique

cyclique

par

bloc

etc.

-RRB-

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

i

i

i

Cas

Cas

Cas

boucle

externe

Iterations

de

la

-LRB-

-RRB-

T

-LRB-

-RRB-

-LRB-

-RRB-

T

Fig.

Les

trois

types

de

r?egions

acc?ed?ees

par

la

boucle

externe

eme

cas

Si

tous

les

couples

d'it

erations

successives

ont

au

moins

une

page

en

commun

on

ne

peut

plus

r?esoudre

ce

probl?eme

par

un

partitionnement

judicieux

Le

traitement

de

ce

cas

sort

donc

des

attributions

de

cette

etude

Notons

n?eanmoins

qu'il

peut

etre

r?esolu

a

l'ex

ecution

en

utilisant

un

protocole

de

coh?erence

faible

L'

etude

que

nous

effectuons

dans

ce

chapitre

n'est

pas

vaine

pour

autant

et

pourra

s

av?erer

tr?es

utile

comme

compl?ement

a

l'utilisation

de

la

coh?erence

faible

En

effet

m

eme

si

nous

ne

pouvons

apporter

aucune

solution

a

la

compilation

nous

proposons

aux

propositions

et

des

crit?eres

pr?ecis

pour

identifier

ces

cas

ce

qui

permet

de

n'appliquer

la

coh?erence

faible

qu'aux

seules

sections

de

programme

qui

le

n?ecessitent

eme

cas

Si

certains

couples

d'it

erations

successives

partagent

une

m

eme

page

mais

d'autres

adressent

des

pages

distinctes

il

importe

de

pouvoir

localiser

ces

derniers

afin

de

pouvoir

d?ecouper

l'espace

d'it

eration

de

la

boucle

i

a

ces

endroits

pr?ecis

Les

prochains

paragraphes

auront

pour

but

de

rechercher

les

partitionnements

adapt?es

au

troisi?eme

cas

mais

commen?cons

par

pr?eciser

les

conditions

qui

d?etermineront

les

diff?erents

cas

Chapitre

R?eduction

des

effets

du

faux-partage

R?egion

acc?ed?ee

par

une

it?eration

de

la

boucle

externe

On

d?efinit

les

fonctions

p

-LRB-

i

-RRB-

et

g

-LRB-

i

-RRB-

comme

le

plus

petit

-LRB-

respectivement

plus

grand

-RRB-

el?ement

du

tableau

r?ef?erenc?e

a

l'it

eration

i.

Si

est

positif

les

el?ements

sont

r?ef?erenc?es

par

la

boucle

j

dans

l'ordre

croissant

donc

p

-LRB-

i

-RRB-

et

g

-LRB-

i

-RRB-

-LRB-

M

-RRB-

Si

est

n?egatif

on

a

cette

fois-ci

g

-LRB-

i

-RRB-

et

p

-LRB-

i

-RRB-

-LRB-

M

-RRB-

Finalement

dans

tous

les

cas

p

-LRB-

i

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

g

-LRB-

i

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

Les

it?erations

i

et

i

n'ont

pas

de

page

en

commun

si

il

existe

une

borne

de

page

entre

les

r?egions

acc?ed?ees

par

les

deux

it?erations

Regardons

maintenant

comment

cela

se

traduit

en

fonction

du

signe

de

-LCB-

Si

les

el?ements

r?ef?erenc?es

par

i

sont

plus

grands

que

ceux

r?ef?erenc?es

par

i.

Et

il

n

y

a

pas

de

partage

de

page

entre

i

et

i

ssi

il

existe

un

multiple

de

T

entre

p

-LRB-

i

-RRB-

et

g

-LRB-

i

-RRB-

d'

o?u

entre

s

-LRB-

-RRB-

-LRB-

M

-RRB-

et

s

-LRB-

-RRB-

-LRB-

M

-RRB-

-LCB-

Si

il

n

y

a

pas

de

partage

de

page

entre

i

et

i

ssi

il

existe

un

multiple

de

T

entre

p

-LRB-

i

-RRB-

et

g

-LRB-

i

-RRB-

d'

o?u

entre

s

-LRB-

-RRB-

-LRB-

M

-RRB-

et

s

-LRB-

-RRB-

-LRB-

M

-RRB-

Dans

tous

les

cas

les

it?erations

i

et

i

n'ont

pas

de

page

commune

ssi

il

existe

un

multiple

de

T

entre

s

-LRB-

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

et

s

-LRB-

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Notons

A

C

s

-LRB-

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

B

s

-LRB-

-RRB-

s

-LRB-

-RRB-

-LRB-

M

-RRB-

On

a

alors

le

r?esultat

suivant

Proposition

Il

n

y

a

pas

de

partage

de

page

entre

les

it?erations

i

et

i

ssi

il

existe

un

multiple

de

T

entre

iA

B

et

iA

C

ou

de

mani?ere

equivalente

ssi

diA

B

T

e

biA

C

T

c

Or

on

sait

r?esoudre

pr?ecis?ement

ce

genre

d'in

egalit?e

-LRB-

c'est

le

cas

particulier

de

la

proposition

du

chapitre

-RRB-

On

en

d?eduit

par

application

de

ce

r?esultat

les

corollaires

suivants

Proposition

Si

T

-LRB-

M

-RRB-

on

est

n?ecessairement

dans

le

cas

Si

-LRB-

M

-RRB-

on

est

n?ecessairement

dans

le

cas

Notons

d

pgcd

-LRB-

A

T

-RRB-

t

T

=d

a

A

=d

c

C

mod

d

et

-LRB-

u

v

-RRB-

les

coefficients

de

l'identit

e

de

B?ezout

associ?ee

a

-LRB-

A

T

d

-RRB-

-LRB-

on

a

donc

uA

vT

d

-RRB-

Th?eor?eme

On

d?efinit

JJ

min

-LRB-

t

bC?B?c

d

c

-RRB-

et

la

suite

Ij

j

j

-LSB-

JJ

-RSB-

j

par

j

j

-LSB-

JJ

-RSB-

j

Ij

ju

uc

C

d

mod

t

Il

n

y

a

pas

de

partage

de

page

entre

les

it?erations

i

et

i

ssi

j

j

-LSB-

JJ

-RSB-

j

l

Ztq

i

Ij

lt

Remarque

Dans

la

suite

du

chapitre

on

supposera

-LRB-

quitte

a

les

r?eordonner

-RRB-

que

les

indices

IJJ

sont

dans

l'ordre

croissant

Notons

qu'a

priori

la

formule

du

th?eor?eme

ne

les

fournit

pas

dans

cet

ordre

On

est

maintenant

en

mesure

de

fournir

des

conditions

n?ecessaires

et

suffisantes

pour

d?eterminer

les

trois

cas

possibles

lorsque

-LRB-

M

-RRB-

T

Proposition

Si

-LRB-

M

-RRB-

T

alors

-LCB-

On

est

dans

le

cas

-LRB-

jamais

de

partage

-RRB-

ssi

JJ

t

Chapitre

R?eduction

des

effets

du

faux-partage

-LCB-

on

est

dans

le

cas

ssi

JJ

t

-LCB-

on

est

dans

le

cas

-LRB-

toujours

du

partage

-RRB-

ssi

JJ

D?emonstration

La

d?emonstration

de

ce

r?esultat

est

une

application

directe

du

th?eor?eme

D?etermination

des

partitions

possibles

L'

etude

du

paragraphe

pr?ec?edent

nous

a

permis

de

d?eterminer

les

couples

d'it

erations

ne

partageant

pas

de

page

donc

de

savoir

quand

est-ce

qu'il

etait

possible

d'attribuer

a

deux

processeurs

diff?erents

des

it?erations

successives

sans

que

cela

n'engendre

de

faux-partage

Nous

appliquons

maintenant

ces

r?esultats

a

la

recherche

de

partitionnements

de

la

boucle

i

eliminant

tout

risque

de

fauxpartage

D?efinition

On

d?efinit

un

pav?e

comme

un

intervalle

j

-LSB-

-RSB-

j

du

domaine

d'it

eration

de

la

boucle

parall?ele

minimal

au

sens

de

l'inclusion

et

tel

qu'il

n

y

ait

pas

de

partage

entre

les

it?erations

et

d'une

part

et

et

d'autre

part

Le

partitionnement

du

domaine

d'it

eration

en

pav?es

d?efinit

donc

le

partitionnement

de

grain

le

plus

fin

eliminant

tout

faux

partage

Cette

d?efinition

est

une

g?en?eralisation

de

la

notion

de

pav?e

introduite

au

paragraphe

D?efinition

On

d?efinit

un

patron

de

type

Pj

comme

un

intervalle

j

-LSB-

-RSB-

j

du

domaine

d'it

eration

de

la

boucle

parall?ele

tel

que

j

-LSB-

JJ

-RSB-

j

Ztq

Ij

-LRB-

l

-RRB-

t

Ij

lt

Nous

avons

vu

lors

du

th?eor?eme

que

la

recherche

des

bornes

des

pav?es

se

ramenait

a

des

calculs

de

congruences

cycliques

de

cycle

t

Un

patron

correspond

donc

a

un

motif

du

d?ecoupage

qui

se

r?ep?ete

cycliquement

Tout

se

passe

tr?es

exactement

de

la

mani?ere

entre

deux

patrons

translat?es

l'un

par

rapport

a

l'autre

d'un

multiple

de

t.

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

DoAll

i

DoSeq

j

R

A

-LSB-

-RSB-

EndDo

EndDo

i

i

i

i

i

i

i

i

i

i

Donn?ees

N

M

T

Avec

les

notations

de

la

proposition

A

C

B

C

B

-RSB-

-LSB-

donc

on

est

dans

le

cas

de

la

figure

Avec

les

notations

du

th?eor?emes

JJ

Les

pav?es

sont

donc

constitu?es

des

it?erations

de

la

boucle

i

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

Les

patrons

sont

constitu?es

des

it?erations

-LSB-

-RSB-

-LSB-

-RSB-

-LSB-

-RSB-

Seul

le

premier

patron

est

repr?esent?e

sur

la

figure

ci-dessus

Fig.

Exemple

de

partition

en

pav?es

Chapitre

R?eduction

des

effets

du

faux-partage

Il

y

a

JJ

types

de

patrons

diff?erents

suivant

l'indice

Ij

que

l'on

prend

comme

point

de

d?epart

du

patron

Pour

fixer

les

id?ees

nous

supposerons

dans

la

suite

que

le

patron

choisi

est

de

type

PJJ

Une

fois

que

l'on

a

d?etermin?e

les

indices

Ij

en

utilisant

le

th?eor?eme

on

est

en

mesure

de

pr?eciser

la

forme

des

pav?es

et

des

patrons

En

ce

qui

concerne

la

d?etermination

des

pav?es

nous

nous

limiterons

a

une

recherche

a

l'int

erieur

d'un

patron

les

autres

etant

obtenus

par

translation

de

longueur

multiple

de

t.

Choix

d'un

partitionnement

Le

partitionnement

le

plus

fin

du

domaine

d'it

eration

de

la

boucle

parall?ele

assurant

qu'il

ne

se

produira

pas

de

faux-partage

est

le

partitionnement

par

pav?es

Cependant

comme

le

prouve

le

th?eor?eme

la

d?etermination

des

pav?es

n?ecessite

des

calculs

bien

complexes

pour

etre

men?es

a

l'ex

ecution

-LRB-

le

co

ut

engendr?e

par

ces

calculs

risquerait

de

faire

perdre

une

grande

part

du

b?en?efice

de

l'

elimination

du

faux-partage

-RRB-

Cette

m?ethode

devra

donc

etre

retenue

principalement

dans

le

cas

o?u

toutes

les

donn?ees

n?ecessaires

aux

calculs

sont

connues

d?es

la

compilation

Dans

le

cas

contraire

on

pourra

se

contenter

d'un

partitionnement

par

patrons

les

calculs

a

effectuer

pour

obtenir

les

bornes

de

boucles

etant

alors

el?ementaires

Cette

m?ethode

est

malheureusement

de

grain

plus

grossier

au

risque

d'engendrer

un

important

d?es?equilibre

des

charges

Les

deux

paragraphes

suivants

donnent

la

forme

des

boucles

obtenues

pour

les

deux

partitionnements

etudi?es

la

partie

propose

diff?erentes

m?ethodes

pour

am?eliorer

l'

equilibre

des

charges

dans

le

cas

d'un

partitionnement

par

patrons

et

r?esume

l'algorithme

g?en?eral

que

nous

proposons

pour

d?eterminer

un

partitionnement

efficace

Partitionnement

par

patrons

Le

li?eme

patron

est

constitu?e

des

it?erations

i

j

-LSB-

IJJ

-LRB-

l

-RRB-

t

IJJ

lt

-RSB-

j

il

est

atteint

lors

de

la

boucle

ssi

il

est

d'intersection

non

vide

avec

j

-LSB-

N

-RSB-

j

Donc

les

patrons

acc?ed?es

sont

ceux

qui

v?erifient

l

d?IJJt

e

l

bN

IJJ

t

c

lsup

Le

programme

partitionn?e

par

patrons

s

ecrit

donc

Nid

Do

l

lmin

lsup

Do

i

max

-LRB-

IJJ

-LRB-

l

-RRB-

t

-RRB-

min

-LRB-

N

IJJ

lt

-RRB-

Do

j

M

R

A

-LSB-

-RSB-

EndDo

EndDo

EndDo

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Partitionnement

par

pav?es

Nous

avons

suppos?e

que

les

indices

Ij

donn?es

par

le

th?eor?eme

etaient

class?es

dans

l'ordre

croissant

Le

patron

d'indice

l

est

donc

constitu?e

des

pav?es

suivants

j

-LSB-

IJJ

-LRB-

l

-RRB-

t

lt

-RSB-

j

j

-LSB-

lt

lt

-RSB-

j

j

-LSB-

IJJ

lt

IJJ

lt

-RSB-

j

Do?u

en

notant

Imin

-LRB-

l

-RRB-

IJJ

-LRB-

l

-RRB-

t

Imin

-LRB-

l

k

-RRB-

Ik

lt

pour

k

j

-LSB-

JJ

-RSB-

j

Imax

-LRB-

l

k

-RRB-

Ik

lt

pour

k

j

-LSB-

JJ

-RSB-

j

Le

programme

partitionn?e

par

pav?es

s

ecrit

Nid

DoAll

l

lmin

lsup

DoAll

k

JJ

Do

i

max

-LRB-

Imin

-LRB-

l

k

-RRB-

-RRB-

min

-LRB-

N

Imax

-LRB-

l

k

-RRB-

-RRB-

Do

j

M

R

A

-LSB-

-RSB-

EndDo

EndDo

EndDo

EndDo

Conclusions

Lorsque

les

bornes

de

boucle

ou

la

forme

de

la

r?ef?erence

au

tableau

ne

sont

pas

connues

pr?ecis?ement

lors

de

la

phase

de

compilation

le

calcul

des

pav?es

trop

complexe

s

av?ererait

trop

co

uteux

pour

etre

effectu?e

a

l'ex

ecution

On

pr?econisera

plut

ot

dans

ce

cas

un

partitionnement

par

patrons

n?ecessitant

moins

de

calculs

Malheureusement

on

perd

ainsi

la

finesse

du

d?ecoupage

et

les

patrons

peuvent

etre

trop

importants

pour

assurer

un

equilibre

correct

des

charges

Nous

pr?esentons

ici

deux

techniques

pour

traiter

ce

probl?eme

la

premi?ere

utilise

le

regroupement

des

op?erations

d'

ecriture

vu

a

la

section

pour

obtenir

un

meilleur

compromis

entre

equilibre

des

charges

et

faux-partage

La

seconde

applicable

dans

le

cas

o?u

le

tableau

r?ef?erenc?e

est

au

moins

de

dimension

deux

utilise

une

modification

de

l'organisation

des

donn?ees

pour

r?eduire

la

taille

des

patrons

Nous

illustrerons

cette

m?ethode

dans

le

cas

d'une

r?ef?erence

A

-LSB-

i

j

-RSB-

a

un

tableau

de

dimension

deux

-LRB-

est-il

encore

utile

de

dire

qu'il

est

fr?equent

en

alg?ebre

lin?eaire

-RRB-

Am?elioration

de

l'

equilibre

des

charges

D?ecoupage

des

patrons

Dans

le

cas

o?u

les

patrons

seraient

trop

grands

pour

assurer

un

bon

equilibre

de

charge

et

o?u

le

faux-partage

serait

trop

important

pour

que

le

regroupement

des

op?erations

d'

ecriture

vu

a

la

section

Chapitre

R?eduction

des

effets

du

faux-partage

soit

suffisant

pour

obtenir

de

bonnes

performances

une

solution

simple

consiste

a

combiner

les

effets

de

ces

deux

techniques

Dans

un

premier

temps

on

effectue

un

partitionnement

par

patrons

puis

on

ocoupeAE

les

patrons

autant

de

fois

qu'il

est

n?ecessaire

pour

fournir

du

travail

a

tous

les

processeurs

Les

pages

o?u

l'on

a

coup?e

sont

maintenant

partag?ees

par

deux

processeurs

on

effectue

alors

un

regroupement

des

op?erations

d'

ecriture

sur

les

acc?es

a

ces

pages

pour

eviter

sur

celles-ci

l'occurrence

d'un

effet

ping-pong

R?eduction

de

la

taille

des

patrons

Nous

avons

vu

au

th?eor?eme

que

la

taille

des

patrons

est

donn?ee

par

la

formule

t

T

=d

Nous

avons

pris

comme

hypoth?ese

que

les

pages

de

la

MVP

etaient

de

taille

T

fixe

-LRB-

dans

le

cas

de

KOAN

-RRB-

nous

ne

pouvons

donc

r?eduire

la

taille

des

patrons

qu'en

essayant

d'augmenter

la

valeur

de

d

pgcd

-LRB-

A

T

-RRB-

Si

le

tableau

A

est

de

dimension

deux

et

que

la

r?ef?erence

R

provient

de

la

lin?erarisation

de

l'acc

es

a

A

on

obtient

en

rempla?cant

A

par

son

expression

A

-LRB-

-RRB-

Il

est

donc

parfois

possible

de

r?eduire

la

taille

des

patrons

en

modifiant

la

longueur

des

colonnes

du

tableau

A

On

supposera

dans

tout

ce

paragraphe

que

T

est

une

puissance

de

deux

-LRB-

comme

c'est

le

cas

en

pratique

-RRB-

et

on

notera

T

En

notant

les

d?ecompositions

de

et

en

puissance

de

deux

impair

impair

-LRB-

avec

la

convention

li

si

-RRB-

on

a

alors

le

r?esultat

suivant

Proposition

-LCB-

Si

alors

il

est

possible

en

dilatant

les

colonnes

de

A

de

r?eduire

la

taille

du

patron

jusqu

a

une

page

-LCB-

Si

alors

il

est

possible

en

dilatant

les

colonnes

de

A

de

r?eduire

la

taille

du

patron

jusqu

a

min

-LRB-

r

-RRB-

pages

-LCB-

Dans

le

cas

o?u

il

est

possible

de

r?eduire

le

patron

jusqu

a

une

taille

de

k

pages

il

faut

pour

y

parvenir

dilater

les

colonnes

du

tableau

A

jusqu

a

la

taille

donn?ee

par

l'

equation

D?emonstration

T

etant

une

puissance

de

deux

il

en

sera

de

m

eme

pour

d

pgcd

-LRB-

A

T

-RRB-

On

cherche

donc

a

rendre

A

multiple

de

la

plus

grande

puissance

de

deux

possible

ce

qui

revient

a

chercher

N

N

N

et

l

Z

tels

que

l

-LRB-

-RRB-

avec

k

aussi

grand

que

possible

L'

egalit?e

-LRB-

-RRB-

peut

s

ecrire

l

-LRB-

-RRB-

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Or

si

on

note

D

pgcd

-LRB-

-RRB-

l'

equation

admet

des

solutions

ssi

est

un

multiple

de

D

Or

pour

k

suffisamment

grand

D

peut

prendre

toutes

les

valeurs

entre

et

et

l'

egalit?e

-LRB-

-RRB-

admet

des

solutions

tant

que

i

est

inf?erieur

a

Donc

si

il

y

aura

toujours

des

solutions

et

on

peut

augmenter

d

jusqu

a

T

ce

qui

correspond

a

des

patrons

d'une

page

Sinon

on

ne

pourra

aller

au

del?a

de

k

min

-LRB-

r

-RRB-

ce

qui

correspond

a

des

patrons

de

taille

min

-LRB-

r

-RRB-

pages

Etant

donn?e

une

valeur

de

k

fix?ee

-LRB-

et

r?ealisable

d'apr

es

le

crit?ere

pr?ec?edent

-RRB-

montrons

maintenant

quelle

dilatation

est

n?ecessaire

pour

obtenir

la

r?eduction

correspondante

des

patrons

On

cherche

le

plus

petit

N

qui

v?erifie

l'

equation

-LRB-

-RRB-

Notons

D

l'identit

e

de

B?ezout

associ?ee

a

-LRB-

-RRB-

Remarquons

que

D

-LRB-

k

-RRB-

et

que

d'apr

es

la

proposition

pr?ec?edente

on

a

toujours

min

-LRB-

k

-RRB-

donc

=D

est

entier

En

multipliant

l'identit

e

de

B?ezout

par

on

obtient

Les

solutions

de

l'

equation

-LRB-

-RRB-

sont

alors

donn?ees

par

N

u

l

v

j

o?u

j

Z

La

dilatation

minimale

permettant

cette

r?eduction

des

patrons

correspond

au

plus

petit

N

solution

et

sup?erieur

a

soit

N

u

avec

j

u

e

-LRB-

-RRB-

D'apr

es

la

proposition

il

existe

certains

cas

o?u

le

patron

n'est

pas

r?eductible

Par

exemple

si

est

pair

et

impair

-LRB-

on

a

alors

et

et

la

valeur

de

k

maximale

est

alors

z?ero

-RRB-

Cependant

dans

de

nombreux

cas

cette

m?ethode

permet

d'obtenir

des

r?esultats

int?eressants

comme

nous

allons

le

montrer

dans

le

cas

d'une

r?ef?erence

A

-LSB-

i

j

-RSB-

a

un

tableau

de

dimension

deux

Cas

d'une

r?ef?erence

du

type

A

-LSB-

i

j

-RSB-

Nous

allons

dans

ce

paragraphe

compl?eter

l'

etude

de

l'exemple

de

la

figure

-LRB-

a

-RRB-

-LRB-

b

-RRB-

-LRB-

c

-RRB-

commenc?ee

au

chapitre

Commen?cons

par

remarquer

que

dans

ce

cas

on

a

avec

les

notations

Chapitre

R?eduction

des

effets

du

faux-partage

du

th?eor?eme

A

C

M

B

M

c

donc

JJ

et

qu'en

cons?equence

les

notions

de

pav?e

et

de

patron

sont

confondues

dans

ce

cas

-LRB-

un

patron

ne

contient

qu'un

seul

pav?e

-RRB-

Dans

ce

cas

les

r?esultats

de

la

proposition

peuvent

etre

pr?ecis?es

Proposition

La

taille

des

patrons

peut

etre

divis?ee

par

-LRB-

tant

que

-RRB-

en

augmentant

la

taille

des

colonnes

du

tableau

A

de

moins

de

el?ements

-LRB-

on

rappelle

que

d

pgcd

-LRB-

M

T

-RRB-

et

t

Td

-RRB-

D?emonstration

Une

fois

lin?earis?ee

la

r?ef?erence

au

tableau

A

est

du

type

A

-LSB-

Mi

j

-RSB-

donc

et

on

est

donc

dans

le

cas

o?u

le

patron

peut

etre

r?eduit

jusqu

a

une

seule

page

Si

la

valeur

initiale

de

M

est

M

avec

pgcd

-LRB-

m

-RRB-

des

divisions

euclidiennes

successives

de

m

par

les

puissances

de

permettent

d'obtenir

l'encadrement

suivant

i

-LRB-

jr?i

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

m

ijr?i

En

allongeant

la

taille

des

colonnes

de

M

a

kjk

k

j

-LSB-

r?i

-RSB-

j

la

place

m?emoire

perdue

est

de

-LRB-

m

-RRB-

el?ements

par

colonnes

donc

de

-LRB-

m

-RRB-

N

octets

a

r?epartir

sur

les

caches

des

diff?erents

processeurs

La

nouvelle

taille

des

patrons

est

alors

de

i?k

Remarque

-LCB-

La

dilatation

maximale

-LRB-

k

r

i

-RRB-

correspond

a

la

nouvelle

taille

de

colonne

M

T

jk

C'est

le

cas

o?u

toutes

les

colonnes

sont

align?ees

sur

des

limites

de

page

-LCB-

En

fonction

de

la

place

disponible

en

m?emoire

locale

on

peut

appliquer

une

dilatation

correspondant

aux

diff?erentes

valeurs

de

k

dans

l'intervalle

j

-LSB-

r

i

-RSB-

j.

Remarque

D'apr

es

le

th?eor?eme

du

chapitre

la

r?eduction

de

la

taille

des

patrons

devrait

s

accompagner

d'une

r?eduction

du

nombre

de

conflits

m

eme

dans

le

cas

d'un

blocage

simple

de

la

boucle

-LRB-

sans

partitionnement

en

blocs

justifi?es

-RRB-

De

fa?con

plus

pr?ecise

la

dilatation

pr?ec?edente

devrait

r?eduire

le

nombre

de

pages

conflictuelles

de

N?dNt

e

a

c

Nous

allons

voir

sur

un

exemple

qu'en

fait

cette

am?elioration

n'est

que

de

peu

d'int

er

et

et

qu'il

faudra

l'accompagner

d'un

partitionnement

par

patrons

pour

la

rendre

efficace

Exemple

Si

le

programme

initial

traite

vecteurs

de

el?ements

sur

processeurs

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Nombre

d'

l?ments

ajout?s

Nombre

de

pages

conflictuelles

Taille

des

pav?s

Fig.

Dilatation

des

vecteurs

M

s

ecrit

et

on

obtient

successivement

m

Les

tailles

de

page

les

tailles

de

patrons

et

le

nombre

de

conflits

correspondant

a

chacun

de

ces

allongements

sont

donn?es

par

le

tableau

suivant

Allongement

20 52 180 436

M

1100 1104 1120 1152

1280 1536 2048

Espace

perdu

par

processeur

-LRB-

en

Koctets

-RRB-

Taille

du

patron

Nconf

l

996 984 968 875

La

figure

illustre

les

vitesses

de

r?eduction

de

la

taille

des

patrons

et

du

nombre

de

conflits

en

fonction

de

la

dilatation

des

vecteurs

-LRB-

courbe

semi-logaritmique

-RRB-

On

peut

donc

par

cette

m?ethode

soit

eliminer

tous

les

risques

de

conflits

par

un

allongement

maximum

dans

le

cas

o?u

la

place

disponible

dans

les

caches

est

suffisante

soit

le

r?eduire

en

se

fixant

une

limite

a

l'allongement

permis

La

dilatation

a

effectuer

pour

r?eduire

la

taille

des

patrons

d?epend

evidemment

de

la

taille

initiale

du

vecteur

mais

il

est

important

de

noter

que

quelle

que

soit

cette

taille

l'allongement

est

born?e

Pour

obtenir

une

taille

de

patron

de

i?k

l'allongement

est

de

-LRB-

m

-RRB-

k

el?ements

quelle

que

soit

la

valeur

initiale

de

M

Chapitre

R?eduction

des

effets

du

faux-partage

60 80 100 120

140 160 180

Nombre

d'

l?ments

ajout?s

Dilatation

des

colonnes

de

A

Nombre

de

pages

conflictuelles

Nombre

de

d?fauts

de

pages

Fig.

Effets

de

l'allongement

sur

le

nombre

de

d?efauts

de

pages

Or

on

a

vu

pr?ec?edemment

que

si

la

taille

des

vecteurs

n'est

pas

un

multiple

de

celle

de

la

page

-LRB-

auquel

cas

on

n

a

aucun

conflit

-RRB-

le

nombre

de

d?efauts

engendr?es

par

les

conflits

est

ind?ependant

de

la

taille

de

la

page

aux

effets

pr?es

d'un

eventuel

pav?e

incomplet

on

en

d?eduit

donc

que

si

l'allongement

de

vecteurs

diminue

le

nombre

de

conflits

il

est

quasiment

sans

effet

sur

le

nombre

r?eel

de

d?efauts

et

donc

sur

les

performances

du

programme

Des

mesures

exp?erimentales

effectu?ees

avec

les

donn?ees

de

l'exemple

pr?ec?edent

sur

processeurs

ont

permis

de

valider

ce

r?esultat

-LRB-

voir

figure

-RRB-

Si

la

dilatation

des

vecteurs

n'apporte

pas

seule

un

gain

en

performance

elle

a

n?eanmoins

l'avantage

de

opr?eparerAE

les

donn?ees

en

les

adaptant

a

la

structure

des

pages

Il

ne

reste

maintenant

plus

qu

a

partitionner

la

boucle

par

patrons

pour

parvenir

conjointement

a

une

elimination

du

faux-partage

doubl?ee

d'un

bon

equilibre

de

charge

La

m?ethode

de

pavage

que

nous

proposons

peut

donc

se

r?esumer

ainsi

Dans

un

premier

temps

on

dilate

le

tableau

pour

obtenir

des

tailles

de

patrons

suffisamment

petites

On

effectue

alors

une

ex?ecution

par

bloc

sur

les

patrons

Quelle

que

soit

la

dilatation

l'ex

ecution

par

patron

assure

qu'il

n

y

aura

pas

de

conflit

Plus

la

dilatation

est

importante

plus

les

patrons

seront

petits

donc

plus

les

charges

seront

equilibr?ees

On

voit

donc

que

les

performances

de

cette

m?ethode

seront

croissantes

avec

le

degr?e

de

dilatation

du

vecteur

il

n

y

a

donc

pas

de

compromis

a

analyser

il

suffit

d'effectuer

l'allongement

maximum

en

fonction

de

l'espace

disponible

en

m?emoire

Les

figures

et

permettent

de

voir

l'allure

des

performances

du

blocage

simple

et

du

pavage

sur

la

boucle

etudi?ee

et

de

comparer

leurs

comportements

Concernant

le

blocage

on

observe

les

effets

dus

aux

d?efauts

de

page

si

le

bloc

est

trop

petit

et

au

d?es?equilibre

de

charge

quand

le

bloc

est

trop

important

Il

faut

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

age

agep

ag

p

pe

gep

agep

agep

ag

a

p

ag

e

p

agep

e

j

i

D?coupage

initial

du

tableau

A

en

pages

Nouveau

patron

-LCB-

tape

Partitionnement

par

parons

tape

dilatation

des

colonnes

Espace

perdu

Patron

Fig.

Pavage

Utilisation

d'une

dilatation

de

vecteurs

pour

r?eduire

la

taille

des

patrons

et

ordonnancement

par

patrons

Chapitre

R?eduction

des

effets

du

faux-partage

Taille

des

blocs

Temps

d'ex

cution

Comparaison

Pavage

Blocage

Fig.

N

sur

processeurs

Taille

des

blocs

Temps

d'ex

cution

Comparaison

pavage

blocage

Fig.

N

sur

processeurs

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Taille

des

blocs

Speed-Up

Courbes

de

Speed-Up

Pavage

blocage

Fig.

Limitation

en

speed-up

du

blocage

N

sur

processeurs

noter

que

plus

le

nombre

de

vecteurs

a

traiter

est

faible

par

rapport

au

nombre

de

processeurs

plus

la

phase

de

d?es?equilibre

appara

t

t

ot

Sym?etriquement

plus

le

nombre

de

vecteurs

est

important

plus

les

effets

des

d?efauts

de

pages

se

font

sentir

m

eme

pour

des

grandes

tailles

de

bloc

Ce

comportement

laisse

pr?esager

une

limitation

en

speed-up

avec

ce

mode

de

parall?elisation

D'une

part

la

performance

optimale

r?esultant

d'un

compromis

se

situe

a

un

point

o?u

les

deux

effets

s

equilibrent

mais

ne

s

annulent

pas

-LRB-

voir

figure

-RRB-

D'autre

part

l'augmentation

du

nombre

de

processeurs

a

pour

effet

de

d?ecaler

ce

point

minimal

vers

les

petites

tailles

de

blocs

o?u

le

surco

ut

est

important

-LRB-

asymptotiquement

si

le

nombre

de

processeurs

est

egal

au

nombre

de

vecteurs

la

taille

de

bloc

optimale

est

egale

a

un

o?u

les

effets

des

conflits

sont

maximaux

-RRB-

Par

contre

les

courbes

de

performances

du

pavage

etant

croissantes

la

taille

optimale

des

blocs

est

toujours

la

plus

faible

r?ealisable

ce

qui

permet

d'esp

erer

une

limitation

moindre

en

speed-up

Les

exp?eriences

effectu?ees

avec

N

et

Minit

donnent

les

courbes

de

speed-up

de

la

figure

prouvant

cette

limitation

en

speed-up

du

blocage

par

rapport

au

pavage

Cas

de

boucles

contenant

plusieurs

r?ef?erences

en

ecritures

En

pratique

les

programmes

peuvent

contenir

plusieurs

r?ef?erences

en

ecriture

Ce

paragraphe

d?ecrit

les

techniques

pr?esent?ees

dans

-LSB-

-RSB-

pour

appliquer

un

partitionnement

justifi?e

dans

le

cas

de

plusieurs

r?ef?erences

en

ecriture

Nous

utilisons

pour

cela

les

notions

de

groupe

de

tableaux

et

de

groupe

de

r?ef?erences

Un

groupe

de

tableaux

est

un

ensemble

de

tableaux

poss?edant

les

m

emes

di

Chapitre

R?eduction

des

effets

du

faux-partage

Nombre

de

processeurs

Speed-Up

Courbes

de

Speed-Up

Pavage

blocage

Fig.

N

Comparaison

des

Speed-up

du

pavage

et

du

blocage

simple

mensions

les

m

emes

tailles

d'

el?ements

et

le

m

eme

alignement

sur

les

pages

Un

groupe

de

r?ef?erences

est

un

ensemble

de

r?ef?erences

qui

d'une

part

acc?edent

en

ecriture

a

des

tableaux

appartenant

a

un

m

eme

groupe

et

d'autre

part

poss?edent

les

m

emes

fonctions

d'acc

es

Par

exemple

dans

le

cas

du

nid

de

boucle

les

ecritures

sur

les

tableaux

ZU

et

ZV

utilisent

la

m

eme

fonction

d'acc

es

si

l'on

suppose

que

ces

deux

tableaux

appartiennent

au

m

eme

groupe

alors

il

en

va

de

m

eme

pour

les

r?ef?erences

En

g?en?eral

on

ne

trouve

que

peu

de

groupes

de

r?ef?erences

a

l'int

erieur

d'un

m

eme

nid

de

boucle

particuli?erement

dans

le

cas

o?u

les

tableaux

sont

par

d?efaut

align?es

sur

les

bornes

de

pages

La

particularit?e

fondamentale

d'un

groupe

de

r?ef?erences

est

que

les

r?ef?erences

qu'il

contient

parcourent

la

m?emoire

a

la

m

eme

vitesse

et

traversent

les

bornes

de

pages

au

m

eme

instant

En

cons?equence

ces

r?ef?erences

poss?edent

les

m

emes

propri?et?es

li?ees

au

faux-partage

Une

partition

qui

eliminerait

le

faux-partage

pour

une

des

r?ef?erences

d'un

groupe

G

l'

eliminerait

egalement

pour

toutes

les

r?ef?erences

de

G

Si

le

nid

ne

comporte

qu'un

seul

groupe

on

est

donc

ramen?e

au

cas

d'une

seule

r?ef?erence

Supposons

maintenant

que

le

nid

comporte

plusieurs

groupes

distincts

si

la

distribution

de

boucles

est

l?egale

-LSB-

-RSB-

on

peut

alors

distribuer

le

nid

de

fa?con

a

ce

que

chaque

boucle

ne

contienne

qu'un

seul

groupe

de

r?ef?erence

A

priori

une

synchronisation

est

alors

n?ecessaire

entre

les

diff?erentes

boucles

Nous

d?ecrivons

au

paragraphe

certains

cas

o?u

elles

peuvent

etre

elimin?ees

Lorsque

la

distribution

de

boucle

n'est

pas

l?egale

la

solution

que

nous

pr?econisons

est

de

ne

s

int?eresser

qu

a

un

seul

groupe

dans

un

premier

temps

puis

de

r?eduire

les

effets

du

faux-partage

sur

les

autres

groupes

en

appliquant

la

technique

de

regroupement

des

ecritures

pr?ec?edemment

d?ecrite

au

paragraphe

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

Nid

Nid

de

boucle

du

noyau

de

Lawrence

Livermore

DO

TO

DO

TO

RZU

ZU

-LSB-

-RSB-

ZU

-LSB-

-RSB-

S

-LRB-

ZA

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RSB-

ZZ

-LSB-

-RSB-

-RRB-

-RRB-

ZA

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RSB-

ZZ

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RSB-

ZZ

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RRB-

ZZ

-LSB-

-RRB-

-RRB-

-RRB-

RZV

ZV

-LSB-

-RSB-

ZV

-LSB-

-RSB-

S

-LRB-

ZA

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

ZA

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

-RRB-

END

DO

END

DO

Nous

rappelons

que

cette

technique

qui

n

elimine

pas

le

faux

partage

mais

r?eduit

seulement

le

ph?enom?ene

de

ping-pong

poss?ede

l'avantage

d'

etre

applicable

sans

condition

Les

exp?eriences

que

nous

avons

effectu?ees

sur

l'exemple

du

nid

de

boucle

-LRB-

voir

le

chapitre

-RRB-

montrent

le

bon

comportement

de

cette

strat?egie

hybride

R?eduction

des

synchronisations

entre

nids

de

boucles

Nous

pr?esentons

dans

ce

paragraphe

les

implications

de

la

technique

de

partitionnement

justifi?e

sur

la

r?eduction

du

nombre

de

synchronisations

A

priori

lorsque

deux

nids

de

boucles

pr?esentent

une

d?ependance

quelconque

-LRB-

la

source

de

la

d?ependance

etant

dans

le

premier

nid

et

son

but

dans

le

second

-RRB-

une

barri?ere

de

synchronisation

est

n?ecessaire

entre

les

deux

nids

pour

assurer

la

validit?e

de

l'ex

ecution

parall?ele

-LRB-

on

parle

alors

de

ocross

loop

dependenceAE

-RRB-

La

multiplication

de

ces

barri?eres

est

evidemment

un

frein

aux

performances

du

programme

Nous

montrons

ici

que

l'utilisation

du

partitionnement

justifi?e

parce

qu'il

exploite

l'affinit

e

entre

les

processeurs

et

les

pages

entre

dans

les

hypoth?eses

de

la

technique

de

r?eduction

des

synchronisations

pr?esent?ee

par

O'Boyle

et

al.

-LSB-

-RSB-

En

utilisant

la

m

eme

association

entre

pages

et

processeurs

pour

tous

les

nids

de

boucle

on

garantit

que

la

source

et

le

but

des

d?ependances

entre

boucles

seront

ex?ecut?es

par

le

m

eme

processeur

ce

qui

rend

une

barri?ere

de

synchronisation

inutile

La

raison

est

la

m

eme

que

dans

le

cas

d'un

partitionnement

des

donn?ees

-LRB-

dans

le

cadre

d'HPF

par

exemple

-RRB-

avec

la

particularit?e

que

la

distribution

-LRB-

et

l'affinit

e

-RRB-

a

lieu

au

niveau

des

pages

Les

trois

paragraphes

suivants

pr?esentent

suivant

le

type

de

d?ependance

les

cas

o?u

l'on

peut

ainsi

se

passer

de

synchronisations

puis

nous

pr?esentons

un

exemple

d'application

Chapitre

R?eduction

des

effets

du

faux-partage

Cas

d'une

d?ependance

ecrivain

ecrivain

Consid?erons

les

deux

nids

de

boucles

suivants

pr?esentant

une

d?ependance

ecrivain

ecrivain

de

vers

Nid

DO

TO

U

DO

TO

U

A

-LSB-

-LRB-

-RRB-

-RSB-

END

DO

END

DO

DO

TO

DO

TO

A

-LSB-

-LRB-

-RRB-

-RSB-

END

DO

END

DO

Aucune

synchronisation

n'est

n?ecessaire

pour

respecter

cette

d?ependance

si

on

effectue

un

partitionnement

justifi?e

utilisant

la

m

eme

association

entre

pages

et

processeurs

pour

les

deux

nids

de

boucles

En

effet

si

deux

it?erations

-LRB-

une

par

nid

-RRB-

r?ef?erencent

un

m

eme

el?ement

du

tableau

A

alors

elles

seront

effectu?ees

par

le

m

eme

processeur

et

seront

donc

implicitement

s?equentialis?ees

ce

qui

assure

la

validit?e

de

l'ex

ecution

Cas

d'une

d?ependance

ecrivain-lecteur

Consid?erons

maintenant

les

deux

nids

de

boucles

suivants

pr?esentant

une

d?ependance

ecrivain-lecteur

de

vers

Nid

DO

TO

U

DO

TO

U

A

-LSB-

-LRB-

-RRB-

-RSB-

END

DO

END

DO

DO

TO

DO

TO

B

-LSB-

-LRB-

-RRB-

-RSB-

A

-LSB-

-LRB-

-RRB-

-RSB-

END

DO

END

DO

Une

barri?ere

de

synchronisation

est

n?ecessaire

entre

les

deux

boucles

a

moins

que

les

trois

conditions

suivantes

soient

v?erifi?ees

-LRB-

-RRB-

-LRB-

-RRB-

Les

tableaux

A

et

B

appartiennent

au

m

eme

groupe

de

tableaux

Cas

des

nids

de

boucles

non

parfaitement

parall?eles

-LRB-

-RRB-

On

effectue

un

partitionnement

justifi?e

bas?e

sur

les

ecritures

et

utilisant

la

m

eme

association

entre

pages

et

processeurs

pour

les

deux

nids

de

boucles

Les

deux

premi?eres

conditions

assurent

que

le

parcours

des

pages

est

equivalent

pour

l'acc

es

en

lecture

de

et

l'acc

es

en

ecriture

de

ce

qui

nous

ram?ene

au

cas

pr?ec?edent

Cas

d'une

d?ependance

lecteur

ecrivain

Consid?erons

maintenant

les

deux

nids

de

boucles

suivants

pr?esentant

une

d?ependance

lecteur

ecrivain

de

vers

Nid

DO

TO

U

DO

TO

U

B

-LSB-

-LRB-

-RRB-

-RSB-

A

-LSB-

-LRB-

-RRB-

-RSB-

END

DO

END

DO

DO

TO

DO

TO

A

-LSB-

-LRB-

-RRB-

-RSB-

END

DO

END

DO

Une

barri?ere

de

synchronisation

est

n?ecessaire

entre

les

deux

boucles

a

moins

que

les

trois

conditions

suivantes

soient

v?erifi?ees

-LRB-

-RRB-

-LRB-

-RRB-

Les

tableaux

A

et

B

appartiennent

au

m

eme

groupe

de

tableaux

-LRB-

-RRB-

On

effectue

un

partitionnement

justifi?e

bas?e

sur

les

ecritures

et

utilisant

la

m

eme

association

entre

pages

et

processeurs

pour

les

deux

nids

de

boucles

Les

deux

premi?eres

conditions

assurent

que

le

parcours

des

pages

est

equivalent

pour

l'acc

es

en

lecture

de

et

l'acc

es

en

ecriture

de

ce

qui

nous

ram?ene

au

premier

cas

Exemple

On

s

int?eresse

au

comportement

des

deux

nids

de

boucles

de

la

figure

Il

existe

une

d?ependance

ecrivain-lecteur

entre

les

instructions

et

de

ces

deux

nids

caract?eris?ee

par

le

vecteur

ffi

Supposons

que

l'on

partitionne

les

it?erations

de

chaque

nid

de

mani?ere

classique

par

exemple

en

distribuant

aux

processeurs

des

blocs

d'it

erations

de

taille

Chapitre

R?eduction

des

effets

du

faux-partage

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

A

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

xpage

x

x

x

x

x

ypage

y

y

y

y

y

xpage

x

x

x

x

x

BAdDO

TO

DO

TO

A

-LSB-

-RSB-

END

DO

END

DO

TO

DO

TO

B

-LSB-

-RSB-

A

-LSB-

-RSB-

END

DO

END

DO

Fig.

Elimination

du

faux-partage

et

inutilit?e

d'une

synchronisation

dans

le

cas

de

partitionnement

justifi?e

utilisant

la

m

eme

association

entre

pages

et

processeurs

Exemple

les

pages

contiennent

trois

el?ements

on

partitionne

par

blocs

d'une

page

sur

deux

processeurs

N

=P

ou

N

est

la

taille

du

probl?eme

et

P

le

nombre

de

processeurs

Alors

dans

le

cas

de

deux

processeurs

l'

ecriture

de

l'

el?ement

A

-LSB-

-RSB-

-LRB-

instruction

-RRB-

serait

faite

par

le

processeur

et

la

lecture

de

cet

el?ement

-LRB-

instruction

-RRB-

serait

faite

par

le

processeur

Une

barri?ere

de

synchronisation

serait

donc

indispensable

Supposons

maintenant

que

l'on

effectue

dans

chaque

cas

un

partitionnement

justifi?e

utilisant

la

m

eme

association

entre

pages

et

processeurs

Alors

comme

nous

l'avons

vu

la

source

et

le

but

de

la

d?ependance

seraient

alors

ex?ecut?es

par

le

m

eme

processeur

comme

on

peut

le

voir

sur

la

figure

Une

synchronisation

est

alors

inutile

Conclusions

Nous

avons

pr?esent?e

dans

ce

chapitre

plusieurs

m?ethodes

permettant

de

r?eduire

les

effets

du

faux-partage

dans

un

nid

de

boucle

La

premi?ere

m?ethode

ne

cherche

pas

a

eliminer

le

faux-partage

mais

seulement

a

eviter

l'occurrence

d'un

effet

ping-pong

Cette

m?ethode

tr?es

simple

a

mettre

en

oeuvre

et

tr?es

g?en?eralement

applicable

permet

de

traiter

les

nombreux

cas

o?u

le

partitionnement

en

blocs

justifi?es

ne

peut

etre

appliqu?e

Cette

seconde

m?ethode

plus

complexe

a

mettre

en

oeuvre

et

n?ecessitant

davantages

d'hypoth

eses

elimine

tout

risque

de

faux-partage

Nous

avons

montr?e

comment

l'appliquer

dans

le

cas

de

nids

de

boucles

parall?eles

et

nous

avons

fourni

quelques

el?ements

de

r?eponse

dans

le

cas

o?u

le

nid

n'est

pas

parfaitement

parall?ele

Afin

de

trouver

un

compromis

entre

l'

elimination

du

faux-partage

et

l'

equilibre

des

charges

entre

les

processeurs

nous

avons

propos?e

deux

m?ethodes

la

premi?ere

consiste

a

effectuer

d'abord

un

partitionnement

par

patrons

puis

a

d?ecouper

ceux-ci

jusqu

a

obtenir

un

equilibre

des

charges

correct

Les

effets

du

faux-partage

occasionn?e

par

ce

d?ecoupage

peuvent

alors

etre

att?enu?es

a

l'aide

d'un

regroupement

des

op?erations

d'

ecriture

La

seconde

consiste

a

pr?eparer

les

donn?ees

avant

d'effectuer

le

partitionnement

Dans

le

cas

d'un

acc?es

a

un

tableau

multidimensionnel

il

est

possible

par

des

dilatations

du

tableau

de

r?eduire

la

taille

des

patrons

et

d'am

eliorer

ainsi

l'

equilibrage

des

charges

lors

d'une

ex?ecution

par

blocs

justifi?es

Le

chapitre

suivant

pr?esente

une

m?ethode

plus

globale

de

transformation

de

programme

pour

MVP

incluant

le

cas

des

nids

contenant

plusieurs

acc?es

a

des

tableaux

diff?erents

et

des

d?ependances

entre

ceux-ci

Chapitre

R?eduction

des

effets

du

faux-partage

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

Les

performances

d'un

calculateur

parall?ele

sont

principalement

limit?ees

par

le

volume

de

communication

entre

les

processeurs

Afin

d'utiliser

le

plus

efficacement

possible

tous

les

processeurs

disponibles

il

faut

alors

soit

am?eliorer

la

qualit?e

du

traffic

-LRB-

augmenter

la

masse

de

communications

possibles

physiquement

et

en

assurer

la

rapidit?e

-RRB-

soit

modifier

les

programmes

parall?eles

pour

r?eduire

le

nombre

de

communications

n?ecessaires

et

ainsi

r?eduire

le

traffic

Les

transformations

de

programmes

ont

pour

but

d'une

part

d'augmenter

le

parall?elisme

d'un

programme

en

limitant

les

d?ependances

entre

les

instructions

trait?ees

par

des

processeurs

diff?erents

et

d'autre

part

de

mettre

en

ad?equation

les

donn?ees

r?ef?erenc?ees

par

une

s?equence

d'instructions

du

programme

avec

l'organisation

de

la

m?emoire

Plus

pr?ecis?ement

les

performances

d'un

syst?eme

comportant

une

m?emoire

a

temps

d'acc

es

non

uniforme

-LRB-

m?emoire

hi?erarchique

caches

MVP

etc.

-RRB-

d?ependent

largement

des

propri?et?es

de

localit?e

temporelle

et

de

localit?e

spatiale

De

ce

fait

l'

etude

de

la

localit?e

des

programmes

est

devenue

un

domaine

de

recherche

tr?es

actif

depuis

le

d?ebut

des

ann?ees

Cette

etude

comporte

deux

phases

principales

-LRB-

-RRB-

L'am

elioration

de

la

localit?e

par

transformation

de

programmes

-LRB-

on

red?efinit

l'ordre

d'ex

ecution

des

boucles

pour

modifier

l'ordre

des

r?ef?erences

aux

donn?ees

et

donc

les

propri?et?es

de

localit?e

-RRB-

-LRB-

-RRB-

L'exploitation

de

la

localit?e

dans

le

cas

o?u

les

transferts

de

donn?ees

doivent

etre

g?er?es

explicitement

il

faut

veiller

a

conserver

en

m?emoire

rapide

une

donn?ee

qui

sera

a

nouveau

utilis?ee

prochainement

pour

exploiter

la

localit?e

temporelle

ou

charger

en

m?emoire

rapide

les

voisins

d'une

donn?ee

r?ef?erenc?ee

pour

exploiter

la

localit?e

spatiale

Apr?es

avoir

rappel?e

a

la

section

les

principaux

outils

utilis?es

pour

repr?esenter

la

localit?e

nous

montrons

dans

la

section

comment

adapter

la

d?efinition

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

des

vecteurs

de

localit?e

spatiale

au

cas

des

MVP

et

les

int?egrer

a

la

m?ethode

des

treillis

d?ecrite

a

la

partie

Nous

insisterons

sur

l'impact

de

cette

m?ethode

sur

l'optimisation

des

codes

engendr?es

par

l'am

elioration

de

la

convexit?e

des

boucles

La

section

propose

les

grandes

lignes

d'une

m?ethode

plus

g?en?erale

de

transformation

de

programme

visant

a

optimiser

la

localit?e

dans

le

cas

de

machines

a

m?emoire

virtuelle

partag?ee

La

section

illustre

l'application

de

cette

m?ethode

au

cas

complexe

d'une

boucle

a

trois

dimensions

contenant

un

acc?es

en

ecriture

et

deux

en

lecture

et

contenant

plusieurs

directions

de

r?eutilisations

contradictoires

Localit?e

De

nombreuses

contributions

ont

et?e

apport?ees

au

probl?eme

de

la

localit?e

dans

le

cas

de

nids

de

boucles

ne

comportant

que

des

acc?es

affines

a

des

tableaux

Cependant

elles

concernent

le

plus

souvent

la

gestion

des

caches

-LSB-

-RSB-

ou

se

restreignent

au

seul

cas

des

machines

monoprocesseurs

-LSB-

-RSB-

ce

qui

rend

leur

utilisation

difficilement

compatible

avec

nos

hypoth?eses

En

effet

dans

le

cas

d'une

MVP

si

l'augmentation

du

parall?elisme

et

l'exploitation

de

la

localit?e

temporelle

doivent

rester

un

souci

constant

la

localit?e

spatiale

tient

une

place

de

tout

premier

ordre

D'une

part

parce

que

son

exploitation

est

automatique

-LRB-

en

raison

du

transfert

par

page

une

donn?ee

est

syst?ematiquement

transf?er?ee

avec

ses

voisins

-RRB-

et

d'autre

part

parce

qu'elle

est

intimement

li?ee

au

probl?eme

du

faux

partage

-LRB-

ne

pas

faire

en

sorte

qu'un

m

eme

processeur

acc?ede

aux

voisins

d'une

donn?ee

c'est

courir

le

risque

que

plusieurs

processeurs

acc?edent

a

une

m

eme

page

-RRB-

Localit?e

temporelle

r?eutilisation

de

donn?ees

L'

etude

des

r?eutilisations

de

donn?ees

dans

un

nid

de

boucle

est

analogue

a

la

recherche

des

d?ependances

-LSB-

-RSB-

Toute

d?ependance

de

donn?ees

correspondant

a

une

r?eutilisation

d?es

lors

que

l'on

ajoute

aux

d?ependances

classiques

ecrivain

ecrivain

-LRB-

ooutput

dependenceAE

-RRB-

ecrivain-lecteur

-LRB-

oflow

dependenceAE

-RRB-

lecteur

ecrivain

-LRB-

oanti

dependenceAE

-RRB-

la

d?ependance

lecteur-lecteur

-LRB-

oinput

dependenceAE

-RRB-

-LSB-

-RSB-

Divers

outils

math?ematiques

ont

et?e

d?evelopp?es

pour

caract?eriser

les

r?eutilisations

-LRB-

ou

les

d?ependances

-RRB-

parmi

lesquels

les

vecteurs

de

r?eutilisations

ou

de

d?ependance

-LSB-

-RSB-

les

c

ones

de

d?ependances

-LSB-

-RSB-

les

fen

etres

de

r?ef?erences

-LSB-

-RSB-

les

vecteurs

distance

de

d?ependance

-LSB-

-RSB-

Rappelons

simplement

qu

etant

donn?e

une

it?eration

i

r

est

un

vecteur

de

r?eutilisation

si

l'it

eration

i

r

r?ef?erence

une

donn?ee

utilis?ee

a

l'it

eration

i

et

que

ces

vecteurs

peuvent

etre

d?etermin?es

simplement

dans

le

cas

de

r?ef?erences

affines

comme

une

base

du

noyau

de

l'application

lin?eaire

associ?ee

-LSB-

-RSB-

Localit?e

Localit?e

spatiale

L'exploitation

de

la

localit?e

spatiale

rev

et

une

importance

plus

capitale

encore

dans

le

cas

des

MVP

que

dans

celui

des

m?emoires

hi?erarchiques

En

effet

a

cause

de

la

coh?erence

forte

sur

les

pages

un

acc?es

en

ecriture

a

un

tableau

qui

n'aurait

pas

lieu

dans

le

sens

des

pages

provoquerait

non

seulement

dans

ce

cas

des

acc?es

lents

a

la

m?emoire

-LRB-

un

transfert

de

page

par

acc?es

au

lieu

d'acc

es

dans

des

pages

locales

-RRB-

mais

egalement

des

conflits

d'acc

es

a

ces

pages

qui

risqueraient

de

s?equentialiser

totalement

le

programme

comme

on

l'

a

montr?e

au

chapitre

De

plus

l'exploitation

de

la

localit?e

spatiale

etant

automatique

et

n'engendrant

pas

de

co

ut

suppl?ementaire

a

la

gestion

-LRB-

les

transferts

ayant

lieu

par

page

dans

tous

les

cas

-RRB-

on

a

tout

int?er

et

a

modifier

quand

c'est

possible

l'ordre

des

nids

de

boucles

de

mani?ere

a

acc?eder

aux

donn?ees

odans

la

direction

des

pagesAE

Une

direction

de

localit?e

spatiale

peut

etre

d?efinie

de

mani?ere

analogue

aux

directions

de

localit?e

temporelle

-LSB-

-RSB-

dans

le

cas

d'acc

es

lin?eaires

H

-LRB-

-RRB-

-LRB-

-LRB-

-RRB-

hp

-LRB-

-RRB-

-RRB-

a

un

tableau

de

dimension

p

la

direction

de

localit?e

spatiale

correspond

au

noyau

Ker

-LRB-

H

-RRB-

o?u

H

est

obtenue

a

partir

de

H

en

rempla?cant

la

fonction

d'acc

es

hi

-LRB-

-RRB-

correspondant

a

la

dimension

principale

du

tableau

-LRB-

celle

selon

laquelle

des

el?ements

cons?ecutifs

du

tableau

sont

stock?es

a

des

adresses

voisines

-RRB-

par

la

fonction

affine

nulle

En

ce

qui

nous

concerne

c'est

la

dimension

suivant

laquelle

le

tableau

est

stock?e

dans

les

pages

de

la

MVP

La

notion

de

direction

de

localit?e

spatiale

est

souvent

raffin?ee

-LSB-

-RSB-

afin

de

r?eduire

le

pas

d'acc

es

dans

la

direction

de

localit?e

on

cherche

alors

une

base

du

noyau

constitu?ee

de

vecteurs

minimisant

hi

-LRB-

-RRB-

Ceci

a

pour

but

de

limiter

le

pas

d'acc

es

dans

la

direction

de

localit?e

ce

qui

s

av?ere

essentiel

dans

le

cas

des

caches

du

fait

de

la

faible

taille

des

lignes

de

cache

Nous

verrons

dans

ce

chapitre

que

cette

contrainte

suppl?ementaire

peut

etre

a

l'origine

de

probl?emes

de

convexit?e

dans

les

boucles

ce

qui

ralentit

leur

gestion

Dans

le

cas

de

la

MVP

les

pages

etant

de

grande

taille

la

minimisation

du

pas

est

moins

importante

au

contraire

le

risque

de

faux

partage

sur

les

bornes

de

page

nous

oblige

comme

on

l'

a

vu

au

paragraphe

a

assurer

une

fr?equence

elev?ee

des

ecritures

donc

a

tenter

de

minimiser

les

co

uts

de

gestion

des

boucles

C'est

pourquoi

nous

proposons

dans

ce

chapitre

une

adaptation

de

la

d?efinition

des

vecteurs

de

localit?e

spatiale

ainsi

qu'une

m?ethode

bas?ee

sur

l'utilisation

des

treillis

et

la

fusion

des

boucles

permettant

de

r?eduire

le

probl?eme

de

non

convexit?e

tout

en

profitant

d'un

pas

minimal

L'utilisation

d'une

MVP

n'introduisant

pas

de

nouveaut?e

dans

la

d?efinition

et

la

recherche

des

vecteurs

de

r?eutilisation

et

de

localit?e

temporelle

nous

nous

contenterons

dans

ce

chapitre

d'utiliser

les

d?efinitions

ci-dessus

et

d'admettre

qu'elles

nous

permettent

de

d?eterminer

les

vecteurs

souhait?es

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

Construction

d'une

transformation

am?elio

rant

la

localit?e

Le

but

de

ce

paragraphe

est

de

pr?eciser

la

d?efinition

des

vecteurs

de

localit?e

spatiale

dans

le

cas

d'une

MVP

et

de

montrer

qu'une

fois

lib?er?e

de

la

contrainte

d'unimodularit

e

il

est

possible

en

partitionnant

le

domaine

d'it

eration

en

treillis

de

trouver

une

matrice

de

transformation

de

programme

l?egale

permettant

-LCB-

De

profiter

des

r?eutilisations

de

donn?ees

-LCB-

D'exploiter

la

localit?e

spatiale

d'un

nid

de

boucles

-LCB-

De

r?eduire

le

co

ut

de

gestion

des

boucles

en

limitant

le

nombre

de

tests

conditionnels

dus

a

la

non

convexit?e

de

l'image

du

domaine

d'it

eration

Hypoth?eses

Dans

un

premier

temps

nous

allons

nous

restreindre

au

cas

o?u

le

nid

de

boucles

est

parfaitement

imbriqu?e

normalis?e

en

et

ne

contient

qu'un

seul

acc?es

-LRB-

en

ecriture

-RRB-

a

un

tableau

Les

seules

d?ependances

possibles

du

programme

sont

donc

de

type

oself-output-dependenceAE

-LRB-

cf

-LSB-

-RSB-

-RRB-

Nous

verrons

au

paragraphe

suivant

comment

g?en?eraliser

ces

r?esultats

a

un

cadre

plus

g?en?eral

Nous

nous

int?eresserons

donc

au

nid

de

boucle

suivant

Nid

Do

Do

in

uin

A

-LSB-

-LRB-

i

-RRB-

hp

-LRB-

i

-RRB-

-RSB-

EndDo

EndDo

Nous

faisons

en

outre

sur

les

bornes

de

boucles

des

hypoth?eses

analogues

a

celles

du

th?eor?eme

de

la

partie

j

-LSB-

n

-RSB-

j

uij

peut

etre

-LRB-

-RRB-

une

fonction

affine

en

ij

-LRB-

-RRB-

une

fonction

plafond

ou

plancher

d'expressions

de

type

pr?ec?edent

-LRB-

-RRB-

un

minimum

ou

un

maximum

d'expressions

de

type

ou

j

-LSB-

p

-RSB-

j

hi

est

une

application

affine

de

Zn

dans

Z.

On

note

H

l'application

lin?eaire

associ?ee

a

l'application

affine

-LRB-

-LRB-

-RRB-

hp

-LRB-

-RRB-

-RRB-

de

Zn

dans

Zp

et

on

note

r

son

rang

On

suppose

de

plus

que

le

tableau

A

est

m?emoris?e

par

colonnes

-LRB-

dans

l'ordre

du

premier

indice

-RRB-

dans

les

pages

de

la

MVP

Construction

d'une

transformation

am?eliorant

la

localit?e

Choix

des

vecteurs

de

localit?e

Les

techniques

classiques

d'analyse

de

d?ependances

permettent

de

d?eterminer

les

vecteurs

de

r?eutilisations

-LRB-

ou

de

fa?con

equivalente

dans

notre

cas

les

vecteurs

de

d?ependance

producteur-producteur

-RRB-

de

la

boucle

comme

une

base

du

noyau

de

l'application

H.

On

obtient

ainsi

n

r

vecteurs

not?es

dn?r

La

direction

de

localit?e

spatiale

est

d?efinie

comme

l'ensemble

de

tous

les

vecteurs

s

tels

que

H

-LRB-

s

-RRB-

soit

non

nul

et

appartienne

a

la

dimension

principale

du

tableau

A

i.e.

tels

que

H

-LRB-

s

-RRB-

-LRB-

ff

-RRB-

avec

non

nul

La

direction

de

localit?e

spatiale

peut

donc

etre

d?etermin?ee

en

pratique

comme

l'ensemble

des

el?ements

v?erifiant

s

Ker

-LRB-

H

-RRB-

-LRB-

s

-RRB-

-LRB-

-RRB-

o?u

l'application

H

est

obtenue

a

partir

de

H

en

rempla?cant

sa

premi?ere

composante

par

l'application

nulle

Il

est

important

de

noter

qu'il

n'en

existe

pas

toujours

-LRB-

dans

le

cas

o?u

le

noyau

de

H

est

r?eduit

a

par

exemple

-RRB-

Dans

le

cas

des

caches

on

cherche

alors

a

d?eterminer

le

vecteur

de

localit?e

spatiale

s

tel

que

le

coefficient

soit

le

plus

petit

possible

Consid?erons

la

r?ef?erence

A

-LSB-

-RSB-

du

nid

de

boucle

H

est

alors

d?efinie

par

H

-LRB-

-RRB-

-LRB-

-RRB-

Tous

les

vecteurs

v?erifiant

appartiennent

donc

a

la

direction

de

localit?e

spatiale

c'est

par

exemple

le

cas

de

-LRB-

-RRB-

et

de

-LRB-

-RRB-

Cependant

-LRB-

-RRB-

tandis

que

-LRB-

-RRB-

Ce

qui

signifie

que

si

le

nid

de

boucle

est

transform?e

de

mani?ere

a

rendre

interne

la

direction

de

les

acc?es

auront

lieu

dans

la

direction

de

localit?e

avec

un

pas

de

alors

qu'il

serait

de

dans

le

cas

de

La

r?eutilisation

spatiale

est

alors

d'autant

meilleure

que

ce

coefficient

est

petit

Dans

le

cas

des

caches

la

r?eutilisation

spatiale

est

m

eme

nulle

si

ce

coefficient

est

plus

grand

que

la

taille

de

la

ligne

de

cache

Nid

Do

Do

Do

A

-LSB-

-RSB-

EndDo

EndDo

EndDo

Cependant

cette

d?efinition

se

heurte

au

probl?eme

de

la

convexit?e

de

l'image

de

l'espace

d'it

eration

par

la

fonction

H

Afin

de

tirer

partie

de

la

localit?e

temporelle

on

cherche

g?en?eralement

a

transformer

le

nid

de

boucle

de

telle

sorte

que

les

boucles

externes

parcourent

l'image

du

domaine

initial

et

que

les

boucles

internes

n'effectuent

que

des

r?eutilisations

de

ces

points

Si

l'image

du

domaine

initial

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

n'est

pas

convexe

les

boucles

externes

du

nid

transform?e

ne

le

seront

donc

pas

non

plus

-LRB-

elles

contiendront

des

otrousAE

-RRB-

On

a

vu

au

chapitre

que

ce

probl?eme

pouvait

etre

r?esolu

en

utilisant

un

partitionnement

en

treillis

on

va

donc

chercher

a

adapter

la

d?efinition

du

vecteur

de

localit?e

de

sorte

qu'il

d?efinisse

un

treillis

sur

lequel

le

domaine

soit

convexe

Le

domaine

d'it

eration

etant

l'intersection

entre

un

poly?edre

convexe

et

un

treillis

entier

il

est

naturel

de

distinguer

deux

causes

de

non

convexit?e

dans

l'image

de

ce

domaine

par

H

-LCB-

La

boucle

ayant

et?e

normalis?ee

a

l'image

du

domaine

d'it

eration

sera

toujours

une

partie

de

l'image

de

Nn

La

premi?ere

cause

de

non

convexit?e

peut

donc

etre

un

d?efaut

de

convexit?e

de

l'image

de

Nn

-LCB-

Des

probl?emes

suppl?ementaires

peuvent

etre

dus

aux

bornes

sup?erieures

des

boucles

-LRB-

certains

points

appartiennent

a

l'image

oalg?ebriqueAE

par

H

mais

ne

sont

pas

atteints

avant

les

bornes

des

boucles

-RRB-

La

seconde

cause

est

plus

difficile

a

appr?ehender

car

les

bornes

sup?erieures

peuvent

etre

de

formes

assez

complexes

alors

que

la

convention

de

normalisation

a

z?ero

pour

les

bornes

inf?erieures

facilite

la

r?esolution

de

la

premi?ere

Nous

nous

contenterons

donc

de

nous

int?eresser

a

celle-ci

Si

comme

c'est

le

cas

pour

le

vecteur

on

choisit

un

vecteur

de

localit?e

S

qui

ne

soit

pas

compl?etement

positif

-LRB-

tous

les

coefficients

positifs

-RRB-

un

nuplet

-LCB-

de

Nn

peut

etre

tel

que

-LCB-

S

n'appartienne

pas

a

Nn

Consid?erons

l'exemple

de

la

figure

qui

repr?esente

l'image

des

el?ements

du

tableau

A

acc?ed?es

par

la

boucle

Les

points

-LRB-

-RRB-

et

-LRB-

-RRB-

sont

atteints

respectivement

aux

it?erations

-LRB-

-RRB-

et

-LRB-

-RRB-

Comment

expliquer

que

les

points

interm?ediaires

-LRB-

-RRB-

et

-LRB-

-RRB-

ne

le

soient

pas

alors

que

le

vecteur

v?erifie

H

-LRB-

-RRB-

-LRB-

-RRB-

ce

qui

devrait

assurer

un

parcours

par

pas

de

suivant

la

premi?ere

direction

de

l'espace

image

En

fait

ces

points

appartiennent

effectivement

a

l'image

alg?ebrique

de

H

-LRB-

-RRB-

H

-LRB-

-RRB-

-LRB-

-RRB-

H

-LRB-

-RRB-

et

ces

points

se

d?eduisent

bien

de

-LRB-

-RRB-

par

translation

de

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

Mais

n

etant

pas

compl?etement

positif

ces

points

ne

sont

pas

dans

et

n'ont

donc

aucune

chance

d'

etre

dans

l'espace

d'it

eration

De

ce

fait

une

transformation

de

boucle

visant

a

rendre

interne

la

direction

de

H

-LRB-

-RRB-

conduirait

a

un

parcours

non

convexe

comme

le

montre

la

figure

La

boucle

a

et?e

etudi?ee

par

Jalby

et

al.

-LSB-

-RSB-

et

reprise

dans

l'article

-LSB-

-RSB-

La

non

convexit?e

de

l'ensemble

des

Construction

d'une

transformation

am?eliorant

la

localit?e

I

J

H

-LRB-

-RRB-

H

-LRB-

-RRB-

H

-LRB-

-RRB-

H

-LRB-

-RRB-

H

-LRB-

-RRB-

H

-LRB-

-RRB-

H

-LRB-

-RRB-

Fig.

Cas

d'une

image

non

convexe

Importance

du

choix

du

vecteur

de

localit?e

Image

des

vecteurs

d'it

eration

et

de

localit?e

spatiale

el?ements

acc?ed?es

etait

dans

les

deux

cas

trait?ee

par

l'insertion

de

tests

portant

sur

les

valeurs

de

congruence

des

it?erations

ou

ce

qui

est

equivalent

en

faisant

intervenir

des

divisions

enti?eres

Si

au

contraire

on

choisit

le

vecteur

de

localit?e

qui

est

compl?etement

positif

sera

stable

par

translation

de

Donc

si

une

it?eration

-LRB-

i

j

k

-RRB-

appartient

a

il

en

sera

de

m

eme

de

l'it

eration

-LRB-

i

j

k

-RRB-

-LRB-

a

condition

qu'elle

v?erifie

egalement

les

bornes

sup?erieures

-RRB-

Le

point

H

-LRB-

i

j

k

-RRB-

H

-LRB-

-RRB-

sera

alors

bien

atteint

ce

qui

rend

r?eguli?ere

la

progression

par

pas

de

H

-LRB-

-RRB-

et

garantie

la

convexit?e

du

parcours

de

l'image

si

on

utilise

ce

vecteur

On

choisira

donc

plut

ot

pour

caract?eriser

la

localit?e

spatiale

un

vecteur

-LRB-

s

il

en

existe

-RRB-

-LCB-

Appartenant

a

la

direction

de

localit?e

spatiale

caract?eris?ee

par

le

syst?eme

-LCB-

compl?etement

positif

-LCB-

minimisant

le

pas

d'acc

es

-LRB-

l'application

affine

-LRB-

-RRB-

-RRB-

Nous

appliquons

au

paragraphe

cette

d?efinition

a

la

boucle

afin

d'optimiser

sa

localit?e

spatiale

Cette

d?efinition

associ?ee

a

l'utilisation

des

treillis

assure

une

transformation

de

boucle

sans

test

de

congruence

ni

division

enti?ere

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

Construction

et

propri?et?es

de

la

transformation

Nous

donnons

dans

ce

paragraphe

la

forme

d'une

matrice

de

transformation

permettant

de

tirer

profit

des

r?eutilisations

de

donn?ees

aussi

bien

que

de

la

localit?e

spatiale

Trois

th?eor?emes

r?esument

alors

les

propri?et?es

de

cette

transformation

Comme

nous

l'avons

signal?e

au

paragraphe

les

propri?et?es

d'une

boucle

transform?ee

sont

directement

li?ees

a

l'inverse

de

la

matrice

de

transformation

Plus

pr?ecis?ement

pour

rendre

interne

une

direction

donn?ee

caract?eris?ee

par

un

vecteur

il

suffit

d'imposer

que

son

inverse

poss?ede

ce

vecteur

pour

derni?ere

colonne

Le

probl?eme

est

rendu

difficile

lorsque

l'on

impose

en

outre

l'unimodularit

e

de

la

matrice

ainsi

construite

Le

travail

sera

grandement

facilit?e

dans

notre

cas

par

l'utilisation

de

treillis

autorisant

l'emploi

de

matrices

non

enti?eres

On

souhaite

rendre

le

plus

interne

les

directions

correspondant

a

des

r?eutilisations

de

donn?ees

-LRB-

caract?eris?ees

par

les

vecteurs

de

d?ependance

-LRB-

di

-RRB-

i

j

-LSB-

n?r

-RSB-

j

-RRB-

puis

la

direction

de

localit?e

spatiale

caract?eris?ee

par

un

vecteur

not?e

s.

Par

d?efinition

-LRB-

s

-RRB-

donc

le

vecteur

s

n'appartient

pas

a

Ker

-LRB-

H

-RRB-

Or

le

syst?eme

-LRB-

di

i

j

-LSB-

n

r

-RSB-

j

-RRB-

constitue

une

base

de

ce

noyau

ceci

suffit

a

prouver

que

le

syst?eme

-LRB-

s

dn?r

-RRB-

est

libre

On

peut

donc

le

compl?eter

en

une

base

Zn

a

l'aide

de

r

vecteurs

cr

La

base

-LRB-

cr

s

dn?r

-RRB-

etant

evidemment

de

rang

n

on

en

d?eduit

que

la

matrice

T

BBBBB

cr

s

dN?r

CCCCCA

est

enti?ere

et

non

singuli?ere

-LRB-

en

revanche

rien

ne

prouve

qu'elle

soit

unimodulaire

-RRB-

Elle

entre

donc

dans

les

hypoth?eses

de

la

m?ethode

de

transformation

avec

partitionnement

en

treillis

vue

a

la

section

Les

vecteurs

d'it

eration

du

nid

transform?e

sont

alors

pour

le

treillis

T

k

les

Ikn

tels

que

j

-LSB-

n

-RSB-

j

Ikj

T

-LRB-

ij

Ek

-RRB-

Les

th?eor?emes

suivants

montrent

qu'elle

poss?ede

les

propri?et?es

souhait?ees

Commen?cons

par

montrer

qu'elle

peut

l?egalement

etre

appliqu?ee

Th?eor?eme

L'application

de

la

transformation

T

a

la

boucle

initiale

est

l?egale

De

plus

il

n

y

a

pas

de

d?ependance

entre

les

diff?erents

nids

constituant

le

programme

transform?e

ceux-ci

peuvent

donc

etre

l?egalement

fusionn?es

D?emonstration

Commen?cons

par

montrer

qu'il

n

y

a

pas

de

d?ependance

entre

les

diff?erents

nids

Soient

et

deux

it?erations

d?ependantes

du

programme

initial

Il

existe

donc

un

vecteur

de

d?ependance

dj

tel

que

dj

Or

par

construction

de

la

matrice

T

dj

T

j

-LRB-

o?u

ik

note

le

ki?eme

vecteur

de

la

base

canonique

de

Zn

-RRB-

Donc

dj

T

-LRB-

Zn

-RRB-

M

le

module

associ?e

a

la

transformation

T

D'apr

es

la

proposition

du

chapitre

et

appartiennent

donc

au

m

eme

treillis

Construction

d'une

transformation

am?eliorant

la

localit?e

Ceci

etant

vrai

pour

tout

couple

d'it

erations

d?ependantes

on

en

d?eduit

d'apr

es

le

corollaire

du

chapitre

qu'il

n'existe

pas

dans

le

programme

transform?e

de

d?ependance

entre

deux

nids

distincts

Or

deux

nids

de

boucles

peuvent

etre

fusionn?es

si

il

n'existe

pas

de

d?ependance

dont

la

source

soit

dans

le

premier

nid

et

le

but

dans

le

second

la

condition

suffisante

de

fusion

des

boucles

est

donc

respect?ee

dans

notre

cas

Regardons

maintenant

les

d?ependances

a

l'int

erieur

d'un

nid

On

rappelle

qu'une

transformation

de

programme

est

l?egale

ssi

les

vecteurs

de

d?ependance

de

la

boucle

transform?ee

sont

lexicopositifs

-LSB-

-RSB-

Or

les

seules

d?ependances

de

la

boucle

initiale

sont

les

self-output-dependence

sur

l'

ecriture

de

A

Les

vecteurs

de

d?ependance

sont

donc

les

vecteurs

di

et

a

l'int

erieur

d'un

m

eme

nid

les

vecteurs

de

d?ependance

de

la

boucle

transform?ee

sont

d'apr

es

le

th?eor?eme

du

chapitre

les

vecteurs

Tdi

De

plus

on

a

vu

que

j

-LSB-

n

r

-RSB-

j

on

a

dj

T

j

D'

o?u

Tdj

ir

j

qui

est

evidemment

lexicopositif

La

transformation

T

respecte

donc

les

d?ependances

ce

qui

prouve

sa

l?egalit?e

Th?eor?eme

Pour

chaque

treillis

T

k

les

n?r

boucles

les

plus

internes

du

nid

transform?e

correspondent

a

des

r?eutilisations

de

donn?ees

De

plus

si

il

existe

un

vecteur

de

localit?e

spatiale

la

ri?eme

boucle

parcours

le

tableau

A

dans

le

sens

des

pages

avec

un

pas

de

taille

-LRB-

s

-RRB-

D?emonstration

Les

vecteurs

IkN

v?erifient

Ikj

T

-LRB-

ij

Ek

-RRB-

j

-LSB-

N

-RSB-

j

soit

ij

T

Ek

ce

qui

s

ecrit

matriciellement

BBBBB

IkN

CCCCCA

BBBBB

cr

s

dN?r

CCCCCA

BBBBB

iN

CCCCCA

BBBBB

Ek

-LSB-

-RSB-

Ek

-LSB-

N

-RSB-

CCCCCA

Si

les

premiers

vecteurs

-LRB-

Ij

-RRB-

i

j

-LSB-

r

-RSB-

j

restent

constants

une

variation

des

Ir

IN

modifie

donc

le

vecteur

d'it

eration

-LCB-

d'une

combinaison

lin?eaire

des

dj

donc

l'

el?ement

r?ef?erenc?e

est

inchang?e

D'autre

part

si

il

existe

un

vecteur

de

localit?e

spatiale

s

une

variation

de

Ir

modifie

-LCB-

d'un

multiple

de

s

Or

par

d?efinition

H

-LRB-

s

-RRB-

appartient

a

la

dimension

de

stockage

du

tableau

dans

les

pages

de

la

MVP

La

ri?eme

boucle

parcours

donc

le

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

tableau

A

dans

le

sens

des

pages

Technique

de

parall?elisation

adapt?ee

a

la

MVP

Nous

pr?esentons

ici

un

r?esum?e

des

diff?erentes

techniques

evoqu?ees

dans

cette

etude

et

l'ordre

dans

lequel

elles

doivent

etre

employ?ees

pour

parvenir

a

un

sch?ema

global

de

parall?elisation

dans

le

cadre

des

machines

a

m?emoire

virtuelle

partag?ee

Ce

sch?ema

prend

en

compte

les

propri?et?es

de

localit?e

et

d'affinit

e

des

nids

de

boucles

et

vise

a

r?eduire

les

effets

du

faux-partage

Sous

certaines

hypoth?eses

nous

ajoutons

a

ces

objectifs

principaux

l'am

elioration

de

l'

equilibre

des

charges

et

la

r?eduction

du

nombre

de

synchronisations

Nous

pr?ecisons

les

points

correspondant

a

notre

contribution

personnelle

les

hypoth?eses

qu'ils

n?ecessitent

et

les

probl?emes

qu'ils

pr?etendent

pallier

Nous

soulignons

quand

c'est

le

cas

les

techniques

qui

pourraient

s

av?erer

utiles

en

dehors

du

contexte

des

MVP

-LRB-

-RRB-

En

amont

du

partitionnement

Avant

de

partitionner

le

nid

de

boucle

il

importe

de

chercher

a

optimiser

le

parall?elisme

qu'il

contient

et

de

faire

en

sorte

que

les

acc?es

-LRB-

ou

au

moins

un

certain

nombre

d'entre

eux

-RRB-

s

effectuent

dans

le

sens

des

pages

Afin

de

contr

oler

la

validit?e

des

transformations

il

faut

commencer

par

analyser

les

d?ependances

contenues

dans

le

programme

-LRB-

A

-RRB-

Analyse

des

d?ependances

On

utilise

pour

cela

les

techniques

recens?ees

au

paragraphe

-LRB-

B

-RRB-

Toutes

les

m?ethodes

de

transformations

de

programme

-LRB-

distribution

de

boucle

strip-mining

etc.

-RRB-

visant

a

am?eliorer

le

parall?elisme

et

les

r?eutilisations

de

donn?ees

sont

compl?ementaires

de

notre

etude

et

doivent

etre

mises

en

oeuvre

prioritairement

-LRB-

C

-RRB-

Afin

d'augmenter

les

chances

d'obtenir

une

image

du

domaine

d'it

eration

convexe

on

conseille

d'utiliser

la

d?efinition

de

vecteur

de

localit?e

spatiale

donn?ee

au

paragraphe

Cette

d?efinition

n'est

pas

celle

qui

r?eduit

au

maximum

le

pas

d'acc

es

dans

le

sens

des

pages

mais

permet

de

simplifier

la

gestion

des

boucles

et

donc

d'augmenter

la

fr?equence

des

acc?es

en

ecriture

ce

qui

est

capital

pour

contr

oler

l'effet

ping-pong

-LRB-

voir

la

section

-RRB-

Si

le

pas

obtenu

n'est

pas

de

on

devra

utiliser

a

l'

etape

-LRB-

E

-RRB-

une

transformation

non

unimodulaire

-LRB-

D

-RRB-

Le

vecteur

de

localit?e

spatiale

et

les

vecteurs

de

d?ependance

permettent

de

d?efinir

une

transformation

rendant

internes

les

r?eutilisations

et

provoquant

des

acc?es

dans

le

sens

des

pages

Technique

de

parall?elisation

adapt?ee

a

la

MVP

-LRB-

E

-RRB-

On

applique

cette

transformation

dans

le

cas

o?u

elle

respecte

les

d?ependances

ce

sera

toujours

le

cas

s

il

n

y

a

qu'un

seul

acc?es

en

ecriture

-LRB-

les

seules

d?ependances

sont

dans

ce

cas

de

type

self-output-dependence

-RRB-

et

o?u

elle

maintient

le

nid

de

boucle

parall?ele

Cette

transformation

n'est

pas

unimodulaire

dans

le

cas

g?en?eral

Si

ce

n'est

pas

le

cas

on

partitionne

le

domaine

d'it

eration

en

treillis

et

on

scinde

le

nid

de

boucle

initial

en

autant

de

nids

que

de

treillis

-LRB-

paragraphe

-RRB-

Cette

m?ethode

peut

se

r?ev?eler

b?en?efique

en

dehors

du

cadre

de

la

MVP

d?es

lors

que

l'hypoth

ese

d'unimodularit

e

ne

peut

etre

v?erifi?ee

ou

que

l'on

souhaite

obtenir

un

domaine

d'it

eration

sans

it?eration

vide

dans

les

boucles

externes

-LRB-

F

-RRB-

Les

bornes

de

boucles

du

nid

transform?e

sont

obtenues

par

l'algorithme

de

Fourier-Motzkin

-LRB-

paragraphe

-RRB-

-LRB-

G

-RRB-

Les

nids

de

boucles

correspondant

aux

diff?erents

treillis

peuvent

etre

alors

partiellement

fusionn?es

pour

r?eduire

le

pas

d'acc

es

dans

le

sens

des

pages

-LRB-

-RRB-

Partitionnement

L'objectif

principal

de

la

phase

de

partitionnement

est

d'

eliminer

si

c'est

possible

ou

au

moins

de

r?eduire

grandement

les

effets

du

faux-partage

Nous

avons

tent?e

d'assouplir

au

maximum

les

hypoth?eses

de

la

technique

de

partitionnement

pr?esent?ee

au

chapitre

afin

que

son

champ

d'application

soit

le

plus

vaste

possible

Cette

technique

a

pour

effet

secondaire

de

garantir

l'affinit

e

page-processeur

entre

les

nids

de

boucles

et

en

cons?equence

de

r?eduire

le

nombre

de

synchronisations

n?ecessaires

-LRB-

A

-RRB-

Dans

le

cas

o?u

le

nid

de

boucle

est

parfaitement

parall?ele

et

ne

contient

qu'un

seul

acc?es

en

ecriture

l'application

du

partitionnement

en

blocs

justifi?es

assure

l'

elimination

totale

du

faux-partage

-LRB-

paragraphe

-RRB-

Dans

ce

cas

comme

dans

le

cas

de

n'importe

quel

partitionnement

cyclique

par

blocs

il

est

pr?ef?erable

pour

des

raisons

d'

equilibre

des

charges

de

s

assurer

qu'aucun

bloc

vide

ne

sera

distribu?e

aux

processeurs

C'est

pourquoi

la

forme

de

l'algorithme

de

Fourier-Motzkin

pr?esent?e

au

paragraphe

peut

etre

conseill?ee

dans

tous

ces

cas

-LRB-

B

-RRB-

L'application

de

ce

partitionnement

a

et?e

elargie

au

cas

ou

une

boucle

externe

ou

interne

est

s?equentielle

-LRB-

paragraphe

-RRB-

Le

premier

cas

est

d'application

directe

tandis

que

le

second

pose

plusieurs

difficult?es

On

propose

dans

ce

dernier

cas

deux

partitionnements

possibles

par

pav?es

ou

par

patrons

Le

premier

etant

plus

complexe

ne

pourra

etre

employ?e

que

dans

le

cas

o?u

suffisamment

de

donn?ees

sont

connues

a

la

compilation

mais

s

av?ere

tr?es

efficace

en

pratique

-LRB-

voir

chapitre

-RRB-

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

En

utilisant

une

dilatation

des

tableaux

de

dimension

au

moins

deux

-LRB-

voir

section

-RRB-

eventuellement

coupl?ee

avec

un

regroupement

des

ecritures

-LRB-

voir

section

-RRB-

il

est

possible

d'adapter

la

taille

des

patrons

ou

des

pav?es

de

mani?ere

a

garantir

un

bon

equilibre

des

charges

-LRB-

C

-RRB-

Dans

le

cas

o?u

le

nid

de

boucle

contient

plusieurs

r?ef?erences

en

ecriture

plusieurs

strat?egies

peuvent

etre

utilis?ees

suivant

ces

acc?es

-LRB-

paragraphe

-RRB-

-LCB-

Si

les

diff?erents

acc?es

appartiennent

a

un

m

eme

groupe

de

r?ef?erence

le

faux

partage

est

elimin?e

pour

tous

les

acc?es

par

la

m?ethode

pr?ec?edente

Une

distribution

de

boucle

peut

si

elle

est

l?egale

etre

employ?ee

pour

que

cette

hypoth?ese

soit

v?erifi?ee

-LCB-

Dans

le

cas

contraire

on

peut

choisir

une

ecriture

privil?egi?ee

-LRB-

celle

qui

assure

le

plus

de

parall?elisme

ou

celle

qui

acc?ede

a

un

tableau

r?ef?erenc?e

dans

la

suite

du

programme

et

sur

lequel

on

veut

provoquer

de

l'affinit

e

-LRB-

voir

les

travaux

de

M.

O'Boyle

-LSB-

-RSB-

-RRB-

On

elimine

alors

le

faux-partage

sur

cet

acc?es

et

on

se

contente

de

le

r?eduire

pour

les

autres

en

effectuant

des

regroupements

des

ecritures

et

en

utilisant

des

copies

locales

-LCB-

Si

la

MVP

dispose

d'une

coh?erence

faible

on

peut

toujours

employer

ce

m?ecanisme

dans

un

tel

cas

-LRB-

-LSB-

-RSB-

-RRB-

L'int

er

et

de

notre

mod?ele

persiste

puisqu'il

nous

permet

d'identifier

pr?ecis?ement

les

occasions

o?u

il

est

souhaitable

de

modifier

le

protocole

de

coh?erence

alors

qu'il

se

r?ev?ele

couteux

s

il

est

employ?e

a

mauvais

escient

-LRB-

D

-RRB-

Si

on

utilise

la

m

eme

correspondance

entre

les

processeurs

et

les

pages

le

partitionnement

par

blocs

justifi?es

garantit

l'affinit

e

entre

les

diff?erents

nids

de

boucles

et

de

ce

fait

r?eduit

le

nombre

de

synchronisations

n?ecessaires

dans

le

programme

global

-LRB-

paragraphe

-RRB-

-LRB-

-RRB-

En

aval

du

partitionnement

Le

partitionnement

que

nous

proposons

prend

prioritairement

en

compte

les

acc?es

en

ecriture

car

ce

sont

eux

qui

provoquent

les

effets

de

ping-pong

les

plus

co

uteux

-LRB-

ils

engendrent

en

effet

des

migrations

de

pages

donc

des

messages

longs

-RRB-

A

l'issue

du

partitionnement

la

r?epartition

des

it?erations

sur

les

processeurs

est

d?efinitivement

fix?ee

mais

il

est

encore

possible

d'am

eliorer

la

localit?e

des

autres

acc?es

en

utilisant

des

copies

locales

-LRB-

A

-RRB-

Le

nid

de

boucle

concern?e

est

scind?e

en

trois

-LCB-

Un

nid

servant

a

recopier

localement

les

el?ements

sur

lesquels

on

veut

am?eliorer

la

localit?e

-LCB-

Le

nid

original

mais

travaillant

sur

les

copies

locales

Application

a

un

exemple

-LCB-

Un

nid

permettant

de

recopier

les

objets

locaux

modifi?es

au

cours

de

l'

etape

pr?ec?edente

La

m?ethode

est

equivalente

a

celle

du

regroupement

des

ecritures

-LRB-

paragraphe

-RRB-

a

laquelle

on

ajoute

une

transformation

de

boucle

pour

optimiser

la

localit?e

-LRB-

paragraphe

-RRB-

L'int

er

et

est

qu'alors

les

boucles

de

copies

et

de

mise

a

jour

ne

contiennent

plus

de

d?ependance

et

qu'on

n

a

donc

plus

de

probl?eme

de

l?egalit?e

pour

effectuer

la

transformation

rendant

les

acc?es

locaux

Le

nid

de

calcul

travaillant

sur

des

copies

locales

ne

pose

plus

alors

de

difficult?e

de

faux-partage

ou

de

localit?e

d'acc

es

On

elimine

les

r?eutilisations

-LRB-

inutiles

-RRB-

dans

les

boucles

de

copies

et

de

mise

a

jour

Les

bornes

de

boucles

doivent

etre

propag?ees

pr?ecis?ement

avant

l'

elimination

on

utilise

pour

cela

le

raffinement

que

nous

proposons

de

l'algorithme

de

Fourier-Motzkin

Ceci

a

egalement

pour

effet

de

ne

copier

que

les

el?ements

dont

on

a

r?eellement

besoin

et

donc

de

r?eduire

la

taille

des

copies

locales

Nous

allons

maintenant

illustrer

sur

un

exemple

l'application

de

cette

m?ethode

globale

Application

a

un

exemple

On

se

propose

d'illustrer

la

m?ethode

globale

d?ecrite

au

paragraphe

pr?ec?edent

au

nid

de

boucle

suivant

Nid

Do

i

Do

j

Do

k

B

-LSB-

k

i

-RSB-

B

-LSB-

k

i

-RSB-

A

-LSB-

j

j

k

-RSB-

EndDo

EndDo

EndDo

On

suppose

l?a

encore

que

les

tableaux

A

et

B

sont

enregistr?es

dans

la

MVP

dans

le

sens

des

premiers

indices

-LRB-

par

colonnes

-RRB-

Ce

nid

de

boucles

v?erifie

les

hypoth?eses

de

la

partie

except?e

en

ce

qui

concerne

les

r?ef?erences

de

Ceci

nous

permet

d'illustrer

la

g?en?eralisation

des

r?esultats

de

cette

partie

a

un

cas

poss?edant

-LCB-

Des

acc?es

aux

tableaux

en

ecriture

et

en

lecture

-LCB-

Des

r?ef?erences

antagonistes

-LRB-

engendrant

des

directions

de

r?eutilisation

ou

de

localit?e

spatiale

distinctes

-RRB-

-LCB-

Une

d?ependance

de

type

ecrivain-lecteur

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

La

transformation

pr?esent?ee

dans

cette

exemple

suit

le

plan

expos?e

a

la

section

Analyse

des

d?ependances

Vecteurs

de

localit?e

Le

nid

comporte

plusieurs

types

de

d?ependances

-LCB-

Une

d?ependance

de

type

ecrivain-lecteur

de

l'instruction

sur

elle-m

eme

due

aux

acc?es

en

ecriture

et

en

lecture

au

tableau

B

Le

vecteur

de

d?ependance

associ?e

est

le

vecteur

-LRB-

-RRB-

-LCB-

Une

auto-d

ependance

de

type

ecrivain

ecrivain

sur

l'acc

es

en

ecriture

au

tableau

B

caract?eris?ee

par

le

vecteur

-LRB-

-RRB-

-LCB-

Des

d?ependances

de

type

lecteur-lecteur

pour

les

deux

acc?es

en

lecture

aux

tableaux

A

et

B

Les

r?eutilisations

en

lecture

n

etant

prises

en

compte

qu'aux

etapes

suivantes

et

les

auto-d

ependances

de

type

lecteur-lecteur

n

etant

pas

de

v?eritables

d?ependances

nous

ne

nous

int?eressons

pas

a

celles-ci

pour

le

moment

Pour

les

m

emes

raisons

le

vecteur

de

localit?e

spatiale

concernant

le

tableau

A

ne

sera

d?etermin?e

qu

a

l'

etape

suivante

La

direction

de

localit?e

spatiale

concernant

l'

ecriture

sur

le

tableau

B

est

caract?eris?ee

par

le

syst?eme

s

Ker

-LRB-

i

-RRB-

s

est

compl?etement

positif

-LRB-

k

-RRB-

-LRB-

s

-RRB-

et

est

minimal

Ce

qui

conduit

en

notant

s

-LRB-

-RRB-

au

syst?eme

et

est

minimal

dont

une

solution

est

sB

-LRB-

-RRB-

Avant

de

pouvoir

construire

la

transformation

adapt?ee

a

cette

ecriture

il

reste

a

compl?eter

le

syst?eme

SB

BBBBB

CCCCCA

BBBBB

CCCCCA

Application

a

un

exemple

en

une

base

de

Ce

qui

conduit

par

exemple

a

la

base

BB

BBBBB

CCCCCA

BBBBB

CCCCCA

BBBBB

CCCCCA

-LRB-

On

sait

qu'on

peut

toujours

compl?eter

une

famille

libre

en

une

base

en

n'utilisant

que

des

vecteurs

de

la

base

canonique

et

pour

des

raisons

de

simplicit?e

on

a

souvent

int?er

et

a

le

faire

-RRB-

Nous

sommes

maintenant

en

mesure

de

construire

la

transformation

correspondante

et

de

regarder

si

elle

peut

etre

l?egalement

appliqu?ee

Construction

de

la

transformation

am?eliorant

la

lo

calit?e

des

ecritures

A

la

base

BB

correspond

la

transformation

T

B

BBBBB

CCCCCA

On

sait

d'apr

es

le

th?eor?eme

que

cette

transformation

respecte

l'auto-d

ependance

sur

l'

ecriture

de

B

Pour

etre

l?egale

elle

doit

encore

respecter

la

d?pendance

caract?eris?ee

par

On

calcule

TB

T

B

puis

BBBBB

CCCCCA

et

BBBBB

CCCCCA

Les

deux

vecteurs

etant

lexicopositifs

la

transformation

est

l?egale

de

plus

les

deux

coefficients

dominants

etant

nuls

la

boucle

externe

du

nid

est

parall?ele

Cette

transformation

est

tr?es

simple

puisqu'il

s

agit

d'une

inversion

entre

les

boucles

internes

Le

nouveau

vecteur

d'it

eration

est

BBBBB

CCCCCA

TB

I

BBBBB

i

k

j

CCCCCA

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

et

une

elimination

de

Fourier-Motzkin

el?ementaire

fournit

les

nouvelles

bornes

de

boucle

BBBBB

CCCCCA

BBBBB

CCCCCA

BBBBB

CCCCCA

La

boucle

transform?ee

s

ecrit

donc

finalement

Nid

Do

Do

Do

B

-LSB-

-RSB-

B

-LSB-

-RSB-

A

-LSB-

-RSB-

EndDo

EndDo

EndDo

Partitionnement

de

la

boucle

On

sait

que

la

boucle

externe

du

nid

est

parall?ele

on

partitionne

maintenant

cette

boucle

de

mani?ere

a

r?eduire

le

nombre

de

d?efauts

de

page

en

utilisant

les

techniques

de

partitionnement

en

blocs

justifi?es

-LRB-

cf

partie

-RRB-

Apr?es

partitionnement

-LRB-

et

eventuellement

dilatation

et

pavage

du

tableau

B

-RRB-

le

code

SPMD

engendr?e

est

de

la

forme

Nid

Do

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

Do

Do

B

-LSB-

-RSB-

B

-LSB-

-RSB-

A

-LSB-

-RSB-

EndDo

EndDo

EndDo

Il

reste

a

s

int?eresser

a

l'exploitation

de

la

localit?e

spatiale

des

lectures

Prise

en

compte

de

la

localit?e

spatiale

des

lectures

On

peut

avoir

tendance

a

croire

qu'en

pr?esence

d'une

lecture

et

d'une

ecriture

sur

le

m

eme

tableau

-LRB-

comme

c'est

le

cas

ici

pour

le

tableau

B

-RRB-

on

puisse

n?egliger

les

d?efauts

dus

a

la

lecture

et

ne

partitionner

qu'en

fonction

des

ecritures

En

fait

il

n'en

est

rien

comme

nous

le

verrons

au

chapitre

lorsque

nous

evaluerons

nos

transformations

sur

le

programme

PERMEA

-LRB-

voir

le

paragraphe

-RRB-

En

effet

les

lectures

peuvent

encore

provoquer

un

ph?enom?ene

de

ping-pong

d

u

aux

invalidations

de

page

-LRB-

lorsqu'il

existe

une

copie

d'une

page

en

lecture

le

droit

en

ecriture

du

propri?etaire

de

la

page

est

invalid?e

et

celui-ci

doit

provoquer

un

d?efaut

de

page

pour

recouvrer

ce

droit

-RRB-

Ce

type

de

ping-pong

est

moins

grave

que

dans

Application

a

un

exemple

le

cas

d'un

conflit

entre

ecrivain

puisqu'il

ne

s

accompagne

pas

de

migrations

de

pages

mais

peut

encore

etre

cause

de

d?egradations

notables

des

performances

Cependant

il

ne

peut

avoir

lieu

dans

le

cadre

de

nos

hypoth?eses

En

effet

la

pr?esence

d'acc

es

en

lecture

et

en

ecriture

dans

la

m

eme

boucle

est

toujours

cause

d'une

d?ependance

-LRB-

ecrivain-lecteur

ou

lecteur

ecrivain

-RRB-

or

nous

ne

partitionnons

la

boucle

externe

que

dans

le

cas

o?u

la

transformation

propos?ee

maintient

la

boucle

externe

parall?ele

Ce

type

de

d?ependance

est

donc

interne

a

la

boucle

ce

qui

a

pour

effet

de

traiter

conjointement

les

r?eutilisations

dues

aux

lectures

et

aux

ecritures

Il

reste

encore

a

traiter

le

cas

de

l'

ecriture

sur

A

en

utilisant

une

copie

locale

de

ce

tableau

On

effectue

trois

r?epliques

du

nid

de

boucle

pour

effectuer

la

copie

locale

les

calculs

puis

la

mise

a

jour

de

A

On

utilise

comme

boucles

de

copie

et

de

mise

a

jour

la

m

eme

structure

que

pour

la

boucle

de

calcul

afin

d'assurer

que

tous

les

el?ements

n?ecessaires

seront

biens

copi?es

localement

Le

nid

une

fois

scind?e

a

donc

la

forme

suivante

Nid

Do

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

Do

Do

Copie

de

A

TA

-LSB-

-RSB-

A

-LSB-

-RSB-

EndDo

EndDo

EndDo

Do

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

Do

Do

Calculs

locaux

B

-LSB-

-RSB-

B

-LSB-

-RSB-

TA

-LSB-

-RSB-

EndDo

EndDo

EndDo

Do

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

Do

Do

Mise

a

jour

de

A

A

-LSB-

-RSB-

TA

-LSB-

-RSB-

EndDo

EndDo

EndDo

Les

boucles

de

copies

et

de

mise

a

jour

ne

comportant

plus

de

d?ependances

peuvent

maintenant

a

leur

tour

faire

l'objet

de

transformations

en

vue

d'am

eliorer

leur

localit?e

Le

nid

de

copie

locale

de

A

est

celui

qui

nous

a

servi

a

illustrer

la

d?efinition

du

vecteur

de

localit?e

spatiale

et

les

probl?emes

de

convexit?e

a

la

partie

On

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

conna

t

donc

d?ej?a

le

vecteur

de

localit?e

spatiale

sur

A

sA

-LRB-

-RRB-

La

d?ependance

associ?ee

a

la

lecture

de

A

est

caract?eris?ee

par

le

vecteur

dA

-LRB-

-RRB-

Le

vecteur

-LRB-

-RRB-

permet

de

compl?eter

le

syst?eme

-LRB-

sA

dA

-RRB-

en

une

base

On

va

donc

appliquer

a

la

boucle

de

copie

de

A

la

transformation

TA

telle

que

T

A

BBBBB

CCCCCA

Cette

transformation

n'est

pas

unimodulaire

-LRB-

det

-LRB-

T

-RRB-

-RRB-

on

va

donc

utiliser

la

m?ethode

des

treillis

pr?esent?ee

au

paragraphe

La

matrice

T

A

s

ecrit

sous

forme

de

Smith

T

A

BBBBB

CCCCCA

BBBBB

CCCCCA

BBBBB

CCCCCA

On

d?efinit

le

Z-module

M

vect

-LRB-

-RRB-

et

les

trois

treillis

Tj

Ej

M

avec

-LRB-

-RRB-

t

-LRB-

-RRB-

t

-LRB-

-RRB-

t

Regardons

l'image

par

H

du

module

M

H

-LRB-

-RRB-

-LRB-

-RRB-

H

-LRB-

-RRB-

-LRB-

-RRB-

H

-LRB-

-RRB-

-LRB-

-RRB-

Le

troisi?eme

vecteur

est

maintenant

combinaison

lin?eaire

positive

des

deux

premiers

l'image

par

H

de

ce

nid

de

boucle

est

donc

maintenant

convexe

et

pourra

en

cons?equence

etre

parcourue

sans

branchements

conditionnels

ni

calculs

de

congruences

Le

nouveau

vecteur

d'it

eration

est

-LRB-

I

J

K

-RRB-

tel

que

J

K

I

Application

a

un

exemple

Les

contraintes

sur

les

nouvelles

it?erations

s

ecrivent

pour

chaque

treillis

Tj

BBBBBBBBBBBBBBB

CCCCCCCCCCCCCCCA

T

BBBBBBBBBBBBBBB

u

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

CCCCCCCCCCCCCCCA

BBBBBBBBBBBBBBB

j

j

CCCCCCCCCCCCCCCA

Appliquons

a

ce

syst?eme

l'

elimination

de

Fourier-Motzkin

-LRB-

param?etr?ee

par

j

:-RRB-

Bornes

de

K

l

-LRB-

pid

-RRB-

J

K

u

-LRB-

pid

-RRB-

I

j

j

soit

l

-LRB-

pid

-RRB-

J

K

u

-LRB-

pid

-RRB-

J

e

K

c

d

e

K

b

c

Les

bornes

de

la

boucle

K

s

ecrivent

donc

max

-LRB-

l

-LRB-

pid

-RRB-

J

d?I

e

dj

e

-RRB-

K

min

-LRB-

u

-LRB-

pid

-RRB-

J

I

c

-RRB-

Bornes

de

J

l

-LRB-

pid

-RRB-

J

l

-LRB-

pid

-RRB-

J

c

e

e

u

-LRB-

pid

-RRB-

J

d

e

u

-LRB-

pid

-RRB-

J

d

e

c

i.e.

l

-LRB-

pid

-RRB-

J

l

-LRB-

pid

-RRB-

c

J

J

u

-LRB-

pid

-RRB-

d

e

J

u

-LRB-

pid

-RRB-

e

On

en

d?eduit

les

bornes

de

la

boucle

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

I

c

-RRB-

J

min

-LRB-

u

-LRB-

pid

-RRB-

j

c

u

-LRB-

pid

-RRB-

bI

-RRB-

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

Bornes

de

I

Les

contraintes

restantes

sont

-LRB-

-RRB-

e

-LRB-

-RRB-

d

e

c

-LRB-

-RRB-

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

b

c

-LRB-

-RRB-

l

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

c

L'in

egalit?e

-LRB-

-RRB-

est

equivalente

a

I

-LRB-

-RRB-

-LRB-

-RRB-

c

b

c

-LRB-

-RRB-

I

c

-LRB-

-RRB-

I

j

e

-LRB-

-RRB-

I

j

c

L'in

egalit?e

-LRB-

-RRB-

est

equivalente

a

I

-LRB-

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

c

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

c

-LRB-

-RRB-

I

-LRB-

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

c

-RRB-

-LRB-

-RRB-

I

-LRB-

l

-LRB-

pid

-RRB-

u

-LRB-

pid

-RRB-

c

-RRB-

On

en

d?eduit

que

les

bornes

de

la

boucle

I

sont

finalement

I

j

c

On

obtient

ainsi

en

une

seule

elimination

les

bornes

correspondant

aux

trois

treillis

Comme

il

s

agit

d'une

boucle

de

copie

on

n'effectue

pas

les

r?eutilisations

de

la

boucle

interne

qui

peut

donc

etre

elimin?ee

Le

nid

de

copie

de

A

s

ecrit

donc

finalement

Application

a

un

exemple

Nid

Do

I

c

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Do

I

c

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Do

I

c

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Treillis

Treillis

Treillis

I

J

Fig.

Points

acc?ed?es

par

les

diff?erents

treillis

Il

ne

reste

maintenant

plus

qu

a

fusionner

ces

trois

boucles

de

mani?ere

a

r?eduire

le

co

ut

de

gestion

des

boucles

et

a

regrouper

les

it?erations

acc?edant

aux

m

emes

pages

On

remarque

que

les

bornes

d?ependent

encore

de

valeurs

de

congruences

mais

portant

maintenant

sur

les

bornes

de

boucles

et

non

plus

sur

les

valeurs

du

vecteur

d'it

eration

Leur

evaluation

pourra

donc

se

faire

soit

a

la

compilation

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

dans

le

cas

o?u

l'on

conna

t

alors

la

valeur

des

bornes

de

boucles

soit

a

l'ex

ecution

mais

une

seule

fois

On

a

vu

qu'il

est

possible

de

fusionner

les

boucles

puisqu'on

n

a

pas

de

d?ependance

entre

les

instructions

des

trois

diff?erents

nids

Il

faut

n?eanmoins

que

la

fusion

soit

faite

de

mani?ere

a

ex?ecuter

a

la

m

eme

it?eration

externe

les

acc?es

des

trois

nids

a

une

m

eme

ligne

Les

projections

de

et

sur

la

direction

des

pages

valent

respectivement

et

il

faut

donc

od?ecalerAE

respectivement

de

et

les

boucles

des

treillis

correspondants

pour

que

les

points

acc?ed?es

appartiennent

a

la

m

eme

ligne

du

tableau

Le

programme

r?esultant

apr?es

fusion

est

montr?e

sur

la

figure

Les

bornes

Li

Ui

et

les

coefficients

ji

sont

calcul?es

une

seule

fois

soit

a

la

compilation

soit

a

l'ex

ecution

On

utilise

la

m

eme

structure

pour

la

mise

a

jour

du

tableau

partag?e

apr?es

calculs

Conclusions

La

mise

au

point

d'un

programme

parall?ele

sur

une

machine

a

m?emoire

virtuelle

partag?ee

passe

incontestablement

par

une

prise

en

compte

a

tous

les

niveaux

de

la

nature

des

pages

Nous

avons

vu

au

chapitre

que

le

partitionnement

devait

etre

adapt?e

a

leur

taille

nous

proposons

dans

ce

chapitre

de

mettre

egalement

l'accent

sur

leur

direction

en

effectuant

en

amont

et

en

aval

du

partitionnement

des

transformations

visant

a

am?eliorer

les

propri?et?es

de

localit?e

des

nids

de

boucle

et

tout

particuli?erement

de

localit?e

spatiale

Le

transfert

par

page

etant

implicite

dans

la

gestion

d'une

MVP

la

localit?e

spatiale

est

en

effet

de

toute

importance

Si

un

processeur

parcourt

la

m?emoire

dans

la

direction

des

pages

l'exploitation

de

la

localit?e

spatiale

est

alors

automatique

et

donc

le

b?en?efice

optimal

si

le

parcours

est

transversal

aux

pages

il

engendre

le

plus

souvent

des

conflits

d'acc

es

et

non

seulement

cela

provoque

des

migrations

de

pages

mais

le

parall?elisme

risque

d'

etre

perdu

par

faux-partage

En

raison

de

l'importance

de

la

fr?equence

des

acc?es

en

ecriture

sur

la

r?eduction

de

l'effet

ping-pong

nous

veillons

a

transformer

les

nids

de

boucles

de

mani?eres

a

ce

que

les

boucles

externes

ne

contiennent

pas

d'it

erations

vides

autrement

dit

de

mani?ere

a

augmenter

la

convexit?e

des

projections

du

domaine

d'it

eration

Nous

utilisons

pour

cela

une

adaptation

de

la

d?efinition

classique

des

vecteurs

de

localit?e

spatiale

et

la

m?ethode

de

partitionnement

en

treillis

d?evelopp?ee

au

paragraphe

La

transformation

de

boucles

ainsi

construite

-LRB-

en

g?en?eral

non-unimodulaire

-RRB-

permet

alors

de

tirer

profit

des

r?eutilisations

de

donn?ees

d'am

eliorer

la

localit?e

spatiale

et

de

garantir

une

fr?equence

elev?ee

des

acc?es

en

ecriture

Nous

proposons

alors

une

synth?ese

des

diff?erentes

techniques

pr?esent?ees

dans

ce

document

et

le

sch?ema

directeur

d'une

m?ethode

globale

de

parall?elisation

des

nids

de

boucles

sur

les

MVP

Ceci

est

l'occasion

de

souligner

leurs

interactions

de

recenser

les

diff?erents

cas

o?u

nous

sommes

en

mesure

de

proposer

des

solutions

ou

de

citer

les

solutions

alternatives

compl?ementaires

a

notre

etude

Nous

insistons

sur

le

fait

que

ce

sch?ema

ne

fournit

que

des

id?ees

directrices

qui

devraient

faire

l'objet

de

d?eveloppements

futurs

avant

de

pouvoir

etre

utilis?ees

en

pratique

Chapitre

Optimisation

de

la

localit?e

dans

le

cas

des

MVP

Nid

Do

I

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Do

I

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Do

I

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Do

I

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Do

I

Do

J

max

-LRB-

l

-LRB-

pid

-RRB-

l

-LRB-

pid

-RRB-

c

-RRB-

min

-LRB-

u

-LRB-

pid

-RRB-

c

u

-LRB-

pid

-RRB-

b

c

-RRB-

TA

-LSB-

I

-RSB-

A

-LSB-

I

-RSB-

EndDo

EndDo

Chapitre

Validation

exp?erimentale

Les

m?ethodes

propos?ees

au

chapitre

pour

r?eduire

l'effet

ping-pong

-LRB-

paragraphe

-RRB-

ou

eliminer

le

faux-partage

-LRB-

paragraphe

-RRB-

ont

et?e

mises

en

oeuvre

dans

le

compilateur

Fortran-S

-LSB-

-RSB-

et

test?ees

sur

un

muni

de

la

MVP

KOAN

Les

programmes

ayant

servi

aux

exp?eriences

relat?ees

dans

ce

chapitre

ont

et?e

mis

au

point

soit

a

la

main

-LRB-

algorithme

de

Gram-Schmidt

-RRB-

soit

automatiquement

a

partir

de

programmes

originaux

ecrits

en

Fortran

Dans

ce

cas

les

calculs

n?ecessaires

a

la

mise

au

point

du

programme

ont

et?e

effectu?es

par

le

syst?eme

de

calcul

alg?ebriques

Maple

-LSB-

-RSB-

Une

interface

Fortran-S/Maple

-LSB-

-RSB-

a

et?e

r?ealis?ee

a

l'IRISA

pour

d'une

part

transmettre

a

Maple

la

structure

du

programme

original

et

d'autre

part

fournir

au

compilateur

le

r?esultat

des

calculs

permettant

l'

ecriture

du

programme

parall?elis?e

Une

premi?ere

s?erie

d'exp

eriences

-LSB-

-RSB-

a

et?e

men?ee

en

utilisant

le

protocole

de

coh?erence

forte

par

invalidation

de

KOAN

L'annexe

A

donne

les

temps

de

traitement

d'un

d?efaut

de

page

en

lecture

ou

en

ecriture

et

les

dur?ees

d'

echange

de

pages

entre

processeurs

par

ce

protocole

Les

programmes

Fortran

exp?eriment?es

regroupent

une

application

compl?ete

le

programme

Permea

etudi?e

au

paragraphe

et

diff?erentes

versions

de

deux

nids

de

boucles

de

r?ef?erence

d?ecrits

aux

paragraphes

et

Pour

chacun

de

ces

tests

le

compilateur

produit

trois

versions

de

programmes

parall?eles

ORIG

PP-OPT

et

FS-OPT

Les

versions

ORIG

et

PP-OPT

utilisent

un

blocage

simple

de

la

boucle

parall?ele

chaque

processeur

traitant

un

bloc

de

N

=P

it?erations

La

version

PP-OPT

utilise

un

regroupement

des

op?erations

d'

ecriture

pour

eliminer

le

ping-pong

avec

des

vecteurs

locaux

de

taille

La

version

FS-OPT

utilise

un

partitionnement

en

blocs

justifi?es

en

prenant

comme

taille

des

blocs

le

plus

petit

entier

sup?erieur

a

Le

paragraphe

illustre

les

performances

de

la

m?ethode

de

pavage

pr?esent?ee

au

chapitre

sur

l'algorithme

de

Gram-Schmidt

Cet

algorithme

poss?ede

l'avantage

d'avoir

d?ej?a

et?e

intensivement

test?e

sur

le

syst?eme

KOAN

-LSB-

-RSB-

ce

qui

nous

permet

de

comparer

quantitativement

le

pavage

avec

d'autres

techniques

telles

que

l'alignement

des

lignes

de

tableau

sur

les

bornes

de

pages

ou

l'utilisation

Chapitre

Validation

exp?erimentale

d'un

protocole

de

coh?erence

faible

La

technique

du

pavage

n'ayant

pas

encore

et?e

int?egr?ee

au

compilateur

Fortran-S

le

programme

correspondant

a

et?e

ecrit

a

la

main

Programme

PERMEA

Permea

est

un

programme

de

calcul

de

perm?eabilit?e

d'un

milieu

poreux

a

deux

dimensions

Il

utilise

l'algorithme

des

el?ements

finis

sur

une

grille

discr?ete

compress?ee

en

un

tableau

a

deux

dimensions

La

grille

originale

est

de

taille

Dans

la

version

utilis?ee

pour

notre

exp?erience

le

tableau

compress?e

contient

r?eels

en

double

pr?ecision

soit

pages

de

la

MVP

A

chaque

etape

de

l'algorithme

trois

nids

de

boucles

sont

ex?ecut?es

correspondant

respectivement

aux

calculs

de

la

vitesse

d'

ecoulement

suivant

les

axes

x

et

y

et

au

calcul

de

la

pression

dans

le

milieu

etudi?e

Le

nid

de

boucles

correspond

au

calcul

de

la

vitesse

d'

ecoulement

suivant

l'axe

des

y.

Nid

Extrait

de

PERMEA

ecoulement

suivant

l'axe

des

y

DO

I

TO

ITABY

TMP

VYO

-LSB-

I

-RSB-

-LRB-

VYO

-LSB-

IYVOIS

-LSB-

I

-RSB-

-RSB-

VYO

-LSB-

IYVOIS

-LSB-

I

-RSB-

-RSB-

-RRB-

-LRB-

VYO

-LSB-

IYVOIS

-LSB-

I

-RSB-

-RSB-

VYO

-LSB-

IYVOIS

-LSB-

I

-RSB-

-RSB-

-RRB-

DTY

-LRB-

PO

-LSB-

IYVOIS

-LSB-

I

-RSB-

-RSB-

PO

-LSB-

IYVOIS

-LSB-

I

-RSB-

-RSB-

-RRB-

ERRY

MAX

-LRB-

ERRY

ABS

-LRB-

TMP-VYO

-LSB-

I

-RSB-

-RRB-

-RRB-

VYN

-LSB-

I

-RSB-

TMP

END

DO

DO

I

TO

VYO

-LSB-

I

-RSB-

VYN

-LSB-

I

-RSB-

END

DO

Du

fait

de

la

compression

des

donn?ees

les

lectures

se

font

par

un

adressage

indirect

tandis

que

les

r?ef?erences

en

ecritures

sont

directes

Ainsi

en

plus

du

faux-partage

entre

processeurs

ecrivains

s

ajoutera

du

faux-partage

entre

ecrivain

et

lecteur

-LRB-

lorsqu'il

existe

une

copie

d'une

page

en

lecture

le

propri?etaire

perd

le

droit

en

ecriture

et

doit

provoquer

un

d?efaut

de

page

en

ecriture

pour

le

recouvrer

-RRB-

Ce

programme

ne

constitue

donc

pas

un

cadre

trop

favorable

pour

notre

technique

qui

ne

traite

a

priori

que

le

faux-partage

entre

ecrivains

Nous

verrons

n?eanmoins

que

le

pavage

r?esiste

bien

m

eme

en

pr?esence

de

cette

difficult?e

suppl?ementaire

Les

figures

-LRB-

a

-RRB-

et

-LRB-

b

-RRB-

donnent

les

temps

d'ex

ecution

en

secondes

et

les

courbes

de

speed-up

obtenus

pour

chacune

des

trois

versions

du

programme

lorsque

le

nombre

de

processeurs

varie

de

un

a

Le

programme

Permea

nous

a

et?e

fourni

par

Dr.

Bernard

CNRS-LEPT-ENSAM

Bordeaux

Les

versions

PP-OPT

et

FS-OPT

utilisant

au

moins

une

profondeur

de

boucle

suppl?ementaire

induisent

un

co

ut

a

l'

ex?ecution

d

u

a

la

gestion

de

ces

boucles

Dans

le

cas

du

programme

Permea

ce

co

ut

est

de

moins

de

dans

le

cas

de

PP-OPT

et

est

n?egligeable

dans

le

cas

de

FS-OPT

Les

effets

du

faux-partage

commencent

a

etre

sensibles

sur

cet

exemple

au

del?a

de

huit

processeurs

Pour

ces

valeurs

les

versions

PP-OPT

et

FS-OPT

deviennent

rapidement

plus

performantes

Avec

processeurs

le

programme

FS-OPT

est

notablement

plus

rapide

que

les

deux

autres

versions

malgr?e

le

fait

que

les

donn?ees

n'utilisant

que

pages

ce

programme

n'utilise

que

des

processeurs

disponibles

Plut

ot

qu'une

limitation

c'est

l?a

un

des

corollaires

int?eressants

du

partitionnement

par

patrons

De

fa?con

g?en?erale

le

comportement

d'un

programme

parall?ele

finit

toujours

par

se

d?et?eriorer

au

del?a

d'un

certain

nombre

de

processeurs

et

il

est

souvent

d?elicat

de

pouvoir

estimer

cette

borne

a

la

compilation

Le

partitionnement

par

patrons

fournit

automatiquement

une

borne

du

degr?e

de

parall?elisme

en

ne

donnant

jamais

moins

d'une

page

a

un

processeur

Pour

chaque

processeur

P

rj

nous

avons

egalement

calcul?e

les

temps

DPE

-LRB-

j

-RRB-

et

DPL

-LRB-

j

-RRB-

que

le

processeur

P

rj

a

pass?e

a

g?erer

des

d?efauts

de

pages

en

ecriture

-LRB-

y

compris

a

invalider

les

copies

d'autres

processeurs

-RRB-

et

en

lecture

La

table

-LRB-

c

-RRB-

donne

pour

chaque

version

maxj

-LRB-

DPE

-LRB-

j

-RRB-

-RRB-

et

maxj

-LRB-

DPL

-LRB-

j

-RRB-

-RRB-

ainsi

que

le

nombre

de

d?efauts

de

pages

provoqu?es

par

le

processeur

qui

atteint

ce

maximum

L'

ecart

entre

le

nombre

de

d?efauts

provoqu?es

par

les

versions

ORIG

et

PP

OPT

permet

de

quantifier

l'int

er

et

qu'il

y

a

a

eviter

que

certains

d?efauts

ne

d?eg?en?erent

en

ping-pong

Lorsque

le

nombre

de

processeurs

augmente

et

avec

lui

le

traffic

sur

le

r?eseau

les

ping-pong

deviennent

de

plus

en

plus

probables

ce

qui

explique

le

nombre

alarmant

de

d?efauts

pour

la

version

ORIG

sur

processeurs

L'

ecart

entre

les

versions

PP-OPT

et

FS-OPT

r?esulte

de

l'

elimination

compl?ete

du

faux-partage

en

ecriture

dans

le

cas

de

FS-OPT

Nous

avons

d?ej?a

not?e

qu'il

subsistait

n?eanmoins

des

probl?emes

de

faux-partage

entre

ecrivains

et

lecteurs

faux-partage

difficile

a

d?eceler

du

fait

de

l'adressage

indirect

en

lecture

Cependant

le

choix

que

nous

avons

fait

de

traiter

prioritairement

le

faux-partage

en

ecriture

r?esiste

assez

bien

a

cette

contrainte

suppl?ementaire

les

seuls

d?efauts

en

ecriture

qui

subsistent

n'engendrent

que

des

invalidations

et

des

modifications

de

droits

d'acc

es

-LRB-

mais

pas

de

migrations

de

pages

-RRB-

ils

sont

donc

tr?es

rapides

comme

le

montre

la

table

-LRB-

c

-RRB-

et

n'encombrent

pas

le

r?eseau

de

communication

comme

le

font

les

d?efauts

en

lecture

avec

migration

de

page

En

cons?equence

bien

que

la

version

FS-OPT

produise

plus

de

d?efauts

de

page

en

lecture

que

les

deux

autres

-LRB-

en

favorisant

les

acc?es

en

ecriture

on

nuit

aux

lectures

-RRB-

ces

derniers

sont

trait?es

beaucoup

plus

rapidement

-LRB-

deux

fois

plus

vite

que

dans

la

version

originale

sur

processeurs

-RRB-

Chapitre

Validation

exp?erimentale

Programme

DMXPY

Version

originale

La

boucle

reproduit

le

noyau

du

program

Fortran

DMXPY

de

Linpack

-LSB-

-RSB-

qui

effectue

le

produit

d'une

matrice

et

d'un

vecteur

Nid

DMXPY

DO

TO

DO

TO

R

Y

-LSB-

-RSB-

Y

-LSB-

-RSB-

X

-LSB-

-RSB-

M

-LSB-

-RSB-

END

DO

END

DO

La

figure

donne

les

performances

des

trois

versions

ORIG

PP-OPT

et

FS-OPT

de

ce

programme

pour

quatre

tailles

diff?erentes

de

matrice

Comme

le

montrent

les

temps

d'ex

ecution

sur

un

processeur

le

co

ut

de

gestion

des

deux

versions

optimis?ees

est

inf?erieur

a

du

temps

d'ex

ecution

s?equentiel

Lorsque

le

nombre

de

processeurs

augmente

et

avec

lui

le

nombre

d'occurrence

de

fauxpartage

les

deux

versions

PP-OPT

et

FS-OPT

deviennent

rapidement

plus

performantes

que

la

version

originale

Cette

courbe

illustre

egalement

un

nouvel

effet

de

bord

int?eressant

de

ces

deux

techniques

les

temps

d'ex

ecution

de

ces

deux

versions

ne

d?ependant

plus

des

propri?et?es

arithm?etiques

des

donn?ees

-LRB-

alors

que

nous

avons

soulign?e

que

c

etait

le

cas

pour

la

version

originale

-RRB-

sont

plus

ostablesAE

et

donc

plus

pr?evisibles

Cette

propri?et?e

devrait

s

av?erer

appr?eciable

lors

des

phases

de

mise

au

point

d'un

programme

Sur

cet

exemple

les

deux

versions

optimis?ees

donnent

des

r?esultats

tr?es

similaires

La

version

FS-OPT

est

sensiblement

moins

performante

lorsque

le

nombre

de

processeurs

est

trop

faible

pour

que

l'

elimination

du

faux-partage

compense

le

d?es?equilibre

de

charge

qu'elle

produit

mais

la

tendance

s

inverse

lorsque

le

nombre

de

processeurs

augmente

Cependant

cette

version

ne

permet

pas

de

mettre

en

valeur

tout

l'int

er

et

du

partitionnement

par

patrons

En

effet

les

donn?ees

r?ef?erenc?ees

en

ecriture

par

la

boucle

etant

ind?ependantes

de

la

boucle

la

localit?e

temporelle

contenue

dans

cette

derni?ere

se

trouve

naturellement

exploit?ee

quelle

que

soit

la

version

employ?ee

Cette

propri?et?e

ne

sera

conserv?ee

que

par

la

version

FS-OPT

dans

le

cas

du

produit

par

une

matrice

triangulaire

propos?e

maintenant

Version

triangulaire

Nid

DMXPY

version

triangulaire

DO

TO

DO

TO

Programme

R

Y

-LSB-

-RSB-

Y

-LSB-

-RSB-

X

-LSB-

-RSB-

M

-LSB-

-RSB-

END

DO

END

DO

Sur

la

version

triangulaire

du

produit

matrice-vecteur

-LRB-

nid

-RRB-

les

donn?ees

r?ef?erenc?ees

par

la

boucle

d?ependent

de

la

valeur

de

rendant

beaucoup

plus

important

le

faux-partage

entre

it?erations

de

la

boucle

externe

Les

performances

de

ce

programme

sont

donn?ees

sur

la

figure

Les

versions

optimis?ees

restent

plus

performantes

que

la

version

originale

mais

cette

fois

la

version

FS-OPT

est

beaucoup

plus

rapide

que

PP-OPT

cette

derni?ere

subissant

les

effets

du

faux

partage

entre

it?erations

de

la

boucle

externe

Programme

La

figure

illustre

les

performances

du

noyau

d'un

programme

d'hydrodynamique

le

noyau

des

boucles

de

Lawrence

Livermore

Ce

noyau

comporte

trois

nids

de

boucles

-LRB-

voir

le

nid

de

boucles

-RRB-

Chaque

nid

comporte

deux

instructions

d'

ecritures

mais

ces

deux

ecritures

ont

lieu

sur

des

tableaux

de

m

eme

dimension

via

les

m

emes

applications

de

r?ef?erence

Les

deux

instructions

peuvent

donc

etre

trait?ees

par

un

m

eme

partitionnement

Si

on

elimine

le

faux

partage

pour

une

instruction

il

le

sera

automatiquement

pour

la

deuxi?eme

La

figure

montre

encore

l'efficacit

e

des

versions

optimis?ees

sur

la

version

originale

Elle

permet

en

outre

de

faire

les

remarques

suivantes

La

version

PP-OPT

est

moins

performante

que

FS-OPT

au

del?a

d'un

certain

nombre

de

processeurs

Cela

est

d

u

au

fait

que

la

taille

du

vecteur

local

utilis?e

dans

la

version

PP-OPT

est

inversement

proportionnelle

au

nombre

de

processeurs

Le

parall?elisme

n

etant

pas

limit?e

dans

cette

version

les

effets

du

regroupement

des

ecritures

s

estompent

lorsque

le

nombre

de

processeurs

devient

trop

important

Au

contraire

la

version

FS-OPT

limitant

la

taille

des

blocs

a

au

moins

une

page

borne

egalement

le

nombre

de

processeurs

employ?es

La

figure

-LRB-

a

-RRB-

montre

par

exemple

que

le

nombre

de

processeurs

etant

dans

ce

cas

limit?e

a

huit

les

performances

seront

limit?ees

a

ce

point

mais

sans

trop

de

d?egradations

au

del?a

Le

m

eme

comportement

peut

etre

signal?e

sur

la

figure

avec

une

d?egradation

des

performances

l?eg?ere

mais

constante

Ce

ph?enom?ene

peut

etre

expliqu?e

par

deux

raisons

d'une

part

la

version

actuelle

du

compilateur

ne

dec?ele

pas

l'attribution

d'une

boucle

vide

a

un

processeur

d'autre

part

la

primitive

fork

cr?ee

des

processus

sur

tous

les

processeurs

disponibles

qu'ils

participent

ou

non

a

l'ex

ecution

du

programme

Il

est

raisonnable

de

penser

que

ces

d?efauts

pourront

etre

corrig?es

dans

les

versions

futures

du

compilateur

evitant

les

d?egradations

de

performance

soulign?ees

Chapitre

Validation

exp?erimentale

-LCB-

Ordonnancement

par

blocs

Coh?erence

forte

Coh?erence

forte

et

alignement

des

lignes

du

tableau

sur

les

bornes

de

pages

Coh?erence

faible

Coh?erence

faible

et

utilisation

des

facilit?es

de

diffusion

de

l'iPSC

-LCB-

Ordonnancement

cyclique

Coh?erence

forte

Coh?erence

forte

et

alignement

des

lignes

du

tableau

sur

les

bornes

de

pages

Coh?erence

forte

alignement

des

lignes

du

tableau

sur

les

bornes

de

pages

et

utilisation

des

facilit?es

de

diffusion

de

l'iPSC

Tab

Ordonnancement

protocoles

de

coh?erence

et

optimisations

etudi?ees

Algorithme

de

Gram-Schmidt

Nous

appliquons

dans

ce

paragraphe

la

m?ethode

du

pavage

pr?esent?ee

au

paragraphe

au

proc?ed?e

d'orthonormalisation

de

Gram-Schmidt

Thierry

Priol

et

al.

-LSB-

-RSB-

-LSB-

-RSB-

ayant

test?e

pr?ec?edemment

de

nombreuses

versions

de

cet

algorithme

sur

la

MVP

KOAN

nous

serons

ainsi

en

mesure

de

comparer

notre

m?ethode

avec

les

techniques

classiques

telles

que

la

modification

de

l'ordonnancement

des

boucles

-LRB-

cyclique

ou

par

blocs

-RRB-

l'alignement

des

lignes

de

tableau

sur

les

bornes

de

page

et

l'utilisation

d'un

protocole

de

coh?erence

faible

La

version

de

l'algorithme

de

Gram-Schmidt

que

nous

avons

utilis?ee

lors

de

cette

exp?erience

est

donn?ee

sur

la

figure

Les

diff?erentes

combinaisons

d'ordonnancement

et

d'optimisations

etudi?ees

dans

-LSB-

-RSB-

sont

r?esum?ees

dans

la

table

Les

auteurs

concluaient

de

leur

etude

que

les

meilleures

performances

etaient

obtenues

avec

un

ordonnancement

cyclique

lorsque

les

lignes

du

tableau

etaient

align?ees

sur

les

bornes

de

pages

et

que

le

vecteur

normalis?e

etait

diffus?e

automatiquement

a

tous

les

processeurs

en

utilisant

la

fonction

de

diffusion

de

l'iPSC

L'inconv

enient

majeur

de

cette

version

est

qu'elle

n?ecessite

une

importante

place

m?emoire

pour

obtenir

l'alignement

des

lignes

du

tableau

Lorsque

cet

alignement

n'est

pas

effectu?e

un

ordonnancement

cyclique

engendre

de

tr?es

nombreux

conflits

et

s

av?ere

peu

performant

L'ordonnancement

par

bloc

provoque

beaucoup

moins

de

conflit

-LRB-

un

processeur

n'acc

ede

qu

a

un

seul

bloc

et

ne

peut

donc

entrer

en

conflit

qu'avec

ses

deux

voisins

dans

le

pire

des

cas

-RRB-

Cependant

il

est

trop

statique

pour

permettre

de

tirer

profit

des

r?eutilisations

de

donn?ees

dues

a

la

localit?e

temporelle

de

la

boucle

externe

Algorithme

de

Gram-Schmidt

En

accord

avec

la

m?ethode

propos?ee

au

paragraphe

nous

avons

effectu?e

sur

ce

programme

le

pavage

suivant

-LCB-

La

boucle

i

est

parall?elis?ee

par

patrons

apr?es

r?eduction

eventuelle

de

ceuxci

-LCB-

Chaque

processeur

re?coit

a

chaque

etape

un

bloc

d'it

eration

correspondant

au

m

eme

sous-ensemble

de

pages

-LRB-

voir

figure

-RRB-

la

localit?e

temporelle

est

ainsi

exploit?ee

au

maximum

-LCB-

A

chaque

it?eration

de

la

boucle

externe

le

d?es?equilibre

de

charge

entre

les

processeurs

est

inf?erieur

a

un

patron

-LCB-

Nous

avons

de

plus

utilis?e

les

facilit?es

de

diffusion

de

l'iPSC

pour

l'envoi

des

copies

du

vecteur

normalis?e

Le

programme

r?esultant

-LRB-

figure

-RRB-

a

et?e

ecrit

a

la

main

le

compilateur

Fortran-S

n'int

egrant

pas

encore

la

m?ethode

de

pavage

Performances

Les

performances

du

pavage

ont

et?e

compar?ees

aux

temps

d'ex

ecution

obtenus

par

T.

Priol

et

al.

pour

orthonormaliser

sur

processeurs

vecteurs

dont

la

taille

varie

entre

et

r?eels

en

simple

pr?ecision

-LRB-

donc

entre

une

et

deux

pages

-RRB-

Pour

chaque

taille

de

vecteur

nous

avons

effectu?e

plusieurs

pavages

en

faisant

varier

la

phase

de

dilatation

du

tableau

-LRB-

donc

la

r?eduction

de

la

taille

des

patrons

-RRB-

La

table

donne

pour

chaque

taille

de

vecteur

les

dilatations

utilis?ees

-LRB-

en

nombre

d'

el?ements

et

en

pourcentage

de

place

m?emoire

perdue

-RRB-

les

tailles

de

patron

qui

en

r?esultent

et

les

performances

obtenues

Ces

derni?eres

sont

caract?eris?ees

par

le

nombre

de

d?efauts

de

pages

en

lecture

-LRB-

DPL

-RRB-

ou

en

ecriture

-LRB-

DPE

-RRB-

et

le

nombre

d'invalidations

-LRB-

INV

-RRB-

provoqu?ees

par

l'ex

ecution

du

programme

Finalement

la

table

fournit

le

temps

d'ex

ecution

du

programme

en

secondes

Les

tables

et

montrent

les

performances

obtenues

sur

les

programmes

ordonnanc?es

respectivement

par

blocs

et

cycliquement

et

utilisant

les

optimisations

propos?ees

par

T.

Priol

et

al.

Comme

cela

etait

pr?evisible

les

temps

d'ex

ecution

d?ecroissent

avec

la

taille

des

patrons

par

am?elioration

de

l'

equilibre

des

charges

Lorsque

la

taille

des

patrons

est

ramen?ee

a

une

page

par

une

dilatation

maximum

ces

temps

sont

tr?es

proches

-LRB-

moins

de

-RRB-

des

performances

obtenues

par

la

meilleure

m?ethode

-LRB-

l'alignement

du

tableau

sur

les

pages

-RRB-

La

diff?erence

s

explique

par

le

co

ut

de

gestion

des

boucles

suppl?ementaires

engendr?ees

par

notre

m?ethode

Nous

devons

n?eanmoins

remarquer

que

lorsque

la

place

m?emoire

est

insuffisante

pour

permettre

un

alignement

du

tableau

sur

les

bornes

de

pages

-LRB-

ce

qui

dans

les

cas

etudi?es

peut

provoquer

jusqu

a

plus

de

de

m?emoire

perdue

-RRB-

le

pavage

permet

une

solution

moins

co

uteuse

en

m?emoire

et

toujours

performante

La

perte

de

vitesse

Chapitre

Validation

exp?erimentale

est

de

moins

de

entre

des

patrons

d'une

ou

deux

pages

et

de

moins

de

entre

des

patrons

d'une

ou

quatre

pages

Pour

chaque

taille

de

vecteur

le

pavage

propose

une

version

utilisant

une

dilatation

raisonnable

-LRB-

moins

de

-RRB-

et

permettant

d'obtenir

des

performances

equivalentes

a

celles

obtenues

en

utilisant

un

protocole

de

coh?erence

faible

La

figure

permet

de

comparer

les

r?esultats

obtenus

entre

les

diff?erentes

versions

dans

le

cas

de

vecteurs

de

taille

Conclusions

Nous

avons

etudi?e

dans

ce

chapitre

les

performances

des

programmes

mis

au

point

a

l'aide

des

transformations

du

chapitre

Toutes

les

exp?eriences

ont

et?e

effectu?ees

sur

un

muni

de

la

MVP

KOAN

Les

programmes

utilis?es

dans

les

trois

premi?eres

s?eries

d'exp

eriences

ont

et?e

produits

automatiquement

par

le

compilateur

Fortran-S

dans

lequel

les

optimisations

du

chapitre

ont

et?e

mises

en

oeuvre

Pour

l'algorithme

de

Gram-Schmidt

les

programmes

utilis?es

ont

et?e

mis

au

point

a

la

main

le

compilateur

Fortran-S

n'incluant

pas

encore

la

m?ethode

de

pavage

-LRB-

ni

les

techniques

plus

complexes

d?ecrites

au

chapitre

-RRB-

Dans

toutes

les

exp?eriences

d?ecrites

les

am?eliorations

apport?ees

se

sont

traduites

par

des

gains

en

temps

d'ex

ecution

par

rapport

a

une

version

parall?elis?ee

ona

vementAE

Ceci

tient

au

fait

que

les

transformations

op?er?ees

n'induisent

qu'un

faible

surco

ut

de

gestion

a

l'ex

ecution

et

portent

leurs

fruits

quant

a

la

r?eduction

du

faux-partage

ou

de

ses

effets

Nous

avons

egalement

compar?e

nos

transformations

avec

les

optimisations

classiques

alignement

des

tableaux

sur

les

bornes

de

pages

et

utilisation

de

la

coh?erence

faible

Nos

techniques

sont

g?en?eralement

un

peu

moins

performantes

que

l'alignement

mais

poss?edent

l'avantage

sur

ce

dernier

d'

etre

beaucoup

plus

souples

d'utilisation

et

donc

plus

largement

applicables

Les

performances

sont

sensiblement

les

m

emes

qu'avec

un

protocole

de

coh?erence

faible

Cependant

il

faut

noter

que

la

comparaison

n

a

et?e

effectu?ee

que

sur

un

nid

de

boucle

pr?esentant

du

faux

partage

Or

l'int

er

et

de

notre

technique

sur

une

modification

du

protocole

de

coh?erence

est

que

nous

apportons

des

crit?eres

th?eoriques

permettant

de

d?eceler

a

la

compilation

les

boucles

et

les

tableaux

susceptibles

de

produire

du

faux-partage

Sans

cette

etude

pr?ealable

l'utilisation

d'un

protocole

de

coh?erence

faible

sur

une

application

r?eelle

compl?ete

risquerait

d'introduire

des

co

uts

a

l'ex

ecution

sur

des

boucles

ne

n?ecessitant

pas

de

traitement

particulier

ce

qui

ne

serait

pas

notre

cas

La

technique

de

partitionnement

des

ecritures

en

blocs

justifi?es

s

est

r?ev?el?ee

r?esistante

face

a

des

contraintes

suppl?ementaires

et

a

des

fluctuations

des

hypoth?eses

de

travail

-LCB-

En

plus

de

l'

elimination

du

faux-partage

en

ecriture

ce

partitionnement

permet

d'utiliser

largement

l'affinit

e

entre

nids

de

boucles

et

la

localit?e

temporelle

-LRB-

exp?erience

DMXPY

triangulaire

-RRB-

-LCB-

Cette

m?ethode

a

originellement

pour

but

de

traiter

le

faux-partage

en

ecriture

mais

comme

le

montrent

les

exp?eriences

effectu?ees

avec

les

programmes

Permea

et

Gram-Schmidt

elle

permet

egalement

en

all?egeant

le

traffic

sur

le

r?eseau

de

r?eduire

les

co

uts

dus

aux

conflits

entre

lecteurs

et

ecrivains

et

celui

des

d?efauts

en

lecture

Elle

poss?ede

egalement

des

oeffets

de

bordsAE

pouvant

etre

appr?eciables

a

l'utilisation

-LCB-

La

limitation

du

grain

de

donn?ees

aux

pages

implique

une

limitation

du

grain

de

parall?elisme

souvent

d?elicat

a

d?eceler

ce

qui

prot?ege

des

d?egradations

de

performances

dues

a

l'utilisation

d'un

parall?elisme

trop

massif

pour

une

application

donn?ee

-LCB-

Les

performances

de

la

boucle

transform?ee

ne

sont

plus

sujettes

a

l'irr

egularit?e

due

aux

propri?et?es

arithm?etiques

entre

taille

des

pages

et

taille

des

donn?ees

Ceci

rend

les

temps

d'ex

ecutions

plus

pr?evisibles

et

facilite

donc

la

phase

de

mise

au

point

du

programme

Notons

n?eanmoins

que

quelques

d?efauts

de

cette

premi?ere

version

du

compilateur

ont

pu

etre

remarqu?es

lors

de

ces

exp?eriences

telle

que

l'inaptitude

a

eviter

l'attribution

a

un

processeur

d'une

boucle

vide

d?efauts

qui

ne

devraient

pas

perdurer

dans

les

versions

futures

Chapitre

Validation

exp?erimentale

Nombre

de

processeurs

-LRB-

a

-RRB-

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

Processeurs

-LRB-

b

-RRB-

Speedup

ORIG

PP-OPT

FS-OPT

Max

jDPE

-LRB-

Nb

de

DPE

-RRB-

Max

jDPL

-LRB-

Nb

de

DPL

-RRB-

Nb

de

Proc

ORIG

PP-OPT

FS-OPT

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

-RRB-

-LRB-

c

-RRB-

Fig.

Performances

des

versions

originales

et

optimis?ees

de

PERMEA

-LRB-

a

-RRB-

Temps

d'ex

ecution

-LRB-

b

-RRB-

Speed-up

-LRB-

c

-RRB-

Dur?ees

maximales

-LRB-

secondes

-RRB-

pass?ees

par

un

processeur

en

d?efaut

de

page

en

ecriture

-LRB-

DPE

-RRB-

ou

en

lecture

-LRB-

DPL

-RRB-

nombre

correspondant

de

d?efauts

Nombre

de

processeurs

-LRB-

a

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

FS-OPT

PP-OPT

Nombre

de

processeurs

-LRB-

b

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

FS-OPT

-LRB-

-RRB-

PP-OPT

-LRB-

-RRB-

Nombre

de

processeurs

-LRB-

c

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

processeurs

-LRB-

d

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

-LRB-

-RRB-

FS-OPT

-LRB-

-RRB-

Fig.

Temps

d'ex

ecution

des

versions

originales

et

optimis?ees

du

programme

DMXPY

-LRB-

Test

-RRB-

Chapitre

Validation

exp?erimentale

-LRB-

a

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

processeurs

-LRB-

a

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

processeurs

-LRB-

a

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

processeurs

-LRB-

a

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Fig.

Temps

d'ex

ecution

des

versions

originales

et

optimis?ees

du

programme

DMXPY

triangulaire

-LRB-

Test

-RRB-

Nid

Programme

Lawrence

Livermore

Kernel

DOALL

TO

d

-LRB-

N

-RRB-

fie

DO

TO

DO

MAX

-LRB-

e

-RRB-

TO

MIN

-LRB-

d

-LRB-

-RRB-

e

N

-RRB-

RZU

ZU

-LSB-

-RSB-

ZU

-LSB-

-RSB-

S

-LRB-

ZA

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RSB-

ZZ

-LSB-

-RSB-

-RRB-

-RRB-

ZA

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RSB-

ZZ

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RSB-

ZZ

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZZ

-LSB-

-RRB-

ZZ

-LSB-

-RRB-

-RRB-

-RRB-

RZV

ZV

-LSB-

-RSB-

ZV

-LSB-

-RSB-

S

-LRB-

ZA

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

ZA

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

ZB

-LSB-

-RSB-

-LRB-

ZR

-LSB-

-RSB-

ZR

-LSB-

-RSB-

-RRB-

-RRB-

END

DO

END

DO

END

DOALL

Chapitre

Validation

exp?erimentale

Nombre

de

processeurs

-LRB-

b

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

-LRB-

b

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

processeurs

-LRB-

b

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Nombre

de

processeurs

-LRB-

b

-RRB-

Taille

du

probl?eme

Temps

d'ex

ecution

-LRB-

sec

-RRB-

ORIG

PP-OPT

FS-OPT

Fig.

Temps

d'ex

ecution

des

versions

originales

et

optimis?ees

du

programme

Do

i

-LRB-

Normalisation

du

vecteur

V

-LSB-

i

-RSB-

-RRB-

V

-LSB-

i

-RSB-

V

-LSB-

i

-RSB-

kV

-LSB-

i

-RSB-

DoAll

j

i

-LRB-

Correction

du

vecteur

V

-LSB-

j

-RSB-

en

utilisant

le

nouveau

V

-LSB-

i

-RSB-

-RRB-

V

-LSB-

j

-RSB-

V

-LSB-

j

-RSB-

-LRB-

V

-LSB-

i

-RSB-

T

V

-LSB-

j

-RSB-

-RRB-

V

-LSB-

i

-RSB-

EndDoAll

EndDo

Fig.

Algorithme

de

Gram-Schmidt

modifi?e

#define

NC

#define

MC

#define

dilat

#define

pave

typedef

real

vec

-LSB-

MC

b

-RSB-

vec

v

int

id

main

-LRB-

-RRB-

-LCB-

int

len

Creating

the

shared

virtual

memory

region

len

NC

-LRB-

MC

b

-RRB-

sizeof

-LRB-

real

-RRB-

-LRB-

-RRB-

id

-LRB-

len

-RRB-

v

-LRB-

vec

-RRB-

-LRB-

id

MODULO

RW

-RRB-

Initializing

the

matrix

and

put

it

in

the

SVM

region

gsync

-LRB-

-RRB-

Calling

Modified-Gram-Schimdt

on

each

processor

mgs

-LRB-

-RRB-

gsync

-LRB-

-RRB-

Freeing

the

shared

region

-LRB-

id

-RRB-

-RCB-

mgs

-LRB-

-RRB-

-LCB-

real

comp

xnorm

int

me

nbnodes

ppave

idxp

int

i

j

k

l

int

maxbloc

vectinf

vectsup

Nprime

nbnodes

numnodes

-LRB-

-RRB-

me

mynode

-LRB-

-RRB-

ppave

nbnodes

pave

Nprime

-LRB-

int

-RRB-

-LRB-

pave

ceil

-LRB-

-LRB-

double

-RRB-

NC/pave

-RRB-

-RRB-

maxbloc

me

pave

Last

Block

of

proc

me

-LRB-

-RRB-

for

-LRB-

i

i

NC

i

-RRB-

-LCB-

idxp

-LRB-

-LRB-

int

-RRB-

floor

-LRB-

-LRB-

double

-RRB-

-LRB-

-RRB-

pave

-RRB-

-RRB-

nbnodes

processor

number

idxp

normalize

vector

v

-LSB-

i

-RSB-

-LRB-

id

idxp

v

-LSB-

i

-RSB-

-LSB-

-RSB-

v

-LSB-

i

-RSB-

-LSB-

MC

-RSB-

-RRB-

if

-LRB-

me

idxp

-RRB-

-LCB-

xnorm

-LRB-

MC

v

-LSB-

i

-RSB-

-RRB-

sscal

-LRB-

MC

xnorm

v

-LSB-

i

-RSB-

-RRB-

-RCB-

-LRB-

id

-RRB-

Computing

in

parallel

for

-LRB-

j

maxbloc

j

i

j

ppave

-RRB-

-LCB-

Different

blocks

of

proc

me

-LRB-

-RRB-

vectinf

MAX

-LRB-

j-pave

i

-RRB-

vectsup

MIN

-LRB-

j

-RRB-

for

-LRB-

l

vectsup

l

vectinf

l

-RRB-

-LCB-

Different

Vectors

of

the

Block

comp

sdot

-LRB-

MC

v

-LSB-

i

-RSB-

v

-LSB-

l

-RSB-

-RRB-

saxpy

-LRB-

MC

comp

v

-LSB-

i

-RSB-

v

-LSB-

l

-RSB-

-RRB-

-RCB-

-RCB-

-RCB-

-RCB-

Fig.

Programme

C

apr?es

pavage

de

l'algorithme

de

Gram-Schmidt

Chapitre

Validation

exp?erimentale

i

D

Fig.

Pavage

de

l'algorithme

de

Gram-Schmidt

Localit?e

temporelle

spatiale

et

equilibre

des

charges

Taille

Dilatation

Performances

des

en

Nb

m?emoire

Patrons

DPL

DPE

INV

Temps

vecteurs

d'

elts

perdue

-LRB-

-RRB-

-LRB-

en

pages

-RRB-

d'ex

ecution

1984 1984 1984 421

1984 1984 1984 423

1984 1984 1984 424

1984 1984 1984 444

1984 1984 1984 469

9914 2544 25786

1984 1984 1984 518

9752 2544 25624

1984 1984 1984 617

1984 1984 1984 715

1984 1984 1984 753

Tab

Gram-Schmidt

performances

du

pavage

-LRB-

en

secondes

-RRB-

Chapitre

Validation

exp?erimentale

Ordonnancement

par

blocs

Taille

des

DPE

Temps

DPE

Temps

DPE

Temps

DPE

Temps

vecteurs

d'ex

ec

d'ex

ec

d'ex

ec

d'ex

ec

1892 105140

Tab

Gram-Schmidt

performances

de

l'ordonnancement

par

blocs

-LRB-

en

secondes

-RRB-

Ordonnancement

cyclique

Taille

des

DPE

Temps

DPE

Temps

DPE

Temps

vecteurs

d'ex

ec

d'ex

ec

d'ex

ec

1028 877657

1129 1984 530 1984

1032 815741

1074 1984 531 1984

1036 817330

1077 1984 533 1984

1088 859099

1180 1984 553 1984

1152 769238

1133 1984 577 1984

1280 685805

1117 1984 626 1984

1536 750986

1148 1984 723 1984

1792 786352

1315 1984 820 1984

1892 798743

1305 1984 858 1984

Tab

Gram-Schmidt

performances

de

l'ordonnancement

cyclique

-LRB-

en

secondes

-RRB-

Chapitre

Validation

exp?erimentale

x

Distribution

par

blocs

Distribution

cyclique

pavage

Temps

d'ex

cution

Algorithme

de

Gram-Schmidt

Coh?rence

faible

Coh?rence

forte

et

Alignement

sur

les

pages

Coh?rence

forte

alignement

et

diffusion

Coh?rence

faible

et

diffusion

Coh?rence

forte

Fig.

Algorithme

de

Gram-Schmidt

comparaison

des

performances

pour

M

Chapitre

Conclusions

Les

machines

parall?eles

distribu?ees

a

adressage

global

semblent

s

imposer

dans

la

recherche

d'un

compromis

entre

m?emoire

distribu?ee

et

m?emoire

partag?ee

Elle

poss?edent

en

effet

l'avantage

de

tirer

partie

de

l'extensibilit

e

des

premi?eres

tout

en

conservant

la

souplesse

de

programmation

des

secondes

Les

performances

actuelles

de

ces

machines

sont

cependant

encore

loin

de

ce

que

laisse

esp?erer

leur

puissance

intrins?eque

des

efforts

importants

restant

a

fournir

au

niveau

de

l'environnement

de

programmation

et

principalement

du

compilateur

Nous

nous

restreignons

dans

cette

th?ese

au

cas

des

machines

virtuelles

partag?ees

dot?ees

d'un

protocole

de

coh?erence

forte

Notre

objectif

est

d'

etudier

et

de

limiter

les

effets

du

ph?enom?ene

de

fauxpartage

qui

est

un

des

freins

principaux

aux

performances

de

ces

machines

Nous

pr?esentons

une

adaptation

au

cadre

de

la

MVP

des

techniques

de

transformation

de

programme

visant

a

optimiser

la

localit?e

des

nids

de

boucle

ainsi

que

le

d?eveloppement

d'outils

th?eoriques

pour

la

g?en?eration

de

code

Nous

avons

cherch?e

a

g?en?eraliser

le

plus

possible

le

champ

d'application

de

ces

m?ethodes

pour

les

rendre

automatiques

et

les

int?egrer

a

l'environnement

de

programmation

pour

MVP

Fortran-S

Nous

proposons

une

technique

de

partitionnement

en

blocs

ojustifi?esAE

permettant

d'

eliminer

totalement

le

faux

partage

dans

le

cas

des

nids

de

boucles

parall?eles

ne

contenant

qu'un

seul

acc?es

en

ecriture

Nous

pr?esentons

de

nombreuses

variantes

de

cette

technique

afin

de

pouvoir

traiter

au

moins

partiellement

les

cas

o?u

il

existe

des

boucles

s?equentielles

et

le

cas

des

boucles

contenant

plusieurs

r?ef?erences

Une

technique

moins

radicale

mais

n?ecessitant

beaucoup

moins

d'hypoth

ese

le

regroupement

des

op?erations

d'

ecriture

et

l'utilisation

de

copies

locales

permet

dans

les

cas

o?u

on

ne

sait

pas

eliminer

le

faux-partage

d'

eviter

qu'il

ne

d?eg?en?ere

en

effet

ping-pong

L'importance

capitale

de

la

localit?e

spatiale

dans

le

contexte

des

MVP

nous

a

amen?e

a

nous

int?eresser

aux

transformations

de

programme

optimisant

la

localit?e

Nous

proposons

une

extension

de

ces

transformations

au

cas

non

unimodulaire

en

utilisant

un

partitionnement

du

domaine

d'it

eration

en

treillis

et

la

cr?eation

Chapitre

Conclusions

de

nids

de

boucle

pour

chaque

el?ement

de

la

partition

Nous

donnons

egalement

un

raffinement

de

l'algorithme

de

Fourier-Motzkin

au

cas

des

domaines

entiers

permettant

lors

de

la

phase

de

g?en?eration

de

code

de

calculer

pr?ecis?ement

les

bornes

de

boucles

et

d'

eviter

ainsi

l'occurrence

d'it

erations

vides

La

technique

de

partitionnement

des

nids

de

boucle

et

le

regroupement

des

op?erations

d'

ecriture

ont

et?e

mis

en

oeuvre

dans

l'environnement

Fortran-S

Elles

ont

donc

pu

etre

test?ees

exp?erimentalement

a

partir

de

programmes

transform?es

de

fa?con

automatique

Les

autres

transformations

ont

et?e

estim?ees

a

partir

de

programmes

mis

au

point

manuellement

A

l'issue

de

cette

etude

il

appara

t

que

dans

le

cas

des

nids

de

boucles

r?eguliers

une

grande

part

de

l'adaptation

du

programme

au

contexte

de

la

MVP

puisse

etre

effectu?ee

automatiquement

lors

de

la

phase

de

compilation

Perspectives

Certaines

m?ethodes

parmi

lesquelles

l'utilisation

de

transformation

non

unimodulaires

et

la

nouvelle

version

de

l'algorithme

de

Fourier-Motzkin

n'ont

pas

encore

et?e

mises

en

oeuvre

dans

l'environnement

Fortran-S

De

plus

les

premi?eres

utilisations

de

la

technique

de

partitionnement

ont

soulign?e

des

maladresses

dans

la

premi?ere

version

Nous

avons

et?e

amen?e

a

faire

des

hypoth?eses

assez

fortes

sur

la

nature

des

nids

de

boucles

que

l'on

pouvait

traiter

En

particulier

la

technique

de

partitionnement

n'est

applicable

qu'au

nids

de

boucles

parfaitement

imbriqu?es

et

le

cas

o?u

il

n'est

pas

parfaitement

parall?ele

ou

poss?ede

plusieurs

r?ef?erences

n

a

et?e

que

tr?es

partiellement

trait?e

De

m

eme

en

ce

qui

concerne

l'application

d'une

transformation

non

unimodulaire

les

d?ependances

du

nid

transform?e

-LRB-

et

donc

la

l?egalit?e

de

la

transformation

-RRB-

n'ont

et?e

etudi?ees

que

dans

le

cas

de

vecteurs

de

distance

de

d?ependance

Un

important

travail

th?eorique

reste

donc

a

fournir

en

vue

d'une

eventuelle

application

plus

large

de

ces

m?ethodes

Nous

nous

sommes

restreints

au

cas

des

nids

de

boucle

a

acc?es

r?eguliers

et

il

serait

probablement

extr

emement

profitable

de

comparer

ces

r?esultats

a

ceux

effectu?es

dans

le

m

eme

temps

dans

le

cas

d'acc

es

irr?eguliers

-LSB-

-RSB-

Il

pourrait

etre

envisag?e

a

terme

de

regrouper

les

m?ethodes

propos?ees

en

un

sch?ema

plus

global

Nous

n'avons

cherch?e

a

tous

nos

probl?emes

que

des

solutions

applicables

a

la

compilation

une

collaboration

avec

des

solutions

mat?erielles

pourrait

s

av?erer

efficace

dans

les

cas

o?u

trop

peu

de

param?etres

sont

connus

avant

l'ex

ecution

On

peut

par

exemple

penser

a

une

modification

du

protocole

de

coh?erence

oguid?eAE

par

l'utilisation

du

mod?ele

que

nous

proposons

a

la

compilation

Bibliographie

Bibliographie

-LSB-

-RSB-

A.

Agarwal

M.Horowitz

et

J.

Hennessy

An

analytical

cache

model

ACM

Transactions

on

Computer

Systems

Mai

-LSB-

-RSB-

R.

Allen

D.

Callahan

et

K.

Kennedy

Automatic

decomposition

of

scientific

programs

for

parallel

execution

Symposium

on

Principles

of

Programming

Language

pages

-LCB-

Munich

Allemagne

Janvier

-LSB-

-RSB-

R.

Allen

et

K.

Kennedy

Automatic

loop

interchange

ACM

SIGPLAN

Conference

on

Programming

Languages

Design

and

Implementation

pages

-LRB-

-RRB-

-LCB-

Juin

-LSB-

-RSB-

C.

Ancourt

G?en?eration

automatique

de

codes

de

transfert

pour

multiprocesseurs

a

m?emoires

locales

Th?ese

de

Doctorat

Universit?e

Paris

VI

Ecole

Nationale

Sup?erieure

des

Mines

de

Paris

Mars

-LSB-

-RSB-

C.

Ancourt

et

F.

Irigoin

Scanning

polyhedra

with

DO

loops

ACM

SIG

PLAN

Symposium

on

Principles

and

Practice

of

Parallel

Programming

pages

-LRB-

-RRB-

-LCB-

Williamsburg

VA

Avril

-LSB-

-RSB-

F.

Andr?e

O.

Ch?eron

et

J.L.

Pazat

Compiling

sequential

programs

for

distributed

memory

parallel

computers

with

Pandore

II

In

Jack

J.

Dongarra

et

Bernard

Tourancheau

Editeurs

Environments

and

Tools

for

Parallel

Scientific

Computing

volume

of

Advances

in

Parallel

Computing

pages

-LCB-

Elsevier

Science

Publishers

B.V.

-LSB-

-RSB-

J.K.

Archibald

The

cache

coherence

problem

in

shared-memory

multiprocessors

Th?ese

de

Doctorat

University

of

Washington

-LSB-

-RSB-

E.

Badouel

K.

Bouatouch

Z.

Lahjomri

et

T.

Priol

A

versatile

tool

for

parallelizing

realistic

rendering

algorithms

Rapport

technique

IRISA

Rennes

Juillet

-LSB-

-RSB-

J.P.

Ban

atre

M.

Ban

atre

et

G.

Muller

Main

aspects

of

the

Gothic

distributed

system

In

European

Teleinformatics

Conference

on

Research

into

Networks

and

Distributed

Applications

Bibliographie

-LSB-

-RSB-

U.

Banerjee

Dependence

analysis

for

supercomputing

Kluwer

Academic

Norwell

Mass

-LSB-

-RSB-

U.

Banerjee

Unimodular

transformation

of

double

loops

Advances

in

Language

and

Compilers

for

Parallel

Processing

-LSB-

-RSB-

BBN

Inside

the

computer

BBN

Advanced

Computer

Inc.

Cambridge

Massachusetts

F?evrier

-LSB-

-RSB-

L.A.

Belady

A

study

of

replacement

algorithms

for

a

virtual-storage

computer

IBM

Systems

Journal

-LSB-

-RSB-

J.K

Bennett

J.B.

Carter

et

W.

Zwaenepoel

Adaptative

software

cache

management

for

distributed

shared

memory

architectures

In

International

Symposium

on

Computer

Architecture

pages

-LCB-

-LSB-

-RSB-

J.K.

Bennett

J.B.

Carter

et

W.

Zwaenepoel

Munin

Distributed

shared

memory

based

on

type-specific

memory

coherence

In

Conference

on

Principles

and

Practice

of

Parallel

Programming

Mars

-LSB-

-RSB-

R.

Bisiani

A.

Nowatzyk

et

M.

Ravishankar

Coherent

shared

memory

on

a

distributed

memory

machine

International

Conference

on

Parallel

Processing

pages

I

-LCB-

Ao

ut

-LSB-

-RSB-

D.L.

Black

A.

Gupta

et

W.D.

Weber

Competitive

management

of

distributed

shared

memory

In

IEEE

International

Computer

Conference

pages

-LCB-

F?evrier

-LSB-

-RSB-

F.

Bodin

C.

Eisenbeis

W.

Jalby

T.

Montaut

P.

Rabain

et

D.

Winheiser

Algorithms

for

data

locality

Rapport

technique

rapport

convention

Esprit

Bra

Apparc

-LSB-

-RSB-

F.

Bodin

C.

Eisenbeis

W.

Jalby

et

D.

Windheiser

A

quantitative

algorithme

for

data

locality

optimization

In

Code

Generation

Concepts

Tools

Techniques

Springer

Verlag

-LSB-

-RSB-

F.

Bodin

J.

Erhel

et

T.

Priol

Parallel

sparse

matrix

vector

multiplication

using

a

shared

virtual

memory

environment

In

SIAM

Conference

on

Parallel

Processing

for

Scientific

Computing

-LSB-

-RSB-

F.

Bodin

E.D.

Granston

et

T.

Montaut

Page-level

affinity

scheduling

for

eliminating

false

sharing

In

Workshop

on

Compilers

for

Parallel

Computers

Malaga

Espagne

Juin

-LSB-

-RSB-

F.

Bodin

L.

Kervella

et

T.

Priol

Fortran-S

A

Fortran

interface

for

shared

virtual

memory

Architectures

ACM

Proceedings

of

Supercomputing

Novembre

Bibliographie

-LSB-

-RSB-

F.

Bodin

et

T.

Priol

Overview

of

the

Koan

programming

environment

for

the

and

performance

evaluation

of

the

because

test

program

In

Because

Workshop

Octobre

-LSB-

-RSB-

F.

Bodin

T.

Priol

D.

Gannon

et

P.

Mehrotra

Directions

in

parallel

programming

HPF

virtual

shared

memory

and

object

parallelism

in

pC

Proceedings

of

Summer

Institute

on

Parallel

Computer

Architectures

Languages

and

Algorithms

Juin

-LSB-

-RSB-

W.

J.

Bolosky

software

coherence

in

multiprocessor

memory

systems

Th?ese

de

Doctorat

University

of

Rochester

NY

-LSB-

-RSB-

L.

Bomans

et

D.

Roose

Benchmarking

the

Hypercube

Multiprocessor

Concurrency

Practice

and

Experience

pages

-LRB-

-RRB-

-LCB-

Chichester

GB

Septembre

-LSB-

-RSB-

M.

Burke

et

R.

Cytron

Interprocedural

analysis

and

parallelization

ACM

Sigplan

Symposium

on

Compiler

Construction

Juillet

-LSB-

-RSB-

G.

Cabillic

T.

Priol

et

I.

Puaut

Myoan

an

implementation

of

the

Koan

shared

virtual

memory

on

the

intel

paragon

Rapport

technique

IN

RIA

Avril

-LSB-

-RSB-

D.

Callahan

et

K.

Kennedy

Compiling

programs

for

distributed-memory

multiprocessors

Journal

of

Supercomputing

pages

-LCB-

-LSB-

-RSB-

L.M.

Censier

et

P.

Feautrier

A

new

solution

to

coherence

problems

in

multicache

systems

IEEE

Transactions

on

Computers

pages

-LRB-

-RRB-

-LCB-

D?ecembre

-LSB-

-RSB-

Z.

Chamski

Environnement

logiciel

de

programmation

d'un

acc?el?erateur

de

calcul

parall?ele

Th?ese

de

Doctorat

Universit?e

de

Rennes

I

Septembre

-LSB-

-RSB-

B.

Chapman

P.

Mehrotra

et

H.

Zima

Vienna

Fortran

A

Fortran

language

extension

for

distributed

memory

multiprocessors

Rapport

technique

ICASE

Septembre

-LSB-

-RSB-

B.W.

Char

K.O.

Geddes

G.H.

Gonnet

B.L.

Leong

M.B.

Monagan

et

S.M.Watt

Maple

V

language

reference

manual

Springer-Verlag

and

Waterloo

Maple

Publishing

-LSB-

-RSB-

M.C.

Cheng

General

criteria

for

redundant

and

non

redundant

linear

inequalities

Journal

of

Optimization

Theory

and

Applications

Bibliographie

-LSB-

-RSB-

J.F.

Collard

P.

Feautrier

et

T.

Risset

Construction

of

do

loops

from

systems

of

affine

constraints

Rapport

technique

Ecole

Normale

Sup?erieure

de

Lyon

-LSB-

-RSB-

N.

Courtay

Syst?eme

d'am

elioration

de

programmes

Rapport

de

DEA

IFSIC

Universit?e

de

Rennes

I

-LSB-

-RSB-

G.B.

Dantzig

et

B.

Curtis

Eaves

Fourier-Motzkin

elimination

and

its

dual

Journal

of

Combinatorial

Theory

-LRB-

A

-RRB-

-LCB-

-LSB-

-RSB-

F.

Darema-Rodgers

V.A.

Norton

et

G.F.

Pfister

Using

a

single-programmultiple-data

computational

model

for

parallel

execution

of

scientific

applications

Rapport

technique

IBM

T.J.

Watson

Research

Center

Novembre

-LSB-

-RSB-

P.

Dasgupta

R.

Leblanc

et

W.

Appelbe

The

Clouds

distributed

operating

system

functional

description

implementation

details

and

related

work

In

IEEE

International

Conference

on

Distributed

Computing

System

-LSB-

-RSB-

J.

Dongarra

J.

Bunch

C.

Moler

et

G.

Stewart

Linpack

user

's

guide

Society

for

Industrial

and

Applied

Mathematics

-LSB-

-RSB-

C.

Dubnicki

et

T.J.

Leblanc

Adjustable

block

size

coherent

caches

In

International

Symposium

on

Computer

Architecture

pages

-LCB-

Mai

-LSB-

-RSB-

S.

J.

Eggers

et

T.

E.

Jeremiassen

Eliminating

false

sharing

In

International

Conference

on

Parallel

Processing

pages

I.

-LCB-

-LSB-

-RSB-

S.J.

Eggers

et

R.H.

Katz

A

characterisation

of

sharing

in

parallel

programs

and

its

application

to

coherency

protocol

evaluation

In

International

Symposium

on

Computer

Architecture

pages

-LCB-

Mai

-LSB-

-RSB-

S.J.

Eggers

et

R.H.

Katz

The

effect

of

sharing

on

the

cache

and

bus

performance

of

parallel

programs

In

International

Conference

on

Architectural

Support

for

Programming

Languages

and

Operating

Systems

pages

-LCB-

Avril

-LSB-

-RSB-

J.

Erhel

M.

Hahad

et

T.

Priol

Factorisation

parall?ele

de

cholesky

pour

matrices

creuses

sur

une

m?emoire

virtuelle

partag?ee

Rapport

technique

IRISA

Mai

-LSB-

-RSB-

P.

Feautrier

Parametric

integer

programming

RAIRO

Recherche

Op?erationnelle

-LCB-

Septembre

Bibliographie

-LSB-

-RSB-

P.

Feautrier

Semantical

analysis

and

mathematical

programming

application

to

parallelization

and

vectorization

pages

-LCB-

Elsevier

Science

-LSB-

-RSB-

F.

Fernandes

et

P.

Quinton

Extension

of

chernikova

's

algorithm

for

solving

general

mixed

linear

programming

problems

Rapport

technique

IRISA

-LSB-

-RSB-

M.J.

Flynn

Very

high

speed

computing

systems

Proceedings

of

the

IEEE

pages

-LRB-

-RRB-

-LCB-

D?ecembre

-LSB-

-RSB-

J.B.J.

Fourier

Solution

d'une

question

particuli?ere

du

calcul

des

in?egalit?es

-LRB-

-RRB-

et

Analyse

de

travaux

de

l'Acad

emie

Royale

des

Sciences

-LRB-

-RRB-

-LSB-

-RSB-

M.

Le

Fur

Parcours

de

poly?edre

param?etr?e

avec

l'

elimination

de

FourierMotzkin

Rapport

technique

IRISA

Rennes

Septembre

-LSB-

-RSB-

M.

Le

Fur

Scanning

parameterized

polyhedron

using

Fourier-Motzkin

elimination

In

HPCS

Montr?eal

Canada

-LSB-

-RSB-

K.

Gallivan

W.

Jalby

et

D.

Gannon

On

the

problem

of

optimizing

data

transfers

for

complex

memory

systems

In

International

Conference

on

Supercomputing

-LSB-

-RSB-

D.

Gannon

W.

Jalby

et

K.

Gallivan

Strategies

for

cache

and

local

memory

management

by

global

program

transformation

In

Journal

of

Parallel

and

Distributed

Computing

pages

-LRB-

-RRB-

-LCB-

Octobre

-LSB-

-RSB-

D.

Gelernter

Generative

communication

in

Linda

ACM

Transactions

on

Programming

Languages

and

Systems

-LRB-

-RRB-

-LCB-

Janvier

-LSB-

-RSB-

D.

Gelernter

N.

Carriero

S.

Chandran

et

S.

Chang

Parallel

programming

in

Linda

In

International

Conference

on

Parallel

Processing

pages

-LCB-

IEEE

-LSB-

-RSB-

R.L.

Graham

D.E.

Knuth

et

O.

Patashnik

Concrete

Mathematics

A

Foundation

for

Computer

Science

Addison-Wesley

Publishing

Company

-LSB-

-RSB-

E.D.

Granston

Toward

a

compile

time

methodology

for

reducing

false

sharing

and

communication

traffic

in

shared

virtual

memory

sustems

In

Annual

Workshop

on

Languages

and

Compilers

for

Parallel

Computing

Ao

ut

-LSB-

-RSB-

E.D.

Granston

T.

Montaut

et

F.

Bodin

Evaluating

two

loop

transformations

for

reducing

multiple-writer

false

sharing

In

Annual

Workshop

on

Languages

and

Compilers

for

Parallel

Computing

Ithaca

New

York

Ao

ut

Bibliographie

-LSB-

-RSB-

E.D.

Granston

et

H.A.G.

Wijshoff

Managing

pages

on

virtual

shared

memory

multiprocessor

Getting

the

compiler

into

the

game

In

International

Conference

on

Parallel

Processing

-LSB-

-RSB-

M.

Hahad

Sch?emas

d'ex

ecution

pour

algorithmes

irr?eguliers

sur

machines

parall?eles

a

m?emoire

virtuelle

partag?ee

Th?ese

de

Doctorat

Universit?e

de

Rennes

I

Juin

-LSB-

-RSB-

E.H.

Hollander

Partitioning

and

labeling

of

loops

by

unimodular

transformations

IEEE

Transactions

on

Parallel

and

Distributed

Systems

Juillet

-LSB-

-RSB-

M.A.

Holliday

Reference

history

page

size

and

migration

daemons

in

local/remote

architectures

In

International

Conference

on

Architectural

Support

for

Programming

Languages

and

Operating

Systems

Avril

-LSB-

-RSB-

HPF

High

performance

Fortran

language

specification

Rapport

technique

Rice

University

-LSB-

-RSB-

Intel

The

Intel

system

In

Third

Conference

on

Hypercube

Concurrent

Computers

and

Applications

pages

-LCB-

Pasadena

California

Janvier

-LSB-

-RSB-

F.

Irigoin

et

R

Triolet

Computing

dependence

direction

vectors

and

dependence

cones

with

linear

systems

Rapport

technique

Ecole

Nationale

Sup?erieure

des

Mines

de

Paris

-LSB-

-RSB-

K.

Kennedy

Automatic

translation

of

Fortran

programs

to

vector

form

Rapport

technique

Rice

University

Houston

Texas

-LSB-

-RSB-

K.

Kennedy

et

K.

McKinley

Optimizing

for

parallelism

and

data

locality

ACM

International

Conference

on

Supercomputing

pages

-LCB-

Washington

D.C.

Juillet

-LSB-

-RSB-

KSR

Technical

summary

Kendall

Square

Research

Waltham

Massachusetts

-LSB-

-RSB-

D.

Kuck

R.

Kuhn

B.

Leasure

et

M.

Wolfe

Dependence

graphs

and

compiler

optimizations

In

ACM

Symposium

on

Principles

of

Programming

Languages

-LSB-

-RSB-

K.G.

Kumar

D.

Kulkarni

et

A.

Basu

Generalized

unimodular

loop

transformations

for

distributed

memory

multiprocessors

International

Conference

on

Parallel

Processing

Bibliographie

-LSB-

-RSB-

Z.

Lahjomri

Conception

et

evaluation

d'un

m?ecanisme

de

m?emoire

virtuelle

partag?ee

sur

une

machine

multiprocesseur

a

m?emoire

distribu?ee

Th?ese

de

Doctorat

Universit?e

de

Rennes

I

Janvier

-LSB-

-RSB-

Z.

Lahjomri

et

T.

Priol

Koan

A

shared

virtual

memory

for

the

Hypercube

Rapport

technique

IRISA

Rennes

Juillet

-LSB-

-RSB-

L.

Lamport

Parallel

execution

of

DO

loops

Communication

of

the

ACM

pages

-LRB-

-RRB-

-LCB-

F?evrier

-LSB-

-RSB-

S.

Lang

Algebra

Reading

Massachussetts

-LSB-

-RSB-

K.

Li

Shared

virtual

memory

on

loosely

coupled

multiprocessors

Th?ese

de

Doctorat

Yale

University

Septembre

-LSB-

-RSB-

K.

Li

IVY

A

shared

virtual

memory

system

for

parallel

computing

Proceedings

of

the

International

Conference

on

Parallel

Processing

-LCB-

Ao

ut

-LSB-

-RSB-

K.

Li

et

R.

Schaefer

A

Hypercube

shared

virtual

memory

system

In

International

Conference

on

Parallel

Processing

-LSB-

-RSB-

W.

Li

et

K.

Pingali

Access

normalization

Loop

restructuring

for

numa

compilers

International

Conference

on

Architectural

Support

for

Programming

Languages

and

Operating

Systems

-LSB-

-RSB-

W.

Li

et

K.

Pingali

A

singular

loop

transformation

framework

based

on

non-singular

matrices

International

Journal

of

Parallel

Processing

Avril

-LSB-

-RSB-

D.

Loveman

High

Performance

Fortran

IEEE

Parallel

and

Distributed

Technology

-LCB-

F?evrier

-LSB-

-RSB-

M.

Metcalf

et

J.

Reid

Fortran

explained

Oxford

Science

Publications

-LSB-

-RSB-

B.

Michel

Conception

et

r?ealisation

de

la

m?emoire

virtuelle

Gothic

Th?ese

de

Doctorat

Universit?e

de

Rennes

I

Septembre

-LSB-

-RSB-

M.

Newmann

Integral

Matrices

Academic

Press

N.Y.

-LSB-

-RSB-

M.F.P.

O'Boyle

Program

and

data

transformations

for

efficient

execution

of

array

computation

on

distributed

memory

architectures

Th?ese

de

Doctorat

University

of

Manchester

Janvier

-LSB-

-RSB-

M.F.P.

O'Boyle

L.

Kervella

et

F.

Bodin

Synchronization

minimization

in

a

spmd

execution

model

Journal

of

Parallel

and

Distributed

Computing

Septembre

Bibliographie

-LSB-

-RSB-

W.

Oed

The

Cray

Research

massively

parallel

processor

system

CRAY

Rapport

technique

Cray

Research

GmbH

M?unchen

Germany

Novembre

-LSB-

-RSB-

D.

Padua

D.

Kuck

et

D.

Lawrie

High-speed

multiprocessors

and

compilation

techniques

IEEE

Transactions

on

Computers

pages

-LRB-

-RRB-

-LCB-

Septembre

-LSB-

-RSB-

D.

Padua

et

M.

Wolfe

Advanced

compiler

optimizations

for

supercomputers

Communications

of

the

ACM

pages

-LRB-

-RRB-

-LCB-

D?ecembre

-LSB-

-RSB-

J.F.

Palmer

The

Ncube

family

of

high-performance

parallel

computer

systems

In

Third

Conference

on

Hypercube

Concurrent

Computers

and

Applications

pages

-LCB-

Pasadena

California

Janvier

ACM

-LSB-

-RSB-

A.

Porterfield

Compiler

management

of

program

locality

Rapport

technique

Rice

University

-LSB-

-RSB-

T.

Priol

Trade-offs

between

shared

virtual

memory

and

message-passing

on

an

Hypercube

Rapport

technique

IRISA

Janvier

-LSB-

-RSB-

T.

Priol

et

Z.

Lahjomri

Experiments

with

shared

virtual

memory

on

a

hypercube

In

International

Conference

on

Parallel

Processing

pages

-LCB-

Ao

ut

-LSB-

-RSB-

W.

Pugh

The

Omega

test

a

fast

and

practical

integer

programming

algorithm

for

dependence

analysis

Supercomputing

-LSB-

-RSB-

S.

Raina

Virtual

shared

memory

A

survey

of

techniques

and

systems

Rapport

technique

University

of

Bristol

D?ecembre

-LSB-

-RSB-

J.

Ramanujam

Non-unimodular

transformations

of

nested

loops

Proceedings

of

Supercomputing

pages

-LCB-

Novembre

-LSB-

-RSB-

A.P.

Reeves

The

Paragon

programming

paradigm

and

distributed

memory

multicomputers

Rapport

technique

Cornell

University

Juin

-LSB-

-RSB-

T.

Risset

Parall?elisation

automatique

du

mod?ele

systolique

a

la

compilation

des

nids

de

boucles

Th?ese

de

Doctorat

E.N.S.

de

Lyon

Universit?e

de

Lyon

I

F?evrier

-LSB-

-RSB-

A.

Schrijver

Theory

of

linear

and

integer

programming

Wiley-Interscience

Bibliographie

-LSB-

-RSB-

C.L.

Seitz

The

Cosmic

Cube

Communications

of

the

ACM

-LRB-

-RRB-

-LCB-

Janvier

-LSB-

-RSB-

M.S.

Squillante

et

E.D.

Lazowska

Using

processor-cache

affinity

information

in

shared-memory

multiprocessor

scheduling

IEEE

Transactions

on

Parallel

and

Distributed

Systems

pages

-LRB-

-RRB-

-LCB-

F?evrier

-LSB-

-RSB-

J.M

Stone

Nested

parallelism

in

a

parallel

Fortran

environment

Rapport

technique

IBM

T.J.

Watson

Research

Center

Novembre

-LSB-

-RSB-

Telmat

T-Node

user

manual

F?evrier

-LSB-

-RSB-

TMC

The

technical

summary

Rapport

technique

Thinking

Machines

Corporation

Cambridge

MA

-LSB-

-RSB-

J.

Torrelas

M.S.

Lam

et

J.L.

Hennessy

Shared

data

placement

optimizations

to

reduce

multiprocessor

cache

miss

rates

In

International

Conference

on

Parallel

Processing

pages

II

-LCB-

-LSB-

-RSB-

C.W.

Tseng

An

optimizing

Fortran

D

compiler

for

MIMD

distributed

memory

machines

Th?ese

de

Doctorat

Rice

University

Janvier

-LSB-

-RSB-

R.

Vaswani

et

J.

Zahorjan

The

implication

of

cache

affinity

on

processor

scheduling

for

multiprogrammed

shared

memory

multiprocessors

Rapport

technique

Departement

of

Computer

Science

and

Engineering

University

of

Washington

-LSB-

-RSB-

D.K.

Wilde

A

library

for

doing

polyhedral

operations

Rapport

technique

IRISA

D?ecembre

-LSB-

-RSB-

D.K.

Wilde

et

S.

Rajopadhye

An

inductive

constructive

method

for

computation

of

the

face

lattice

of

a

polyhedron

Rapport

technique

IRISA

D?ecembre

-LSB-

-RSB-

H.P.

Williams

Fourier-Motzkin

elimination

extension

to

integer

programming

problems

Journal

of

Combinatorial

Theory

-LSB-

-RSB-

D.

Windheiser

Data

locality

optimization

Th?ese

de

Doctorat

Universit?e

de

Rennes

I

-LSB-

-RSB-

M.

Wolf

et

M.

Lam

An

algorithm

to

generate

sequential

and

parallel

code

with

improved

data

locality

Rapport

technique

Stanford

University

-LSB-

-RSB-

M.E.

Wolf

Improving

locality

and

parallelism

in

nested

loops

Rapport

technique

Stanford

University

Stanford

CA

Ao

ut

-LSB-

-RSB-

M.E.

Wolf

et

M.S.

Lam

A

data

locality

optimizing

algorithm

ACM

SIG

PLAN

Conference

on

Programming

Languages

Design

and

Implementation

Juin

-LSB-

-RSB-

M.E.

Wolf

et

M.S.

Lam

A

loop

transformation

theory

and

an

algorithm

to

maximize

parallelism

IEEE

Transactions

on

Parallel

and

Distributed

Systems

-LSB-

-RSB-

M.

Wolfe

Loop

skewing

The

wavefront

method

revisited

International

Journal

of

Parallel

Programming

Ao

ut

-LSB-

-RSB-

M.

Wolfe

Optimizing

supercompilers

for

supercomputers

The

MIT

Press

Cambridge

MA

-LSB-

-RSB-

J.

Xue

Automatic

non-unimodular

loop

transformations

for

massive

parallelism

Parallel

Computing

Annexe

A

Le

syst?eme

KOAN

une

MVP

pour

l'iPSC

Tous

les

r?esultats

quantitatifs

contenus

dans

cette

th?ese

sont

issus

d'exp

eriences

men?ees

sur

le

syst?eme

de

m?emoire

virtuelle

partag?ee

KOAN

r?ealis?e

a

l'IRISA

par

T.

Priol

et

Z.

Lahjomri

-LSB-

-RSB-

-LSB-

-RSB-

et

implant?e

sur

l'Hypercube

-LSB-

-RSB-

Il

est

int?egr?e

au

syst?eme

d'exploitation

de

l'Hypercube

et

permet

l'utilisation

de

l'unit

e

de

gestion

de

m?emoire

-LRB-

MMU

-RRB-

aussi

bien

que

de

primitives

de

communications

de

bas

niveau

La

m?emoire

virtuelle

de

Mega-octets

est

d?ecoup?ee

en

pages

de

octets

Le

syst?eme

utilise

une

connaissance

distribu?ee

de

l'

etat

de

la

MVP

chaque

processeur

s

occupe

de

centraliser

dans

une

table

les

informations

concernant

un

sous

ensemble

des

pages

de

la

m?emoire

virtuelle

-LRB-

propri?etaire

de

la

page

nombre

de

copies

en

lecture

etc.

-RRB-

Ce

sous

ensemble

est

d?etermin?e

par

une

fonction

de

placement

cyclique

qui

assure

un

bon

equilibre

des

pages

entre

les

processeurs

et

reste

fixe

au

cours

du

temps

Koan

met

a

la

disposition

du

programmeur

deux

types

de

protocoles

de

coh?erence

Soit

un

protocole

de

coh?erence

forte

par

invalidation

soit

un

protocole

de

coh?erence

faible

permettant

l'

ecriture

simultan?ee

de

plusieurs

processeurs

sur

des

donn?ees

diff?erentes

d'une

m

eme

page

Il

permet

egalement

d'utiliser

les

facilit?es

de

diffusion

de

l'Hypercube

lors

de

phase

producteur-consommateur

Le

syst?eme

KOAN

met

a

notre

disposition

des

outils

d'analyse

de

programmes

en

conservant

des

traces

des

communications

entre

les

processeurs

pendant

une

ex?ecution

parall?ele

On

peut

ainsi

d?enombrer

durant

l'ex

ecution

d'un

programme

le

nombre

de

pages

sur

lesquelles

ont

eu

lieu

des

d?efauts

A.

Performances

intrins?eques

du

syst?eme

KOAN

A.

Co

uts

de

communication

Il

existe

deux

types

de

protocoles

d'envoi

de

message

entre

les

processeurs

de

l'Hypercube

Le

protocole

court

utilis?e

pour

les

messages

de

moins

de

cent

octets

ne

comporte

qu'une

seule

etape

correspondant

au

transfert

du

message

lui-m

eme

La

latence

de

communication

pour

un

message

court

est

de

s

et

le

temps

de

transfert

d'un

mot

de

quatre

octets

est

de

s

-LSB-

-RSB-

Le

temps

de

transfert

d'un

message

court

de

K

mots

est

donc

donn?e

par

la

fonction

Tcom

-LRB-

K

-RRB-

K

-LRB-

s

-RRB-

Le

protocole

long

utilis?e

pour

les

messages

de

plus

de

cent

octets

s

effectue

en

trois

etapes

Un

premier

message

de

contr

ole

est

envoy?e

au

noeud

destinataire

pour

s

assurer

qu'il

poss?ede

suffisamment

de

place

en

m?emoire

pour

recevoir

le

message

le

noeud

destinataire

envoie

un

message

de

confirmation

lorsqu'il

poss?ede

la

place

n?ecessaire

enfin

le

processeur

source

envoie

le

message

au

site

destinataire

Le

temps

de

transfert

d'un

message

long

de

K

mots

est

donn?e

par

la

fonction

Tcom

-LRB-

K

-RRB-

K

-LRB-

s

-RRB-

Nous

avons

mesur?e

sur

le

syst?eme

KOAN

le

co

ut

de

traitement

d'un

d?efaut

de

page

avec

diff?erentes

configurations

Nous

avons

utilis?e

pour

nos

mesures

l'instruction

uclock

-LRB-

-RRB-

permettant

les

mesures

locales

avec

une

r?esolution

d'une

microseconde

Toutes

les

mesures

donn?ees

sont

exprim?ees

en

millisecondes

Elles

correspondent

a

des

moyennes

effectu?ees

sur

mesures

A.

D?efauts

en

lecture

Dans

cette

s?erie

d'exp

eriences

le

gestionnaire

de

la

page

p

est

le

processeur

P

ecrit

sur

la

page

et

la

lit

Nous

avons

mesur?e

la

dur?ee

des

d?efauts

de

page

en

lecture

dans

les

configurations

suivantes

P

et

le

cas

o?u

les

trois

processeurs

sont

distincts

Dans

tous

les

cas

le

gestionnaire

de

la

page

est

le

processeur

dans

la

troisi?eme

exp?erience

le

propri?etaire

est

le

processeur

du

cube

le

plus

eloign?e

de

les

processeurs

en

d?efaut

prennent

toutes

les

autres

valeurs

possibles

La

dur?ee

d'un

d?efaut

de

page

en

lecture

varie

entre

et

millisecondes

suivant

le

type

de

d?efaut

avec

les

r?egles

suivantes

-LRB-

voir

tableau

A.

-RRB-

-LCB-

La

dur?ee

augmente

avec

la

taille

du

cube

-LCB-

Le

cas

le

plus

favorable

est

celui

o?u

le

processeur

qui

provoque

le

d?efaut

est

le

gestionnaire

de

la

page

-LCB-

le

cas

le

moins

favorable

est

celui

o?u

le

processeur

en

d?efaut

le

propri?etaire

de

la

page

et

le

gestionnaire

sont

distincts

-LCB-

La

dur?ee

d'un

d?efaut

en

lecture

est

peu

sensible

a

la

distance

entre

les

processeurs

dans

les

deux

premiers

types

d'exp

eriences

Les

ecarts-types

mesur?es

en

fonction

de

la

distance

entre

les

processeurs

sont

de

s

dans

le

cas

et

de

s

dans

le

cas

P

-LCB-

La

sensibilit?e

a

la

distance

est

plus

importante

pour

la

troisi?eme

exp?erience

-LRB-

davantage

de

messages

echang?es

-RRB-

L'

ecart-type

est

de

s.

Le

tableau

A.

illustre

les

variations

de

la

dur?ee

du

d?efaut

en

fonction

de

la

distance

entre

le

processeur

en

d?efaut

et

le

gestionnaire

pour

l'exp

erience

sur

processeurs

Le

propri?etaire

de

la

page

est

le

processeur

et

le

gestionnaire

est

le

processeur

donc

la

distance

d'un

processeur

avec

le

propri?etaire

est

le

compl?ementaire

a

de

la

distance

entre

ce

processeur

et

le

gestionnaire

On

remarque

que

le

maximum

est

atteint

quand

les

trois

processeurs

sont

le

plus

eloign?es

possible

la

dur?ee

du

d?efaut

etant

plus

sensible

a

la

distance

au

propri?etaire

-LRB-

qui

envoie

la

page

-RRB-

qu

a

la

distance

au

gestionnaire

-LRB-

qui

n'envoie

et

ne

re?coit

que

des

messages

courts

-RRB-

A.

Producteur-consommateur

Pour

cette

deuxi?eme

etude

ecrit

dans

la

page

et

tous

les

autres

processeurs

du

cube

la

lisent

On

mesure

le

temps

de

traitement

des

d?efauts

en

lecture

pour

chaque

processeur

L'augmentation

de

la

dur?ee

minimum

d'un

d?efaut

en

lecture

montre

l'influence

de

la

charge

du

r?eseau

sur

la

dur?ee

d'un

d?efaut

en

lecture

Plus

le

nombre

de

pages

a

migrer

sur

le

r?eseau

est

important

plus

le

temps

des

d?efauts

en

lecture

augmente

Cependant

cette

augmentation

reste

dans

des

proportions

raisonnables

L'augmentation

brutale

de

la

dur?ee

max

vient

du

fait

que

dans

la

phase

de

consommation

tous

les

processeurs

font

un

d?efaut

en

lecture

en

m

eme

temps

et

que

ces

d?efauts

vont

etre

trait?es

par

le

gestionnaire

de

mani?ere

s?equentielle

-LRB-

dans

l'ordre

d'arriv

ee

des

requ

etes

-RRB-

La

biblioth?eque

C

de

Koan

met

a

notre

disposition

les

fonctions

begin

broadcast

et

end

broadcast

permettant

pendant

l'ex

ecution

d'une

section

de

programme

la

diffusion

syst?ematique

de

toutes

les

pages

modifi?ees

par

un

processeur

particulier

L'utilisation

de

ces

fonctions

permet

quand

on

peut

pr?evoir

une

phase

de

consommation

d'

eviter

le

s?equencement

des

d?efauts

en

lecture

et

de

tirer

profit

des

facilit?es

de

diffusion

sur

l'hypercube

La

deuxi?eme

colonne

du

tableau

A.

donne

le

temps

de

diffusion

d'une

page

en

fonction

de

la

taille

du

cube

Une

interpolation

par

la

m?ethode

des

moindres

carr?es

donne

pour

la

diffusion

d'une

page

sur

un

cube

de

p

processeurs

la

formule

suivante

Diff

ln

-LRB-

p

-RRB-

-LRB-

en

ms

-RRB-

Quelle

que

soit

la

taille

du

cube

on

constate

sur

le

tableau

A.

qu'on

a

inter

et

a

diffuser

une

page

d?es

que

le

nombre

de

lecteurs

est

au

moins

egal

a

deux

Il

est

donc

important

-LRB-

pour

le

programmeur

ou

le

compilateur

-RRB-

de

chercher

quand

c'est

possible

a

d?eterminer

le

nombre

de

lecteurs

d'une

page

afin

de

modifier

le

code

en

ajoutant

les

fonctions

de

diffusion

A.

D?efauts

en

ecriture

Nous

avons

mesur?e

la

dur?ee

d'un

d?efaut

en

ecriture

avec

les

configurations

suivantes

-LRB-

Dans

toutes

les

exp?eriences

le

gestionnaire

de

la

page

est

le

processeur

et

p

est

la

taille

du

cube

-RRB-

-LCB-

Pour

i

variant

de

a

p

Le

processeur

ecrit

dans

la

page

et

les

processeurs

a

i

la

lisent

-LCB-

Pour

i

variant

de

a

p

Le

processeur

p

ecrit

dans

la

page

et

les

processeurs

a

i

la

lisent

-LCB-

Pour

i

variant

de

a

p

Le

processeur

puis

le

processeur

i

ecrivent

dans

la

page

-LCB-

Pour

i

variant

de

a

p

Le

processeur

p

puis

le

processeur

i

ecrivent

dans

la

page

-LCB-

Pour

i

variant

de

a

p

Le

processeur

ecrit

dans

la

page

les

processeurs

j

-LSB-

i

-RSB-

j

la

lisent

puis

le

processeur

i

ecrit

dans

la

page

-LCB-

Pour

i

variant

de

a

p

Le

processeur

p

ecrit

dans

la

page

les

processeurs

j

-LSB-

i

-RSB-

j

la

lisent

puis

le

processeur

i

ecrit

dans

la

page

Les

r?esultats

de

ces

mesures

sont

donn?es

dans

le

tableau

A.

Les

deux

premi?eres

exp?eriences

correspondent

a

des

d?efauts

n'engendrant

que

des

invalidations

les

deux

suivantes

a

des

d?efauts

n'engendrant

que

des

migrations

de

page

les

deux

derni?eres

a

des

d?efauts

engendrant

des

migrations

et

des

invalidations

On

a

distingu?e

pour

chaque

s?erie

le

cas

o?u

l'un

des

processeurs

est

le

gestionnaire

On

observe

que

le

co

ut

des

invalidations

est

assez

faible

de

l'ordre

de

s

lorsque

c'est

le

gestionnaire

qui

est

en

d?efaut

-LRB-

on

economise

les

envois

de

requ

ete

et

de

confirmation

-RRB-

et

de

ms

si

ce

n'est

pas

le

gestionnaire

Ces

dur?ees

sont

quasiment

ind?ependantes

de

la

taille

du

cube

et

du

nombre

d'invalidations

Dans

le

cas

o?u

il

n

y

a

pas

d'envoi

d'invalidations

la

dur?ee

d'un

d?efaut

en

ecriture

varie

de

a

millisecondes

Les

dur?ees

varient

de

a

secondes

selon

que

l'un

des

processeurs

est

le

gestionnaire

ou

non

-LRB-

on

economise

un

message

court

de

requ

ete

ou

de

transmission

-RRB-

Elles

sont

peu

sensibles

a

la

distance

entre

les

processeurs

et

m

eme

les

variations

en

fonction

de

la

taille

du

cube

restent

tr?es

raisonnables

-LRB-

entre

et

processeurs

-RRB-

Le

co

ut

suppl?ementaire

d

u

a

l'invalidation

des

copies

d?epend

sensiblement

du

processeur

en

d?efaut

Si

c'est

le

gestionnaire

l'envoi

des

invalidations

se

fait

parall?element

a

l'attente

de

la

page

et

le

surco

ut

existe

mais

est

n?egligeable

Si

le

processeur

en

d?efaut

n'est

pas

le

gestionnaire

la

dur?ee

du

d?efaut

est

plus

faible

lorsqu'il

existe

des

copies

en

lecture

Ce

fait

peut

surprendre

mais

s

explique

de

la

fa?con

suivante

S'il

existe

des

copies

en

lecture

le

propri?etaire

de

la

page

ne

poss?ede

d?ej?a

plus

les

droits

en

ecriture

la

dur?ee

de

traitement

du

d?efaut

comprend

donc

la

migration

de

la

page

et

l'envoi

des

invalidations

Dans

le

cas

contraire

le

propri?etaire

poss?ede

toujours

les

droits

en

ecritures

et

le

traitement

comprend

les

changements

de

droits

et

la

migration

de

la

page

D'apr

es

les

mesures

effectu?ees

cette

derni?ere

situation

est

plus

longue

a

traiter

A.

conclusions

Les

mesures

que

nous

avons

effectu?ees

ont

permis

de

quantifier

les

performances

du

gestionnaire

de

d?efaut

de

page

de

Koan

dans

tous

les

cas

el?ementaires

Les

co

uts

mesur?es

sont

suffisamment

faibles

pour

pouvoir

esp?erer

que

le

m?ecanisme

de

MVP

ne

soit

pas

trop

p?enalisant

par

rapport

a

une

programmation

par

echange

de

message

-LRB-

dans

la

plupart

des

cas

les

dur?ees

obtenues

sont

de

l'ordre

de

grandeur

du

co

ut

d'envoi

d'un

message

avec

protocole

long

-RRB-

Les

premi?eres

etudes

de

performances

effectu?ees

sur

le

syst?eme

KOAN

ont

permis

de

montrer

l'efficacit

e

du

syst?eme

sur

des

programmes

r?eels

dans

des

domaines

aussi

vari?es

que

le

traitement

de

l'image

-LRB-

algorithme

du

lancer

de

rayon

-RRB-

-LSB-

-RSB-

l'analyse

num?erique

avec

acc?es

r?eguliers

-LSB-

-RSB-

ou

irr?eguliers

-LSB-

-RSB-

Mais

ils

ont

egalement

permis

d'en

caract?eriser

les

faiblesses

Principalement

l'introduction

d'un

faux-partage

entre

des

donn?ees

a

priori

ind?ependantes

et

l'impact

important

des

conflits

d'acc

es

sur

les

performances

de

la

MVP

Taille

Propri?etaire

gestionnaire

Lecteur

gestionnaire

processeurs

du

cube

min

moy

Max

min

moy

Max

min

moy

Max

Tab

A.

Temps

de

r?esolution

en

millisecondes

d'un

d?efaut

de

page

en

lecture

Dur?ee

Distance

gestionnaire-lecteur

-LRB-

ms

-RRB-

Tab

A.

Dur?ee

d'un

d?efaut

en

lecture

dans

le

cas

o?u

le

gestionnaire

le

propri?etaire

et

le

lecteur

sont

distincts

Influence

de

la

distance

entre

les

trois

processeurs

Taille

D?efauts

en

lecture

Diffusion

du

cube

min

max

Tab

A.

Comparaison

entre

le

temps

de

diffusion

d'une

page

et

la

dur?ee

d'une

diffusion

implicite

lors

d'un

d?efaut

en

lecture

-LRB-

en

millisecondes

-RRB-

Taille

Invalidations

seules

-LRB-

ms

-RRB-

du

Gestionnaire

Gestionnaire

cube

moyenne

moyenne

Taille

Migrations

seules

-LRB-

ms

-RRB-

du

Gestionnaire

Gestionnaire

cube

min

moy

Max

min

moy

Max

Taille

Migrations

invalidations

-LRB-

ms

-RRB-

du

Gestionnaire

Gestionnaire

cube

min

moy

Max

min

moy

Max

Tab

A.

Temps

de

r?esolution

en

millisecondes

d'un

d?efaut

de

page

en

ecriture

R?esum?e

Cette

th?ese

s

int?egre

dans

le

cadre

de

la

r?ealisation

de

l'environnement

de

programmation

Fortran-S

pour

machines

parall?eles

a

m?emoire

virtuelle

partag?ee

-LRB-

MVP

-RRB-

Ces

machines

offrent

un

espace

d'adressage

global

sur

une

architecture

physiquement

distribu?ee

L'utilisation

d'un

protocole

de

coh?erence

forte

sur

ces

machines

engendre

un

ph?enom?ene

de

faux-partage

nuisible

aux

performances

des

programmes

parall?eles

Nous

proposons

dans

cette

th?ese

des

techniques

de

partitionnement

des

nids

de

boucles

permettant

d'

eliminer

ou

de

r?eduire

les

effets

du

faux-partage

La

MVP

etant

d?ecoup?ee

en

pages

utilis?ees

comme

grain

de

coh?erence

et

de

transfert

de

donn?ees

la

localit?e

spatiale

a

sur

ces

machines

un

impact

fondamental

sur

les

performances

Afin

de

g?en?eraliser

l'emploi

des

techniques

d'am

elioration

de

la

localit?e

nous

proposons

d'

etendre

les

transformations

lin?eaires

de

nids

de

boucles

au

cas

non

entier.Nous

pr?esentons

egalement

un

raffinement

de

l'algorithme

de

Fourier-Motzkin

pour

la

recherche

des

points

entiers

d'un

poly?edre

rationnel

permettant

de

d?eterminer

pr?ecis?ement

les

bornes

de

boucles

apr?es

transformation

Les

diff?erentes

m?ethodes

pr?esent?ees

dans

cette

th?ese

sont

en

cours

de

mise

en

oeuvre

sur

Fortran-S

Mots

Clefs

programmation

parall?ele

m?emoire

virtuelle

partag?ee

Fortran-S

fauxpartage

localit?e

transformations

de

programmes

Methods

for

eliminating

false-sharing

and

optimizing

locality

on

shared

virtual

memory

parallel

computers

Abstract

This

thesis

contributes

to

the

design

of

Fortran-S

a

programming

environment

on

shared

virtual

memory

parallel

computers

-LRB-

SVM

-RRB-

These

architectures

offer

a

global

address

space

on

the

basis

of

a

phisically

distributed

memory

The

use

of

a

strong

coherency

protocol

on

these

machines

implies

a

phenomenon

called

false-sharing

which

decreases

the

performance

of

parallel

programs

We

propose

in

this

thesis

some

techniques

of

loop

nests

partitionning

to

eliminate

or

reduce

the

effects

of

false-sharing

As

a

SVM

is

splitted

into

pages

used

as

the

grain

of

coherency

and

data

transfer

the

exploitation

of

spatial

locality

becomes

fundamental

on

these

machines

In

order

to

generalize

the

techniques

for

locality

optimization

we

propose

an

extension

of

the

linear

loop

nests

transformations

to

the

non

integer

case

We

also

present

a

new

version

of

the

Fourier-Motzkin

algorithm

for

scanning

the

integer

points

of

a

rational

polyhedron

useful

to

find

precisely

the

new

loop

bounds

after

a

transformation

The

different

techniques

presented

in

this

thesis

are

being

implemented

on

FortranS

locality
parallel programming
shared virtual memory

false-sharing
fortran-s
programs transformations