Accéder au contenu.
Menu Sympa

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

Objet : Developers list for StarPU

Archives de la liste

Re: [Starpu-devel] Dépendances dynamiques


Chronologique Discussions 
  • From: Adrien Roussel <adrien.roussel@itwm.fraunhofer.de>
  • To: Samuel Thibault <samuel.thibault@inria.fr>, starpu-devel@lists.gforge.inria.fr
  • Subject: Re: [Starpu-devel] Dépendances dynamiques
  • Date: Thu, 14 Jun 2018 16:43: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-edgeKA24.fraunhofer.de
  • Ironport-phdr: 9a23:SzVfXR/EOAG8xf9uRHKM819IXTAuvvDOBiVQ1KB21OwcTK2v8tzYMVDF4r011RmVBdids6oMotGVmpioYXYH75eFvSJKW713fDhBt/8rmRc9CtWOE0zxIa2iRSU7GMNfSA0tpCnjYgBaF8nkelLdvGC54yIMFRXjLwp1Ifn+FpLPg8it2O2+553ebx9UiDahfLh/MAi4oQLNu8cMnIBsMLwxyhzHontJf+RZ22ZlLk+Nkhj/+8m94odt/zxftPw9+cFAV776f7kjQrxDEDsmKWE169b1uhTFUACC+2ETUmQSkhpPHgjF8BT3VYr/vyfmquZw3jSRMNboRr4oRzut86ZrSAfpiCgZMT457HrXgdF0gK5CvR6tuwBzz4vSbYqINvRxY7ndcMsHS2RfUMZfVytBDICyYYQBAOUOP/pXoYbmqlsSrhazHxWgCP/hxzJKgHL9wK000/4mEQHDxAEtA88BsG7VrNrrMqcZTPy7zK7VzTXYdPNZxzP945XPfx87vP6MR7NwftTXyUU1DQPFiUiQqZf+PzyL0uQAqGmb7/ZuVOKqkWInpRtxrSKyxscqionJgYwVxU7e9Slj3Yk6O8S1RUhmatCqF5tQsjuVN4pwQs46WW5npTw6yrwYtp69ZSQK0pMnxwPEa/ycbYeI5gjvW/iMITp+mXlre6q/ig6v/UWgxODwTM253VdQoiZYiNXAqH8A2wTO5sWJV/dx5Fmt1DmO2gzJ9+1JJV04mbDZJpMixLM7i4Advl7ZHiDsnUX7lK+WeVsg+uiv8+nnZ6/ppp6YN4NtlA7xL6suldK6D+kkLAQDUHKX+eqm1LL54E35RrVKjvo4kqbHqpDWP9kUqbChDw9U1IYs9Qq/Ai+73NkYk3QLNlZIdROdg4T0IV3CPv/1Ae+6g1u2kTdrw/7GPqfmApXINnXMiqrufax860FCzgo/18pf55VJCrEaO/L8REvxucfZDh8lPQ20xvzrCNtn1owERGKPBK+ZMKTcsVCW/OIjOfSDa5ENtDbnN/cl/+LujWM+mVIFZqmpwYEYaGqgHvR7OkmWfGTjgskfHmcOpQc+SO3qiEaeUT5IfXqyUKw85jYhCIKpE4jPXIGtgLqb3Ce6BJJafG5GCkrfWUvvIr6NXuoBbGquIs5rmyEASfD1UIYkyByq8hP6yrBuM+7I0iwer5PqktZvsambjg077yRpSsiQzWyJZ2V1hX8TATA427pwrAp8zE2C2O52ma92D9tWstpFSAY3M9bmyPFhEN32ElbIcs2IRVDgWNK7Gio8Svow38ALJUhnEsikjhfN0jDsD7JDxO/DP4A97q+Jhyu5HM160XuTkfB51wB3EPsKDnWvg+tEzyaWAofIl0uDkKPwLfYdwDHIsmmZxHeIvEZWXRQ2XaiXBClDNHuTlszw4wb5d5HrEa4uaFMTyNKdL+1EcNT0i1VBSvr5ftjTMTroxjWAQC2Qz7bJV7LEPmUQ2CKHWRoBmgEXuHuKOgUdL3395WzEBSFoFVXhblmq/eQs8H4=
  • 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



On 06/14/2018 04:38 PM, Samuel Thibault wrote:
Bonjour,

Adrien Roussel, le jeu. 14 juin 2018 15:24:41 +0200, a ecrit:
  Désolé de déranger à nouveau, mais j'essaye de me faire la main sur une
réduction toute simple, sauf que j'ai des problèmes de data race.
C'est-à-dire ? Quel est le symptôme ?
En entrée de la tâche suivante, le résultat est nul comme s'il n'avait pas été calculé.
Donc je me demande si les dépendances ont du coup bien été prises en compte, ce qui aurait conduit à ma tâche suivante de s'activer avant ma réduction

J'essaye de faire une réduction d'un vecteur m_x, de taille m_size dans une
variable m_res.
J'ai suivi les exemples donnés dans la doc StarPU, mais pourtant j'ai
l'impression que les dépendances ne sont pas prises en compte.
Qu'est-ce qui te fait penser cela ?

Dans un premier temps, dans le constructeur je donne dépendances en entrée
dans un tableau de "struct starpu_data_descr" nommé "x_descr".
Que je passerais ensuite en argument lors de l'insertion de la tâche, en
plus de la variable d'accumulation.

Est-ce que par tout hasard j'aurais négligé quelque chose lors du
développement ?
Ça a l'air correct, il faudrait aussi voir le code de la fonction
cpu_reduction, elle ne peut pas être simplement cpu_reduction(float *,
float *, size_t);, cf les exemples, c'est toujours void func_name(void
*buffers[], void *cl_arg) (mais normalement le compilateur devrait
soulever un warning si ce n'est pas le cas).
Ma fonction est la suivante:
    void cpu_reduction(void *buffers[], void *cl_arg)
    {
      double* _res = (double*)STARPU_VARIABLE_GET_PTR(buffers[0]);
      struct vec_size_t *vecSize = (struct vec_size_t*)cl_arg;
      int _vecSize = starpu_task_get_current()->nbuffers;

      double tmp = 0.0;
      for(int i = 1; i < _vecSize; ++i)
        tmp += *((double*)STARPU_VARIABLE_GET_PTR(buffers[i]));
      *_res = tmp;
    }

dans la position 0 du buffer se trouve ma variable résultat, toutes les autres à partir de la position 1 participent à la contribution

Samuel

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