Ifølge nettsideinformasjonen, en kort oppsummering av forskjellene mellom CUDA og OpenCL. Vennligst påpek eventuelle feil.
Didigresjon: En simuleringstest ved Sandia National Laboratory i USA beviste at på grunn av begrensninger i lagringsmekanisme og minnebåndbredde, kan 16-kjerners, 32-kjerners eller til og med 64-kjerners prosessorer ikke bare gi ytelsesforbedringer til superdatamaskiner, men kan til og med føre til en betydelig reduksjon i effektivitet.
Hva er OpenCL?
Det er en åpen og fri standard for parallell programmering for det generelle formålet med heterogene systemer, initiert av Apple og produsert i fellesskap av mange kjente produsenter i bransjen, og det er også et samlet programmeringsmiljø. Det er praktisk for programvareutviklere å skrive effektiv og lett kode for høyytelses databehandlingsservere, stasjonære datamaskinsystemer og håndholdte enheter, og brukes mye i flerkjerneprosessorer (CPU-er), grafikkprosesseringsenheter (GPU-er), cellearkitekturer og andre parallellprosessorer som digitale signalprosessorer (DSP), og har brede utviklingsmuligheter innen ulike felt som spill, underholdning, vitenskapelig forskning og medisinsk behandling.
Hva er CUDA?
CUDA er en arkitektur basert på parallell databehandling på Nvidia-GPUer. CUDA inkluderer hovedsakelig to aspekter: det ene er ISA-instruksjonssettarkitekturen; den andre maskinvareberegningsmotoren; Det er faktisk maskinvare og instruksjonssett. Med andre ord kan vi tenke på CUDA som en arkitektur lik X86 eller cell, men basert på GPU-er, ikke tradisjonelle CPU-er.
Hva er egentlig OpenCL?
OpenCL er faktisk et helt nytt API for parallell programmering av heterogene systemer, og OpenCL kan bruke GPU-er til å utføre noe parallell databehandling. OpenGL er for grafer, mens OpenCL er for parallell databehandling. I prosessen med OpenCL-utviklingen er de tekniske plattformene alle NVIDIA-GPUer, og faktisk er OpenCL utviklet basert på NVIDIA GPU-plattformer. I tillegg kjørte den første demoen av OpenCL også på NVIDIA GPU-er. I bunn og grunn er OpenCL en teknologisk ekvivalent til DirectX på Windows-plattformen. Eller rettere sagt, det er et API-grensesnitt som kobler sammen maskinvare og programvare. På dette området ligner det på OpenGL, men OpenCL er mye mer omfattende enn OpenGL, og det brukes ikke bare for 3D-grafikk. Hvis du beskriver det i én setning, er OpenCLs rolle å frigjøre maskinvarepotensialet ved å kalle prosessorens og GPU-ens dataressurser, slik at programmet kjører raskere og bedre.
Hva er egentlig CUDA?
CUDA-arkitekturen er native, spesielt utviklet for databehandlingsgrensesnitt, og denne maskinvarearkitekturen, inkludert instruksjonssett, er et komplett sett med arkitekturer designet for denne typen parallell databehandling og heterogen databehandling. CUDA-arkitekturen kan støtte API-er, inkludert OpenCL eller DirectX, og CUDA støtter også C, C++, Fortran, Java, Python og andre språk.
Hva er forholdet mellom OpenCL og CUDA?
Forholdet mellom CUDA og OpenCL er ikke et konfliktforhold, men et inkluderende forhold. OpenCL er et API, på første nivå er CUDA-arkitekturen et høyere nivå, enten det er OpenCL, DX11 eller C-språk, Fortran, DX11-databehandling, kan støttes. Som programutvikler forstår de vanligvis bare disse språkene eller API-ene, og kan bruke flere språk for å utvikle sine egne programmer, uansett hvilket språk de velger, så lenge de ønsker å bruke GPU-ens datakraft, kan de bruke CUDA til å programmere på denne arkitekturen. De tekniske forskjellene mellom OpenCL og CUDA gjenspeiles hovedsakelig i implementeringsmetoden. CUDA basert på C-språket er pakket inn i en lettskrivbar kode, så selv forskere som ikke er kjent med brikkekonstruksjon kan bruke CUDA-verktøy for å skrive praktiske programmer. Selv om OpenCL syntaktisk ligner på CUDA, legger det mer vekt på de underliggende operasjonene, så det er vanskeligere, men på grunn av dette kan OpenCL kjøres på tvers av plattformer. CUDA er en parallell databehandlingsarkitektur som inneholder en instruksjonssettarkitektur og en tilsvarende maskinvaremotor. OpenCL er et applikasjonsprogrammeringsgrensesnitt (API) for parallell databehandling, og OpenCL er en ny CUDA-programutviklingsvei i tillegg til C for CUDA på NVIDIA CUDA-arkitekturen. Hvis du vil få mer kontroll over maskinvaren, kan du bruke OpenCL API til å programmere, og hvis du ikke vet så mye om API-et, kan du også programmere i CUDA C, som er to forskjellige måter å programmere på, og de har sine likheter og forskjeller. Men det er litt når OpenCL og CUDA C-språkene utvikles, i parallell databehandling, konseptene deres er like, disse to programmene har store likheter, så det er relativt enkelt å overføre programmer til hverandre.
CUDA C-språket er plassert annerledes enn OpenCL, eller med andre ord, det bruker andre personer. CUDA C er et høynivåspråk som enkelt kan brukes av ikke-profesjonelle som ikke kan mye om maskinvare; OpenCL er et maskinvareorientert grensesnitt for applikasjonsutvikling, som gir programmerere mer kontroll over maskinvaren, og det vil være vanskeligere å komme i gang og utvikle. Programmerernes bruksvaner er også svært viktige; de som bruker C-språket på X86 CPU-plattformen vil lett akseptere C-språket basert på CUDA GPU-plattformen; Folk som er vant til å bruke OpenGL-grafikkutvikling vil være mer vennlige for å se OpenCL, og det vil være veldig enkelt å utvikle dataprogrammer relatert til grafikk og video basert på dette.
|