Journal Pythran part à SuperComputing

Posté par (page perso) . Licence CC by-sa
33
15
nov.
2013

Yo,

Pythran est un compilateur qui traduit des modules Python sans classes utilisateurs et implicitement statiquement typé en méta-programmes C++. Sa vie a déjà été évoquée sur linuxfr à plusieurs reprises.

Après PyConFR, SciPy Pythran continue sa montée en puissance et va se frotter aux grands lors d'un workshop à Super Computing, la grand messe du calcul haute performance: PyHPC.

On y parlera des directives OpenMP et de leur intégration dans Python. Quelques progrès en la matière, puisqu'avant, toutes les variables locales étaient déclarées au niveau de la fonction (comme en FORTRAN 77 !), ce qui était bien lourdingue pour les annotations OpenMP : il fallait tout lister dans des clauses private et c'était un poil pénible. Exemple :

def foo(l, f):
  out = [0] * len(l)
  "omp parallel private(i, p, li, lj)"
  for i, li in enumerate(l):
    for lj in l:
      p = li * lj # moche mais c'est pour l'exemple
      out[i] += p

Pythran calcule maintenant le bloc minimal nécessaire pour contenir la définition de chaque variable locale, et éventuellement attache cette déclaration à une affectation si c'est possible. On s'en sort donc avec un "omp parallel" tout simple et plus concis. L'ancienne formulation reste valable, l'utilisation d'une variable dans une directive étant pris en compte dans le calcul du bloc minimal.

Ça va plus loin que le prange de cython (cf. la doc) puisqu'on peut exprimer des choses plus complexes du genre (de tête):

def bar(l):
  gmini, gmaxi = l[0], l[0]
  "omp parallel"
  if 1:
    mini, maxi = gmini, gmaxi
    "omp for"
    for e in l[1:]:
      mini, maxi = min(mini, e), max(maxi, e)
    "omp critical"
    gmini, gmaxi = min(mini, gmini), max(maxi, gmaxi)

et le tout directement en Python.

Petit appel à contribution d'ici lundi : si certains d'entre vous peuvent tester / secouer la branche scope de Pythran, elle devrait servir de base pour la release-de-juste-avant-la-conf'.

Merci & à bientôt pour de nouvelles aventures (aurais-je un jour le courage de faire une annonce à PyConUS…)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.