Accéder au contenu.
Menu Sympa

starpu-devel - [starpu-devel] Get / access value of a variable attached to a StarPU handle

Objet : Developers list for StarPU

Archives de la liste

[starpu-devel] Get / access value of a variable attached to a StarPU handle


Chronologique Discussions 
  • From: algiane froehly <algiane@gmail.com>
  • To: starpu-devel@inria.fr
  • Subject: [starpu-devel] Get / access value of a variable attached to a StarPU handle
  • Date: Tue, 1 Feb 2022 10:00:06 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=algiane@gmail.com; spf=Pass smtp.mailfrom=algiane@gmail.com; spf=None smtp.helo=postmaster@mail-wm1-f54.google.com
  • Ironport-data: A9a23:CxXvSqBk29L66RVW/wjlw5YqxClBgxIJ4kV8jS/XYbTApD9z0TQEy TMfXTiDbv/cNzDyLtB1aIm+oU4Fv5CGyYdgOVdlrnsFo1Bi+ZOUX4zBRqvTF3rPdZObFBoPA +E2MISowBUcFyeEzvuVGuG96yE6jMlkf5KkYAL+EnkZqTRMFWFx2XqPp8Zj2tQy2YLhWlvU0 T/Pi5S31GGNi2Yc3l08sPrrRCNH5JwebxtF1rCWTakjUG72zxH5PrpHTU2CByeQrr1vIwKPb 72rIIdVUY/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8A/+v5TCRYSVatYozyxo9wr0 N5Eib/uRld0BZX2te4iCgYNRkmSPYUekFPGCX22sMjW0EifNnWxn7NhC0Y5OYBe8eFyaY1M3 aZAeXZdM1ba3bLwne7TpupE3qzPKOHiOIwes3dt5T7cBPciB5vERs0m4PcEgmlq2ZESdRrYT 8ZELhZFMRrnX0NWYVgNNbMFwOv2qmaqJlW0r3rM/fZti4TJ9yRqzLH3KMeQdtGUSMF9hVedv muA/mLjAxhcOsb39Nae2nelh+uKgiaiHYxPSPu38fllhFDVzWsWYPELabelifCBtkLkQ9lWF 29K9XpzlpAI2UaUF8aoCnVUv0W4lhIbXtNRFcgz5weM1rfY7m6l6o4sHm8phDsO5J9eeNA66 rOat4i2WmE34dV5XVrYp+jE92rjUcQABTZaPXdscOcT3zX0TGgOYv/nS99iFOuqi4SwF2ysh T+Nqyc6ivMYistjO0SHEbLv023ESnvhFFZdCuDrsoSNsFkRiGmNOdfA1LQjxawcRLt1t3HY1 JT+p+CQ7foVEbaGnzGXTeMGEdmBvqjZa2CM3wAzTsV/p1xBHkJPm6gAsVmSw285Yq45lcPBP Sc/RCsNvsYIZCLyBUOJS9joUZt3pUQfKTgVfqmMMoAmjmlZewiA8yVjDXN8LEi8+HXAZZoXY M/BGe71VShyIf0+kFKeGrlAuZd2mXhW7T6CHfjTkkX8uZLDNS79dFvwGAHRBgzPxPjU/lu9H hc2H5fi9iizp8WnPHGPr9ZPfA9bRZX5bLivw/Fqmie4ClIOMAkc5zX5mNvNoqRpwPZYkPnm5 Ha4VhMKwVbznyyVJgCDa3QlY7TqBM4toXU+NC0qHFCpx3lzOdb1vPlDL8M6Les96ehu7f9oV P1aKciNB/J4TD6YqTkQaJ/KqpNvKUawjgWUMiv5OzUyJsYyRwHA9tL+UBHo8S0CUni+ucck8 u+v0wraRdwIQAE7VJTab/emzlWQu3kBmbIqDxGYfIULIEi1qdpkMS38iPMzMvogExSby2vIz RuSDDcZufLJ/N04/dzPsqaO8NWkHu54KUxFRjWJ4LuzMx7ayWqt24p3VuiFIGLGX2Tu9aT+P OhYwq2uMPADm1oW4YNwH6wxlvA77trr4qBfl0FqQSmNYFOsBbdtZHKB2JAX5KFKw7ZYvyqwW 16OqoYGY+TXYJu9HQ5DPhchY8SCyeoQxmvY48MzLRio/yRw5reGDRhfMkXekiBbN7cpYoopz f1745wT4g27zwUva5OI03wS+GOLIXgNFa4gs8hCUoPsjwMqzHBEYIDdWnCqusDRM40UPxl4O CKQiYrDm69YmhjIfU01GCWfxuFan5kP5E1HwVJqy45lQTYZaiLbHSG98AjbiixQxxRDlv12Y y1lahEzKqKJ8DNlwsNEWghA3u2H6AKxoiTMJ5khzQU1jHVEkkTCKWQ8PaCG+0VxH6d0YG1A5 L/BoIr6eW+CQSwytxfenWZqrvXiSZp68QiqdAVL2SiaN8FSXAcJSZNCqYbFR9ULzC/xaID6S TFWwdtN
  • Ironport-hdrordr: A9a23:aKFdv60FIiWTy/Jf9tBDYQqjBL8kLtp133Aq2lEZdPU1SL3+qy nKpp4mPHDP+VUssR0b+exoW5PgfZq/z+8W3WB5B97LNzUO01HYSb2Kg7GSpwEI2BeTygee78 pdmmRFZ+EYxGIVsfrH
  • Ironport-phdr: A9a23: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 dwFTboJDDQI
  • Ironport-sdr: 5CpHa+1HP1gBoBDqhkPjIAgUHKItWSOds41Ee0tkCyfOJ916cXYottverjeqaBIv2mRG5gmjf4 x+m3AgQaHoOVpYh1wHzJsbJYjvqG2IyCZXFRbanDgAcGGUEIdkvBCbGb32UhHMU5cR/Yq6Csqo yjWFHJWQyq+ebHEhZsKfepdWF8GsMebVh+29/B15BxjqsOcvL+KU16ZbAG8uWsBCpMJXzJRWAM buZ3JrnYen8RKT4N3gEBMS7p+bpzCDyR+fCKIweClm3jnaxYmyWe7602Vul6sRBv0aYp0EPXvL 2TCjPsX3Q4ygmLT3igGiQZYU

