Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 12624|Risposta: 0

CUDA è diverso da OpenCL

[Copiato link]
Pubblicato su 22/04/2018 21:42:36 | | | |
Secondo le informazioni sul sito web, una breve raccolta delle differenze tra CUDA e OpenCL. Per favore, segnalate eventuali errori.

Digressione: Un test di simulazione presso il Sandia National Laboratory negli Stati Uniti ha dimostrato che, a causa delle limitazioni dei meccanismi di memorizzazione e della larghezza di banda della memoria, i processori a 16, 32 o anche 64 core non solo non possono portare a miglioramenti delle prestazioni ai supercomputer, ma possono anche portare a una significativa diminuzione dell'efficienza.

Cos'è OpenCL?

È uno standard aperto e libero per la programmazione parallela per lo scopo generale di sistemi eterogenei, avviato da Apple e prodotto congiuntamente da molti produttori noti nel settore, ed è anche un ambiente di programmazione unificato. È comodo per gli sviluppatori di software scrivere codice efficiente e leggero per server di calcolo ad alte prestazioni, sistemi desktop computing e dispositivi portatili, ed è ampiamente utilizzato in processori multi-core (CPU), unità di elaborazione grafica (GPU), architetture a celle e altri processori paralleli come i processori digitali di segnale (DSP), e offre ampie prospettive di sviluppo in vari campi come giochi, intrattenimento, ricerca scientifica e assistenza medica.

Cos'è CUDA?

CUDA è un'architettura basata sul calcolo parallelo su GPU Nvidia. CUDA include principalmente due aspetti: uno è l'architettura del set di istruzioni ISA; il secondo motore hardware di calcolo; In realtà è hardware e set di istruzioni. In altre parole, possiamo pensare a CUDA come a un'architettura simile a X86 o a cell, ma basata su GPU, non su CPU tradizionali.




Cos'è esattamente OpenCL?

OpenCL è in realtà una nuova API per la programmazione parallela di sistemi eterogenei, e OpenCL può usare GPU per svolgere un po' di lavoro di calcolo parallelo.
OpenGL è per i grafi, mentre OpenCL è per il calcolo parallelo.
Nel processo di sviluppo di OpenCL, le piattaforme tecniche sono tutte GPU NVIDIA e, in effetti, OpenCL è sviluppato basandosi sulle piattaforme GPU NVIDIA. Inoltre, la prima demo di OpenCL era in esecuzione anche su GPU NVIDIA.
In sostanza, OpenCL è una tecnologia equivalente a DirectX sulla piattaforma Windows. O meglio, è un'interfaccia API che collega hardware e software. Sotto questo aspetto, è simile a OpenGL, ma OpenCL è molto più esteso di OpenGL e non viene utilizzato solo per la grafica 3D. Se lo descrivi in una frase, il ruolo di OpenCL è quello di liberare il potenziale hardware chiamando le risorse di calcolo del processore e della GPU, così che il programma giri più velocemente e meglio.
Cos'è esattamente CUDA?

L'architettura CUDA è nativa, appositamente progettata per interfacce di calcolo, e questa architettura hardware, inclusi i set di istruzioni, è un insieme completo di architetture progettate per questo tipo di calcolo parallelo e calcolo eterogeneo. L'architettura CUDA può supportare API, inclusi OpenCL o DirectX, e CUDA supporta anche C, C++, Fortran, Java, Python e altri linguaggi.



Qual è il rapporto tra OpenCL e CUDA?

Il rapporto tra CUDA e OpenCL non è un rapporto di conflitto, ma un rapporto inclusivo. OpenCL è un'API, al primo livello, l'architettura CUDA è di livello superiore, che si tratti di OpenCL, DX11 o linguaggio C, Fortran, DX11, possono essere supportati. Come sviluppatore di programmi, generalmente comprendono solo questi linguaggi o API, e possono usare più linguaggi per sviluppare i propri programmi, indipendentemente dal linguaggio scelto; purché vogliano chiamare la potenza di calcolo della GPU, possono usare CUDA per programmare su questa architettura.
Le differenze tecniche tra OpenCL e CUDA si riflettono principalmente nel metodo di implementazione. CUDA basato su linguaggio C è confezionato in un codice facile da scrivere, quindi anche i ricercatori che non sono familiari con la costruzione di chip possono utilizzare gli strumenti CUDA per scrivere programmi pratici. Sebbene OpenCL sia sintatticamente vicino a CUDA, enfatizza maggiormente le operazioni sottostanti, quindi è più difficile, ma per questo motivo OpenCL può funzionare su più piattaforme.
CUDA è un'architettura di calcolo parallelo che contiene un'architettura di set di istruzioni e un corrispondente motore hardware. OpenCL è un'interfaccia di programmazione applicativa (API) per il calcolo parallelo, e OpenCL è un nuovo percorso di sviluppo di programmi CUDA oltre a C per CUDA sull'architettura NVIDIA CUDA.
Se vuoi avere più controllo sull'hardware, puoi usare l'API OpenCL per programmare, e se non conosci molto l'API, puoi anche programmare in CUDA C, che sono due modi diversi di programmare e hanno le loro somiglianze e differenze. Ma c'è un po', quando si sviluppano i linguaggi OpenCL e CUDA C, nel calcolo parallelo, i loro concetti sono simili, questi due programmi hanno grandi somiglianze tra loro, quindi è relativamente facile trasferire i programmi l'uno nell'altro.


Il linguaggio CUDA C è posizionato in modo diverso rispetto a OpenCL, o in altre parole, utilizza persone diverse. CUDA C è un linguaggio di alto livello che può essere facilmente utilizzato da non professionisti che non conoscono molto l'hardware; OpenCL è un'interfaccia di sviluppo applicativo orientata all'hardware, che offre ai programmatori maggiore controllo sull'hardware, e sarà più difficile avviare e sviluppare.
Anche le abitudini d'uso dei programmatori sono molto importanti: chi usa il linguaggio C sulla piattaforma CPU X86 accetterà facilmente il linguaggio C basato sulla piattaforma GPU CUDA; Le persone abituate allo sviluppo grafico OpenGL saranno più amichevoli a vedere OpenCL, e sarà molto facile sviluppare programmi di calcolo legati alla grafica e al video sulla sua base.






Precedente:HttpRuntime Cache che imposta l'incapsulamento delle informazioni della cache
Prossimo:Perché non dare MB agli avatar dei set
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com