HPFC
(High Performance Fortran Compiler)
datastructure

Fabien Coelho

CRI, École des mines de Paris

October 17, 2019

Introduction

Ce document présente très brèvement les domaines Newgen utilisés par le prototype de compilateur hpfc pour décrire les directives de placement d’un programme HPF.

import entity from "ri.newgen"

import expression from "ri.newgen"

1 Directives

Les directives HPF considérées sont l’alignement et la distribution. L’alignement d’un tableau a lieu sur un template, et la distribution d’un template est faite sur un processors.

align = alignment* x template:entity

distribute = distribution* x processors:entity

2 Alignements et Distributions

L’alignement d’une dimension de tableau sur une dimension de template est décrit au moyen du domaine Newgen alignment :

alignment = arraydim:int x templatedim:int x rate:expression x constant:expression

La dimension du tableau arraydim est alignée avec la dimension de template templatedim avec pour paramètres rate et constant.

La distribution d’une dimension de template sur une dimension de processors est décrite au moyen du domaine distribution, qui permet de retrouver le paramètre de distribution d’une part (parameter, et le style de la distribution, nulle, par blocks ou cyclique.

distribution = style x parameter:expression

style = { none , block , cyclic }