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>
  • Cc: starpu-devel@lists.gforge.inria.fr
  • Subject: Re: [Starpu-devel] Dépendances dynamiques
  • Date: Thu, 14 Jun 2018 15:24:41 +0200
  • Authentication-results: mail2-smtp-roc.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:+NEMGxegAoP9m9/bOF1dl1E4lGMj4u6mDksu8pMizoh2WeGdxcW+ZB7h7PlgxGXEQZ/co6odzbaO7ua4ASQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTahYb5+Ngm6oRnMvcQKnIVuLbo8xAHUqXVSYeRWwm1oJVOXnxni48q74YBu/SdNtf8/7sBMSar1cbg2QrxeFzQmLns65Nb3uhnZTAuA/WUTX2MLmRdVGQfF7RX6XpDssivms+d2xSeXMdHqQb0yRD+v9LlgRgP2hygbNj456GDXhdJ2jKJHuxKquhhzz5fJbI2JKPZye6XQds4YS2VcRMZcTzFPDJ2yb4UPCOoPPuhWoIfyqFQMsRSwChKhBP/sxzJSmnP6waM33uYnHArb3AIgBdUOsHHModjpKagSS+G1w7fOzT7ec/1W3ir96JPTch8/pfGHQLV9ftDMxkk1FgPKkFOQpZb/PzOSy+QNqHOb4PRkVe+0im4ntw9woj21yscikInGnJ8VylbE9SV+zoY6O8e4RFRmbtG6CZZdsTyROYVxQsMnWW5ouSA6x6UctpGmZigKyYooxxjGZ/yddIiI/wnjVP2PLjd8nn5qZq+/ihCv+kaj0u3xTtS43VZEoyZfltTBt2oB2wHJ5sSZRfZx5lqt1DiS2wzJ9O1JLkE5mbDGJ5Ml37I8jJgevEfFEyTrgkv5lrWWeV8h+uWw6+TofLHmppiEOo9xkA7+M6AultWhDuslPQgBQW2V9Pii2LDs50H5Tq9KgecrkqnfsJDaIsobqbCjAwNPz4ks9Q6zDzag0NsGgXkKNE9JdRKJgoTzP1zDIer0Aeqlj1iynzpn3/XGMafgApXJIHjDirDhfbNl5kFG1QUz19Ff6IxSCr0bOvLzXVLxtMfDDhAnNwy52OfnCMlz14MbQ26PDLWZP7nPsV+O5uIvJOeMa5EPuDrnNvcq+ebijWUlll8FYampwZwXZWijHvR6OUqZe2LsgsoYHWgXoAU+UvLliFmZXD5XZnayRL485iohBIKpA4fDQZqtgLOf0yuhH51WYHpGClGWHnvyeYWEQaREVCXHGcZkjzEAHYShSoUoyBWy/Fvhwr96I+6S5i0Zv5v+0MRd5uvJlBh0+yYiXOqH1GTYZm1un24ODwUxwbtkrEg1nl6Py6l1hbpCEsFI/P5NegYmKpuawfZzFtbyXQzMZJGFRQD1EZ2dHTgtQ4dpkJc1aEFnFoDn10ibhnv4M/ouj7WOQacM3OfZ1nn1Kdx6ziyehqg9kFxgTNFGKGumgaBy7U7fCtyQyhnLp+ORba0ZmRX12iKb12PU5BNZTBF1F6vfVG0ZZkzYoM6/6k6QF+bzW4RiCRNIzIu5EoUPatDtig8XFvLqOdCbbm6+lkSZX0rOyKmFcYzqfGsQxmPRBRpcng==
  • 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,

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

Merci d'avance.

Voici ma classe :

    template<typename ValueType>
      class StarPU_reduction : public StarPUBlas
      {
          typedef StarPUBlas BaseType;
        public:

          StarPU_reduction (int _dom, ValueType* _x,
                  ValueType* _res, int _size)
              : m_res (_res), BaseType (_dom), m_x(_x), m_size(_size)
          {
#ifdef USE_STARPU
             // Registration of the data
             m_x_handle = (starpu_data_handle_t*) malloc(sizeof(starpu_data_handle_t) * m_size);
             x_descr = (starpu_data_descr*) malloc(sizeof(starpu_data_descr) * m_size);
             for(int i = 0; i < m_size; ++i)
             {
                starpu_variable_data_register(&m_x_handle[i], STARPU_MAIN_RAM, (uintptr_t)&m_x[i], sizeof(m_x[i]));
                x_descr[i] = {};
                x_descr[i].handle = m_x_handle[i];
                x_descr[i].mode = STARPU_R;
             }
             starpu_variable_data_register(&m_res_handle, STARPU_MAIN_RAM, (uintptr_t)m_res, sizeof(m_res[0]));

             // Configuration of the codelet
             cl = {};
             cl.cpu_funcs[0] = cpu_reduction;
             cl.nbuffers = STARPU_VARIABLE_NBUFFERS;
#endif
          }

          void
          exec ()
          {
#ifdef USE_STARPU
            int ret = starpu_task_insert(&cl, STARPU_W, m_res_handle, STARPU_DATA_MODE_ARRAY, x_descr, m_size, 0);
#else
            cpu_reduction( m_x, m_res, m_size);
#endif
          }

          void print()
          {
            std::cout << "PART: " << m_dom_id << "\tREDUCTION" << std::endl;
          }

        private:
          ValueType* m_x;
          ValueType* m_res;
          int m_size;
#ifdef USE_STARPU
          struct vec_size_t params;
          struct starpu_codelet cl;
          struct starpu_task *task;

          struct starpu_data_descr* x_descr;
          starpu_data_handle_t* m_x_handle;

          starpu_data_handle_t m_res_handle;
#endif
      };


On 06/12/2018 09:46 AM, Samuel Thibault wrote:
Adrien Roussel, le mar. 12 juin 2018 09:38:31 +0200, a ecrit:
Sauf que, j'ai l'impression que StarPU libère la mémoire de ma tache après
son exécution.
Oui, c'est le champ destroy, que tu peux mettre à 0 pour éviter qu'il le
fasse.

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