Good morning the starPU team,

As discussed with Nathalie, I transfer you this email initially written to ask help. I finally found a solution to my problem (added at the end of the email).

TR :  

I am new to StarPU and have small difficulties.
In short, I want to taskify a code that has the following form :

```C
do {

count = f ( );

// Do other stuffs that depend on count value

} while ( test ( count )  );
```

for now, I don’t plan to target GPU architectures so I have probably made shortcuts due to the fact that I am only on CPU.

Following the examples of reduction on the gitlab repository (https://gitlab.inria.fr/starpu/starpu/-/blob/master/examples/reductions/dot_product.c) and of an EoCoE workshop (https://indico.math.cnrs.fr/event/6415/attachments/2736/3475/2021.02.24_-_exa2pro-eocoe_workshop_-_StarPU_-_S._Thibault.pdf ). I have implemented a codelet for ‘f’ and a codelet for the reduction. Now my loop has the following form: 
```C
starpu_variable_data_register(&handle_count, STARPU_MAIN_RAM, (uintptr_t)&count, sizeof(count));
starpu_data_set_reduction_methods ( handle_count, &accumulate_codelet, &izero_codelet) ;

do {
   count = 0; 

   // parallel section
   for ( i = 0; i < ntask; ++i )
      ret = starpu_task_insert( &f_cl, STARPU_REDUX, handle_count );
   }

   starpu_task_wait_for_all();

  // Serial section

  // Do other stuffs that depend on count value

}   while ( test ( count )  );
starpu_data_unregister(handle_count);
```

My issue is that StarPU fills in the count value only when I unregister it (or if I write a fake task that uses it) : I guess that I have to access the handle through one of the StarPU API but I don’t find which one. I have searched for a list of getter functions (list of API with either the « get » keyword, the  « variable » or « value » one).

EDIT :  I have found a solution (searching for the « data keyword » ;-) ). I also guess that I can remove the task_wait_for_all() call because synchronization is needed to acquire the count value :

```C
 starpu_variable_data_register(&handle_count, STARPU_MAIN_RAM, (uintptr_t)&count, sizeof(count));

 starpu_data_set_reduction_methods ( handle_count, &accumulate_codelet, &izero_codelet) ;

starpu_data_acquire(handle_count, STARPU_W);
do {
   count = 0; 
   starpu_data_release(handle_count);

   // parallel section
   for ( i = 0; i < ntask; ++i )
      ret = starpu_task_insert( &f_cl, STARPU_REDUX, handle_count );
   }

  // serial section
  starpu_data_acquire(handle_count, STARPU_RW);

  // Do other stuffs that depend on count value

}   while ( test ( count )  );
starpu_data_unregister(handle_count);

```

BR,

Algiane





Archives gérées par MHonArc 2.6.19+.

Haut de le page