40 | | devices. CUDA kernels can be annotated as tasks declaring the corresponding data dependencies |
41 | | on the data buffers, so that, when all the dependencies of a task are satisfied, the CUDA |
42 | | kernel associated is offloaded to one of the available GPUs. In order to use that functionality, |
43 | | the user only has to allocate the buffers that CUDA kernels will access as a Unified Memory |
44 | | buffers (using the `cudaMallocManaged()` function). |
| 40 | devices. CUDA kernels can be annotated as regular tasks, and they can declare the |
| 41 | corresponding data dependencies on the data buffers. When all the dependencies of a CUDA task |
| 42 | are satisfied, the CUDA kernel associated to the task is offloaded to one of the available |
| 43 | GPUs. To use that functionality, the user only has to allocate the buffers that CUDA kernels |
| 44 | will access as Unified Memory buffers (i.e., using the `cudaMallocManaged()` function). |