Accéder au contenu.
Menu Sympa

starpu-devel - [Starpu-devel] Dépendances dynamiques

Objet : Developers list for StarPU

Archives de la liste

[Starpu-devel] Dépendances dynamiques


Chronologique Discussions 
  • From: Adrien Roussel <adrien.roussel@itwm.fraunhofer.de>
  • To: starpu-devel@lists.gforge.inria.fr
  • Subject: [Starpu-devel] Dépendances dynamiques
  • Date: Mon, 11 Jun 2018 13:44:33 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=adrien.roussel@itwm.fraunhofer.de; spf=Pass smtp.mailfrom=adrien.roussel@itwm.fraunhofer.de; spf=None smtp.helo=postmaster@mail-edgeDD24.fraunhofer.de
  • Ironport-phdr: 9a23:0df+Uxe6TpCBEiA6zY9JDZo+lGMj4u6mDksu8pMizoh2WeGdxcSzYx7h7PlgxGXEQZ/co6odzbaO7ua4ASQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTahYb5+Ngm6oRnMvcQKnIVuLbo8xAHUqXVSYeRWwm1oJVOXnxni48q74YBu/SdNtf8/7sBMSar1cbg2QrxeFzQmLns65Nb3uhnZTAuA/WUTX2MLmRdVGQfF7RX6XpDssivms+d2xSeXMdHqQb0yRD+v6bpgRh31hycdLzM38HzZhNJ3jKxYrhyuqRNwzJLPbY6PKPZzZLnQcc8USGdDWMtaSixPApm7b4sKF+cMIftXr5P8p1QQqxu1GBWiBOTyyj9TnX/5w6k62PkmHA7cwQMgBdMOv2rSrNnvLqcSVv21zLLTzTrda/Nbwjb96JTGcxAku/2MU6hwftDMyUkpFwPFiVuQppL/Pz+Py+sCrXGW4ux9XuyhjG4nrht+ojmpxso0kIbGm5gVylHa+iV/2Yo1P9q4SFNgYd6/DpRQszuWOJVrQs4kXmpmuz46x6UbtZO/YiQG0okrywLBZ/CdboSF4xDuWPyPLTp3nH5pZbyyiwuo/US+xeDxV9O43EtOoyZYiNXBtHMA2hrO4cadUPR95F2u2TOX2gDT9O5EJUc0mLLeK5E7w74wkoMfvlreES/5hkr4gqGYelsr9+Sy5eTneK/ppoKaN490jQH+PLohmtalDeslLAcCR2mb+eKi273/5UD1XbFHguMsnqXErJzWO94XqrO4DgJXyIov9RmyAy+j0NsCnHkHKFxFeAiAj4jsI1zBOu33De2+g1uyljdn3erGPrr8ApXWNXjMjrPhcK18605AxgszyMpT55xOCr4bPfLzXE/xtNvWDhAnKQy42fvoB8tl2oMERW2PGrOZML/VsVKQ/eIvP/ODZJUNuDbgMvQq+uDhjWEnll8ZZqSp2ZoXaGukHvR9OUmZbnTsgtAbEWcFoAUyVu3qiFuYUT5SfXm+Raw85itoQL6hWJzfT5q1nfmN0Tm2GrVSZ3taERaDH3DyeIjCWvEWaSvULNUyvCYDUO2IR5Ug2Bfmjgjn0KFqKqKA8yECtJ/lksJy+vbImBUa9CBrCoKTyWiQSWFzkG4SATM7ivMs6Xdhw0uOhPAry8dTEsZesqsQA1UKcKXExuk/MOjcHwfIf9OHUlGjGI30AC0uS5Q/2dYTZUZ6Fdi4yBzOjXPzX+0l0oeTDZlxyZrymmDrLpwlmXfay6xngUMvX81PMmOrnOhz+lqLXtObowCij6+vMJ8k8mvN+WOElzvcuUhZVEt9XarIcVxFOg3Yt93k4EPFQbK0T7gqYFNM
  • List-archive: <http://lists.gforge.inria.fr/pipermail/starpu-devel/>
  • List-id: "Developers list. For discussion of new features, code changes, etc." <starpu-devel.lists.gforge.inria.fr>
  • Organization: Fraunhofer ITWM

Bonjour,

Je me permets de vous adresser ce mail car je suis actuellement en train de développer un petit programme d'algèbre linéaire où j'ai rencontré un problème d'_expression_ de dépendances via l'interface C de StarPU.
Mon problème est le suivant: j'aimerais programmer un produit scalaire entre deux vecteurs, qui prend la forme suivante.

double res = 0.0 ;
// Recuperation du nombre d'elements a calculer par partition
int local_size = x.size() / nb_partitions;
// boucle de calcul, où l'on cherche a assigner un indice de partition "i" a une tache
// On stocke le resultat dans le vecteur "tmp"
for(int i = 0; i < nb_partitions; ++i)
{
    int begin = i * local_size ;
    int end = local_size + begin ;

#pragma omp task depend(x[begin:end], y[begin:end]) depend(out: tmp[i])
    for(int k = begin; k < end; ++k)
      tmp[i] += x[k] * y[k]
}
#pragma omp taskwait
// Accumulation du vecteur tmp dans res
#pragma omp task depend(in: tmp[0], ..., tmp[nb_partitions - 1]) depend(out: res)
for(int i = 0; i < nb_partitions; ++i)
{
    res += tmp[i];
}

  Actuellement, pour palier à ce problème je suis obligé de mettre un point de synchronisation, modélisé par un "starpu_task_wait_for_all()" entre le calcul du produit scalaire, et l'accumulation des résultats "locaux" dans la variable résultat.
Malgré que cette solution marche et assure la cohérence du résultat, elle casse le parallélisme et peut provoquer des dommages sur la performance de la méthode.
Je ne peux pas créer de tâche de réduction prenant en dépendance d'entrée chacun de mes élèments stockés dans mon vecteur "tmp" car je ne connais sa taille qu'une fois l'exécution lancée. Il faudrait que je sois capable de rajouter des dépendances dynamiquement à ma tâche lors de l'exécution de mon application.

Avec l'interface C de StarPU, comment pourrais-je casser cette synchronisation et ainsi ne pas altérer le parallélisme de l'application ?

Merci beaucoup d'avance.

Cordialement,

-- 
|---------------------------------------------------------|
| Dr. Adrien Roussel
| Competence Center High Performance Computing
| Fraunhofer Institut ITWM
| Tel.   : +49 631 31600-4984
| E-Mail : adrien.roussel@itwm.fraunhofer.de
| Web    : https://adrien-roussel.eu
| Address: Fraunhofer-Platz 1
|	   D-67663 Kaiserslautern
|---------------------------------------------------------|



Archives gérées par MHonArc 2.6.19+.

Haut de le page