AMD ROCm: tipi di accesso in memoria

Rocm come sapete permette di eseguire codice in stile c++ direttamente sulle schede video Radeon basate sull architettura Navi (e presto anche sulle GCN Vega).
Per quanto riguarda il codice CUDA , incompatibile di per se con le schede AMD, invece si usa il traduttore HIP che lo trasforma in codice compatibile mantenendo la sintassi del c++.
Questi codici quindi come sapete, hanno bisogno dell accesso in memoria per trasferire i dati. Entrambe le soluzioni hanno pregi e difetti, vediamoli.

La hipHostMalloc di per se alloca della memoria sul sistema mappandola agli indirizzi di memoria sulla GPU.
Il trasferimento quindi dei dati da sistema a scheda video e viceversa puo avvenire mediante una copia diretta dei dati(copia della variabile su entrambi spazi di memoria)
Un altro metodo utilizzato da ROCm è il Zero-Copy GPU Access. Quest ultimo consiste nell accesso diretto del sistema verso la GPU con notevoli vantaggi di spazio e tempo risparmiato. Questo pero ha uno svantaggio, che l accesso diretto deve avvenire non di continuo ma saltuariamente. Questo perche ogni volta che viene richiesto l accesso vi è una latenza dovuta alle precedenti ed eventuali code.
Vedremo poi il resto nei prossimi articoli su ROCm.

Links:
Piattaforma ROCm