Enligt webbplatsinformationen, en kort sammanställning av skillnaderna mellan CUDA och OpenCL. Vänligen påpeka eventuella fel.
Avvikelse: Ett simuleringstest vid Sandia National Laboratory i USA visade att på grund av begränsningar i lagringsmekanismer och minnesbandbredd kan 16-kärniga, 32-kärniga eller till och med 64-kärniga processorer inte bara ge prestandaförbättringar till superdatorer, utan kan till och med leda till en betydande minskning av effektiviteten.
Vad är OpenCL?
Det är en öppen och fri standard för parallell programmering för det allmänna syftet med heterogena system, initierad av Apple och gemensamt producerad av många välkända tillverkare i branschen, och det är också en enhetlig programmeringsmiljö. Det är bekvämt för mjukvaruutvecklare att skriva effektiv och lättviktig kod för högpresterande datorservrar, stationära datorsystem och handhållna enheter, och används i stor utsträckning i flerkärniga processorer (CPU:er), grafikprocessorer (GPU:er), celltyparkitekturer och andra parallella processorer såsom digitala signalprocessorer (DSP), och har breda utvecklingsmöjligheter inom olika områden såsom spel, underhållning, vetenskaplig forskning och medicinsk vård.
Vad är CUDA?
CUDA är en arkitektur baserad på parallell beräkning på Nvidia-GPU:er. CUDA omfattar huvudsakligen två aspekter: den ena är ISA:s instruktionsuppsättningsarkitektur; den andra hårdvaruberäkningsmotorn; Det är faktiskt hårdvara och instruktionsuppsättning. Med andra ord kan vi se CUDA som en arkitektur liknande X86 eller cell, men baserad på GPU:er, inte traditionella CPU:er.
Vad är egentligen OpenCL?
OpenCL är faktiskt ett helt nytt API för parallell programmering av heterogena system, och OpenCL kan använda GPU:er för att utföra viss parallell beräkning. OpenGL är för grafer, medan OpenCL är för parallell beräkning. I processen med OpenCL-utveckling är de tekniska plattformarna alla NVIDIA-GPU:er, och faktiskt utvecklas OpenCL baserat på NVIDIA GPU-plattformar. Dessutom kördes den första demon av OpenCL även på NVIDIA-GPU:er. I grund och botten är OpenCL en teknologisk motsvarighet till DirectX på Windows-plattformen. Eller snarare, det är ett API-gränssnitt som kopplar samman hårdvara och mjukvara. I detta avseende liknar det OpenGL, men OpenCL är mycket mer omfattande än OpenGL och används inte bara för 3D-grafik. Om du beskriver det i en mening är OpenCL:s roll att frigöra hårdvarupotentialen genom att kalla processorns och GPU:ns datorresurser, så att programmet går snabbare och bättre.
Vad är CUDA egentligen?
CUDA-arkitekturen är inbyggd, speciellt byggd för datorgränssnitt, och denna hårdvaruarkitektur, inklusive instruktionsuppsättningar, är en komplett uppsättning arkitekturer designade för denna typ av parallell databehandling och heterogen databehandling. CUDA-arkitekturen kan stödja API:er, inklusive OpenCL eller DirectX, och CUDA stöder även C, C++, Fortran, Java, Python och andra språk.
Vad är relationen mellan OpenCL och CUDA?
Relationen mellan CUDA och OpenCL är inte en konfliktrelation, utan en inkluderande relation. OpenCL är ett API, på första nivån är CUDA-arkitekturen på en högre nivå, oavsett om det är OpenCL, DX11 eller C-språket, Fortran, DX11-datorer, kan stödjas. Som programutvecklare förstår de generellt bara dessa språk eller API:er, och kan använda flera språk för att utveckla sina egna program, oavsett vilket språk de väljer, så länge de vill kalla GPU:ns datorkraft kan de använda CUDA för att programmera på denna arkitektur. De tekniska skillnaderna mellan OpenCL och CUDA återspeglas främst i implementeringsmetoden. CUDA baserat på C-språket paketeras i en lättskrivbar kod, så även forskare som inte är bekanta med chipkonstruktion kan använda CUDA-verktyg för att skriva praktiska program. Även om OpenCL syntaktiskt ligger nära CUDA, betonar det de underliggande operationerna mer, vilket gör det svårare, men på grund av detta kan OpenCL köras över plattformar. CUDA är en parallell datorarkitektur som innehåller en instruktionsuppsättningsarkitektur och en motsvarande hårdvarumotor. OpenCL är ett applikationsprogrammeringsgränssnitt (API) för parallell databehandling, och OpenCL är en ny CUDA-programutvecklingsväg utöver C för CUDA på NVIDIA CUDA-arkitekturen. Om du vill få mer kontroll över hårdvaran kan du använda OpenCL API för att programmera, och om du inte vet så mycket om API:et kan du också programmera i CUDA C, vilket är två olika sätt att programmera, och de har sina likheter och skillnader. Men det finns lite när OpenCL och CUDA C-språken utvecklas, i parallell databehandling, deras koncept är lika, dessa två program har stora likheter i program, så det är relativt enkelt att porta program till varandra.
CUDA C-språket är placerat annorlunda än OpenCL, eller med andra ord, det använder olika personer. CUDA C är ett högnivåspråk som enkelt kan användas av icke-professionella som inte kan mycket om hårdvara; OpenCL är ett hårdvaruorienterat gränssnitt för applikationsutveckling, vilket ger programmerare mer kontroll över hårdvaran, och det blir svårare att komma igång och utveckla. Programmerarnas användningsvanor är också mycket viktiga, de som använder C-språket på X86-CPU-plattformen accepterar lätt C-språket baserat på CUDA:s GPU-plattform; Personer som är vana vid att använda OpenGL-grafikutveckling kommer att vara mer vänliga att se OpenCL, och det kommer att vara mycket enkelt att utveckla datorprogram relaterade till grafik och video på dess grund.
|