dado1979 ha scritto:
Mi sa che bisognerà aspettare la nuova tecnologia a 20 nm e un reale supporto a HSA come dici... ma ci sono previsioni per l'effettivo supporto?
La loro idea per il futuro sarebbe quella di usare gli shader unificati della parte grafica per gestire con semplicità calcoli ripetitivi su grandi moli di dati differenti senza passare per la debole Fpu tipica dello schema Bulldozer. Huma ha un approccio detto "close to metal", pertanto è già supportato in modo trasparente dal bios della scheda madre e dal microcodice della Apu grazie al bus di memoria (e relativo registro) unificato.
Esistono quindi diversi vantaggi in scenari d'uso molto particolari, fortemente divisi in thread (e qui entra in gioco la cache L2 condivisa all'interno del singolo modulo) che necessitino allo stesso tempo della medesima operazione su una grande base di dati.
I progetti Boinc (che sono un misto di interi e float) tendono quasi sempre al single thread, dimezzando così l'efficienza della L2 condivisa poiché ogni unità aritmetica deve gestire il proprio flusso dati indipendente. Per sua natura, una cpu tipo Bulldozer ha un'ottima gestione del multithread, per la precisione va a coppie.
Si potrebbe massimizzare l'efficienza di Bulldozer con Boinc programmando un'applicazione dual thread, che nel caso dell'A10 permetterebbe di eseguire due wu in contemporanea, lasciando la gestione della logica e degli interi ai core aritmetici e dislocando il carico di database agli shaders. La fpu in questo caso servirebbe solo per le meno frequenti operazioni sul singolo dato o che magari vadano a richiedere la precisione doppia (inutile nella stragrande maggioranza dei casi).
Quindi il problema non sta nella compatibilità o nel supporto (in quanto è già supportato), né tanto meno nei driver, ma nel fatto che diversi progetti Boinc hanno algoritmi non parallelizzabili in quanto fortemente dipendenti da risultati precedenti o basati su una logica di tipo event-driven (come ad esempio Rosetta).
Altri, invece, come ad esempio lo stesso Seti oppure Einstein potrebbero senza dubbio beneficiarne moltissimo. Ciò che deve veramente evolvere è il compilatore, che si farebbe così carico di allocare il giusto lavoro alla giusta periferica dell'insieme hsa senza dover delegare il compito al programmatore (che attualmente deve farlo a mano con grande dispendio di tempo ed energia).
Da quel che ho letto in giro Gcc ha solo un supporto parziale (edit: sperimentale), ma già dalla prossima versione le cose dovrebbero migliorare