2015-11-03 23 views
5

Con l'aumento delle API grafiche di livello inferiore come DirectX 12, Mantle e Vulkan, mi chiedo come interagiscano (se non lo fanno) con un'architettura di sistema eterogeneo (HSA)?DirectX 12/Mantle/Vulkan e HSA

Da quanto ho capito, sostenendo HSA ha richiesto un po 'di coinvolgimento degli sviluppatori, ma sono curioso di sapere se una qualsiasi delle API grafiche di basso livello ora gestire questo se stessi, o se il peso rimane sul sviluppatori di sfruttare appieno esso?

HSA è particolarmente interessante per funzionalità come la condivisione semplificata di dati tra la memoria di sistema e la memoria video, in particolare quando entrambi condividono la stessa RAM fisica.

Dato che questa domanda è specifica dello stato attuale, io sto bene con questo tipo di panoramica (anche se le informazioni sulle future roadmap sarebbero belle), e accetterò una risposta che copre solo una singola API grafica (Dal momento che dubito che molti, se ce ne sono, siano familiari con tutti e tre i plus HSA). Inoltre, se ho completamente frainteso come funziona, allora sentitevi liberi di farlo notare anche; Non ho molta familiarità con nessuna delle due tecnologie, ma mi piacerebbe sapere come interagiscono attualmente allo stesso modo.

risposta

7

Guardando gli schemi sullo wiki page le API di basso livello sono più vicine a quello che chiamano un sistema non HSA.

enter image description here

Ogni operazione (copia della memoria, a partire da un posto di lavoro, ...) deve essere spedito in modo esplicito dall'applicazione. Sebbene l'applicazione possa raggruppare le operazioni sequenziali in un buffer di comandi e inviare l'intero buffer in una volta sola e continuare con qualcos'altro mentre i comandi vengono eseguiti in modo asincrono.

Il tradizionale openGL/DirectX9 d'altra parte è più vicino a un HSA nascondendo tutto il dispacciamento e la copia. Tuttavia, questo introduce un sovraccarico nella verifica e cerca di prevedere cosa farà l'applicazione per ridurre al minimo la latenza. Per non parlare c'è pochissima opzione per verificare se le operazioni sono complete con l'API con radici sincrone. Ciò significa che se ti capita di chiamare un metodo che ha bisogno del risultato di un'operazione, il driver (HSA) bloccherà fino a quando l'operazione non verrà completata.

enter image description here

che le nuove API di basso livello danno più controllo al programmatore di applicazioni e smettere di nascondere il nocciolo è infatti un punto di vendita importante.

+0

Ottima risposta, ma come pensi che questo si applichi ad altre funzionalità di HSA, come essere in grado di condividere la stessa memoria tra una CPU e iGPU? DirectX 12 ecc. È in grado di fare la stessa cosa senza dover copiare cose come trame già caricate nella memoria principale (lato CPU)? – Haravikk

+0

@Haravikk che dipende da come è strutturato l'hardware, le GPU integrate spesso non hanno memoria dedicata, quindi userà la RAM fisica. E a cui si può accedere così com'è dalla CPU. Sebbene il caching significhi che gli accessi devono essere sincronizzati e sorvegliati. –