API Vulkan 1.0.42, il supporto Multi-GPU eterogeneo cross-platform è dietro l'angolo!

By in , , , ,
API Vulkan 1.0.42, il supporto Multi-GPU eterogeneo cross-platform è dietro l'angolo!

Molti di voi avranno sentito parlare delle API Vulkan, create e manutenute da Khronos Group ma direttamente derivate da diverse componenti Mantle di AMD.
Le API Vulkan hanno un punto di forza notevole, ovvero non sono esclusiva di alcun brand (AMD, nVidia, Intel..) e possono girare sotto qualsiasi sistema operativo (Windows, Mac OSX, GNU/Linux). La stessa Intel ha fatto retromarcia, annunciando il supporto delle CPU Skylake e Kaby Lake alle librerie Vulkan.

A differenza delle OpenGL, Vulkan utilizza lo Standard Portable Intermediate Representation per la precompilazione degli shader, permettendo ai Devs di scrivere gli shader in linguaggi diversi da GLSL (OpenGL Shading Language), riducendo l’impatto dei “driver” sulla qualità video in output.

L’altra miglioria notevole delle API Vulkan è la riduzione del carico sulla CPU, evitando che questa possa creare il classico “collo di bottiglia” (es. sui PC vecchi in cui viene aggiornata la sola VGA, lasciando una vecchia CPU e pretendendo di giocare a livelli di dettaglio elevati) garantendo un throughput elevato per i calcoli GPU e di rendering in generale.

Durante l’ultima Game Developers Conference, Khronos ha pubblicamente annunciato al supporto Multi-GPU eterogeneo (Explicit Multi-GPU, o Explicit Multi-Adapter), ovvero eventuale configurazione nVidia + AMD. Inizialmente si pensava che tale feature fosse disponibile solo per Windows 10, dato che era stato sottolineato l’utilizzo del Windows Display Drivers (WDDM). In realtà, l’utilizzo del Linked Display Adapter (LDA), che permette di operare mediante il supporto di diverse schede utilizzando una sola interfaccia, non è prerogativa del solo Windows 10, ma anche di Windows 8.1 e Windows 7.

Fortunatamente, il supporto Multi-GPU sarà esteso anche oltre i confini di Windows OS, grazie all’aiuto di diversi partner che stanno lavorando al supporto Multi-GPU di Vulkan anche per i sistemi GNU/Linux, che non si baserà quindi sulle WDDM, in quanto non necessarie (e non disponibili su altri OS). Inoltre, Khronos ha rivelato di esser disponibile a supportare attivamente tutte le compagnie che vorranno sviluppare ed implementare la gestione Multi-GPU sui sistemi Linux based.

Il funzionamento dell’Explicit Multi-GPU, detto in soldoni, dovrebbe esser il seguente: utilizzare le GPU rilevate nel sistema come un unico dispositivo logico, accedendo a tutte le risorse disponibili come se fosse un sistema eterogeneo ma interconnesso, quasi come una versione rivista delle tecnologie CrossFire e SLI, ma gestite via software.

La gestione sofware non pregiudicherà però l’indipendenza di ogni singola GPU (e delle memorie disponibili), la quale potrà elaborare dei dati completamente diversi/separati/indipendenti rispetto a quelli che in quell’istante sta elaborando l’altra/le altre GPU. In questo senso, a livello teorico, le API Vulkan dovrebbero garantire uno scaling migliore.

Detto questo, dal mio punto di vista sarebbe interessare che si raggiunga, prima o poi, uno standard univoco cross platform non solo riguardo le API, ma anche dei driver, così che possano esser “compilati” almeno per i tre maggiori sistemi operativi disponibili sul mercato, ovvero Windows OS, Apple Mac OSX ed i sistemi GNU/Linux. Di certo Vulkan, e Mantle in precedenza, ha dato uno scossone notevole al mondo videoludico…E speriamo sia solo l’inizio!

Se per poter giocare occorre ottenere il 100% delle prestazioni dal proprio hardware, il garantire un funzionamento base dei propri prodotti dovrebbe esser il primo passo verso la libertà dell’utente finale, così che possa scegliere l’hardware del proprio PC indifferentemente dal sistema operativo che vorrà installarci (es. molti utenti GNU/Linux preferiscono ATI, altri nVidia, altri Intel..Benché non giochino assiduamente al PC, una preferenza accordata dalle precedenti esperienze e problemi dovute al mancato supporto adeguato al mondo del pinguino).

Fonti: Wiki, Fudzilla, Everyeye.