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"
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
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 }