Le GPU stanno appena iniziando a supportare la precisione doppia nell'hardware, sebbene nel prossimo futuro continui a essere molto più lento della precisione singola. Ci sono una grande varietà di tecniche che sono state sviluppate nel corso degli anni per sintetizzare un punto di virgola mobile ad alta precisione usando una rappresentazione composta da più float in qualunque precisione abbia un supporto hardware veloce, ma il sovraccarico è piuttosto consistente. IIRC, il manuale di crlibm ha una buona discussione di alcune di queste tecniche, con analisi degli errori e pseudocodice (CRLIBM li usa per rappresentare i numeri come più di un valore a doppia precisione, ma le stesse tecniche possono essere usate con un singolo)
Senza sapere di più su cosa stai cercando di fare, è difficile dare una risposta migliore. Per alcuni algoritmi, solo una piccola parte del calcolo richiede un'elevata precisione; se ti trovi in un caso del genere, potrebbe essere possibile ottenere prestazioni decenti sulla GPU, anche se il codice non sarà necessariamente molto carino o facile da usare. Se hai bisogno di alta precisione in modo pervasivo in tutto l'algoritmo, allora la GPU probabilmente non è un'opzione interessante per te al momento.
Infine, perché HLSL e non un linguaggio orientato al calcolo come CUDA o OpenCL?
fonte
2009-09-18 15:39:13
Il codice sarà destinato all'elaborazione di sistemi frattali iterati, pertanto è necessario disporre di un'elevata precisione coerente. Sto cercando un aumento delle prestazioni rispetto all'elaborazione su una CPU. E per quanto riguarda CUDA e OpenCL, ho più familiarità con HLSL atm. Anche se sto pensando di farlo in CUDA. Mi sono dilettato in CUDA prima, ma non posso dire di essere un esperto. – Mark
Se è necessaria un'elevata precisione in modo coerente, è probabile che al momento non sia possibile battere codice ben scritto in esecuzione sulla CPU. Probabilmente il tuo tempo è meglio speso nell'esecuzione di profili sulla CPU e nelle prestazioni di ottimizzazione. –
Non è che scrivere codice GPGPU non valga la pena per i propri meriti, solo che si vuole davvero scegliere qualcosa in cui non si stia tentando di far fare all'hardware qualcosa a cui non è stato progettato. –