starpu-runtime / starpu

This is a mirror of https://gitlab.inria.fr/starpu/starpu where our development happens, but contributions are welcome here too!
https://starpu.gitlabpages.inria.fr/
GNU Lesser General Public License v2.1
58 stars 13 forks source link

Track memory accesses per task statistics for profiling, analogous to FLOPs. #52

Open Muxas opened 3 weeks ago

Muxas commented 3 weeks ago

Hi! Tracking amount of processed GFLOPs per each computing device is a nice feature of StarPU profiling. However, tracking memory accesses is also very helpful for memory-bound tasks. This is totally separate from bus profiling: I would like to check how badly my CPU and CUDA kernels are accessing memory during task execution. Each task will get an additional value, a number of total reads and writes in bytes. And an overall profiling statistics, pronted by StarPU, will display amount of reached GFLOPs/s along with reached GBs/s of memory accesses for each device.

sthibaul commented 3 weeks ago

I guess that could be obtained through PAPI, @coti ?

coti commented 3 weeks ago

I'll look at it :)

Muxas commented 3 weeks ago

Actually, I meant a member of struct starpu_task, that I fill myself through 'starpu_task_insert(..., STARPU_FLOPS, nflops,...)' utility. Adding memops (or whatever name it shall be given) alongside flops in perfmodel files will help tracking slowly performing memory-bound operations.

sthibaul commented 4 days ago

Adding memops (or whatever name it shall be given) alongside flops in perfmodel files will help tracking slowly performing memory-bound operations

Right. Actually the flops field could very well be filled from PAPI too, so adding bytes_read and bytes_written fields, handled similarly to flops, would make sense already.