This shows you the differences between two versions of the page.
asc:laboratoare:06 [2025/04/09 08:32] alexandru.bala [Executie asincrona Host si Device] |
asc:laboratoare:06 [2025/04/09 09:11] (current) alexandru.bala [Fluxuri nonimplicite] |
||
---|---|---|---|
Line 215: | Line 215: | ||
Urmatoarele operatii sunt asincrone relativ la host: | Urmatoarele operatii sunt asincrone relativ la host: | ||
- Lansari de kernel | - Lansari de kernel | ||
- | - Copieri in cadrul spatiului de memorie a unui device | + | - Copieri in cadrul spatiului de memorie al unui device |
- Copiere memorie host -> device, avand < 64 KB | - Copiere memorie host -> device, avand < 64 KB | ||
- Copiere memorie host -> device, avand functii cu sufix Async | - Copiere memorie host -> device, avand functii cu sufix Async | ||
Line 224: | Line 224: | ||
==== Fluxuri nonimplicite ==== | ==== Fluxuri nonimplicite ==== | ||
- | Pentru a folosi cudaMemcpyAsync, este necesar lucrul cu fluxuri nonimplictie (non-default streams), care, in C/C++ pot fi declarate, create si distruse in partea de cod de pe host (CPU) in urmatorul fel: | + | Pentru a folosi cudaMemcpyAsync, este necesar lucrul cu fluxuri nonimplicite (non-default streams), care, in C/C++ pot fi declarate, create si distruse in partea de cod de pe host (CPU) in urmatorul fel: |
<code C> | <code C> | ||
Line 237: | Line 237: | ||
<code C> | <code C> | ||
- | result = cudaMemcpyAsync(d_a, a, N, cudaMemcpyHostToDevice, stream1); | + | // num_bytes = N * sizeof (type_a); |
+ | result = cudaMemcpyAsync(d_a, a, num_bytes, cudaMemcpyHostToDevice, stream1); | ||
</code> | </code> | ||
- | Pentru a emite un kernel către un flux nonimplicit, specificăm identificatorul fluxului ca al patrulea parametru de configurare a execuției. Se observă și un al treilea parametru de configurare a execuției, care este folosit pentru a aloca memorie partajată device-ului (GPU-ului), utilizându-se 0 dacă nu se dorește acest aspect. | + | Pentru a emite un kernel către un flux nonimplicit, specificăm identificatorul fluxului ca al patrulea parametru de configurare a execuției. Se observă și un al treilea parametru de configurare a execuției, care este folosit pentru a aloca memorie partajată (shared memory) device-ului (GPU-ului), utilizându-se 0 dacă nu se dorește acest aspect. |
<code C> | <code C> |