Skrivet av dlq84:
Min spontana känsla är att de känner pressen från Vulkan Compute, OpenCL visade sig vara mindre populärt än Cuda, men Vulkan Compute kanske är en riktig utmanare. Så för att inte förlora marknad...
Om Vulkan-compute vore värsta konkurrent mot CUDA kunde Jensen sova som en baby om nätterna
Vet inte riktigt hur man lyckades, Vulkan-compute har ett brett HW-stöd både på PC och (moderna) Android-mobiler. Men en av huvudorsakerna att OpenCL misslyckades så kapitalt mot CUDA är att den förra kräver så otroligt mycket boiler-plate för att få något gjort överhuvudtaget. Med Vulkan-compute lyckades man med konststycket att göra just det problem ännu värre.
Finns studier som visar hur viktigt "time-to-hello-world" är för att en teknik ska lyckas. Teknik som kräver löjligt mycket för att man överhuvudtaget ska lyckas göra något alls misslyckas även om det finns verkliga fördelar med tekniken i stort.
Ett klassiskt "hello-world" för GPGPU är att kunna addera innehållet hos två vektorer. Att göra det i Vulkan compute kommer i praktiken ta 500-600 rader C/C++ kod!!!
Motsvarande i CUDA kan göras på ~50 rader + att man kan göra allt i en enda fil i CUDA medan det krävs minst två filer för Vulkan-compute (samma gäller OpenCL).
Är det något Nvidia rimligen oroar sig för så är det Intels OpenAPI. CUDA är nästan vanlig C. Compute-delen i OneAPI använder sig av Khronos SyCL och använder sig av standard C++.
SyCL kräver inte bara något mindre boiler-plate än CUDA, i fallet OneAPI kan man med samma kod-bas bygga för GPGPU, FPGA och/eller SIMD på CPU (SSE/AVX på x86). Det är en stor styrka då olika problem passar olika HW-typer olika bra.
Hello-world exemplet i OpenAPI/SyCL går att få ned till under 30 rader kod, då inkluderat stöd för att köra på CPU, GPU och FPGA (tar en/två rader att göra det valbart i runtime och ingen rad att välja statiskt).
En annan trevlig saker med SyCL är att man kan använda t.ex. OpenCL, Vulkan-compute, AMD HIP, CUDA som "back-end" driver. Då hamnar det på back-end skaparen att hantera all boiler-plate för OpenCL (bl.a Intel, Qualcomm och ARM har SyCL backends baserad på OpenCL), Vulkan-compute, HIP (finns community drivna projekt som jobbar på dessa två) och CUDA (Intel har skapat en OneAPI kompatibel backend för Nvidias GPUer på det sättet).