Ifølge hjemmesidens information, en kort samling af forskellene mellem CUDA og OpenCL. Venligst påpege eventuelle fejl.
Digression: En simuleringstest på Sandia National Laboratory i USA beviste, at på grund af begrænsningerne i lagringsmekanisme og hukommelsesbåndbredde kan 16-kerne, 32-core eller endda 64-core processorer ikke blot ikke give ydeevneforbedringer til supercomputere, men kan endda føre til et betydeligt fald i effektiviteten.
Hvad er OpenCL?
Det er en åben og fri standard for parallel programmering til det generelle formål i heterogene systemer, initieret af Apple og produceret i fællesskab af mange kendte producenter i branchen, og det er også et samlet programmeringsmiljø. Det er praktisk for softwareudviklere at skrive effektiv og letvægts kode til højtydende computerservere, desktop-computersystemer og håndholdte enheder, og det anvendes bredt i multi-core processorer (CPU'er), grafikprocessorer (GPU'er), celletypearkitekturer og andre parallelle processorer såsom digitale signalprocessorer (DSP'er), og har brede udviklingsmuligheder inden for forskellige områder som spil, underholdning, videnskabelig forskning og medicinsk behandling.
Hvad er CUDA?
CUDA er en arkitektur baseret på parallel computing på Nvidia GPU'er. CUDA omfatter hovedsageligt to aspekter: det ene er ISA's instruktionssætarkitektur; den anden hardware-beregningsmotor; Det er faktisk hardware og instruktionssæt. Med andre ord kan vi tænke på CUDA som en arkitektur, der ligner X86 eller cell, men baseret på GPU'er, ikke traditionelle CPU'er.
Hvad er OpenCL egentlig?
OpenCL er faktisk et helt nyt API til parallel programmering af heterogene systemer, og OpenCL kan bruge GPU'er til at udføre noget parallelt beregningsarbejde. OpenGL er til grafer, mens OpenCL er til parallel computing. I processen med OpenCL-udviklingen er de tekniske platforme alle NVIDIA GPU'er, og faktisk er OpenCL udviklet på NVIDIA GPU-platforme. Derudover kørte den første demo af OpenCL også på NVIDIA GPU'er. Grundlæggende er OpenCL en teknologisk ækvivalent til DirectX på Windows-platformen. Eller rettere, det er en API-grænseflade, der forbinder hardware og software. På dette punkt ligner det OpenGL, men OpenCL er meget mere omfattende end OpenGL, og det bruges ikke kun til 3D-grafik. Hvis du beskriver det i én sætning, er OpenCL's rolle at frigøre hardwarepotentialet ved at kalde processorens og GPU'ens computerressourcer, så programmet kører hurtigere og bedre.
Hvad er CUDA egentlig?
CUDA-arkitekturen er opbygget, specielt bygget til computergrænseflader, og denne hardwarearkitektur, inklusive instruktionssæt, er et komplet sæt arkitekturer designet til denne form for parallel computing og heterogen computing. CUDA-arkitekturen kan understøtte API'er, herunder OpenCL eller DirectX, og CUDA understøtter også C, C++, Fortran, Java, Python og andre sprog.
Hvad er forholdet mellem OpenCL og CUDA?
Forholdet mellem CUDA og OpenCL er ikke et konfliktforhold, men et inkluderende forhold. OpenCL er et API, på det første niveau er CUDA-arkitekturen på et højere niveau, uanset om det er OpenCL, DX11 eller C-sprog, Fortran, DX11-computing, kan understøttes. Som programudvikler forstår de generelt kun disse sprog eller API'er og kan bruge flere sprog til at udvikle deres egne programmer, uanset hvilket sprog de vælger; så længe de ønsker at kalde GPU'ens regnekraft, kan de bruge CUDA til at programmere på denne arkitektur. De tekniske forskelle mellem OpenCL og CUDA afspejles hovedsageligt i implementeringsmetoden. CUDA baseret på C-sproget er pakket i en letskrivbar kode, så selv forskere, der ikke er bekendt med chipkonstruktion, kan bruge CUDA-værktøjer til at skrive praktiske programmer. Selvom OpenCL syntaktisk minder om CUDA, lægger det mere vægt på de underliggende operationer, så det er sværere, men på grund af dette kan OpenCL køre på tværs af platforme. CUDA er en parallel computerarkitektur, der indeholder en instruktionssætarkitektur og en tilsvarende hardwaremotor. OpenCL er et applikationsprogrammeringsinterface (API) til parallel computing, og OpenCL er en ny CUDA-programudviklingsvej ud over C for CUDA på NVIDIA CUDA-arkitekturen. Hvis du vil have mere kontrol over hardwaren, kan du bruge OpenCL API'en til at programmere, og hvis du ikke ved meget om API'en, kan du også programmere i CUDA C, som er to forskellige måder at programmere på, og de har deres ligheder og forskelle. Men der er lidt, når OpenCL og CUDA C-sprog udvikles, i parallel computing, deres koncepter er ens, disse to programmer har store ligheder i programmerne, så det er relativt nemt at portere programmer til hinanden.
CUDA C-sproget er placeret anderledes end OpenCL, eller med andre ord, det bruger forskellige personer. CUDA C er et højniveausprog, som let kan bruges af ikke-professionelle, der ikke ved meget om hardware; OpenCL er et hardwareorienteret applikationsudviklingsinterface, som giver programmører mere kontrol over hardwaren, og det vil være sværere at komme i gang og udvikle. Programmørers brugsvaner er også meget vigtige; dem, der bruger C-sproget på X86 CPU-platformen, vil nemt acceptere C-sproget baseret på CUDA GPU-platformen; Folk, der er vant til at bruge OpenGL-grafikudvikling, vil være mere venlige over for OpenCL, og det vil være meget nemt at udvikle computerprogrammer relateret til grafik og video på dets basis.
|