CUDA
Autor | Nvidia |
---|---|
Pierwsze wydanie | 1.0 / 23.06.2007 |
Platforma sprzętowa | GPU firmy Nvidia |
System operacyjny | GNU/Linux, Windows, macOS |
Rodzaj | biblioteka i środowisko programistyczne |
Licencja | własnościowa, freeware |
Strona internetowa |
CUDA (ang. Compute Unified Device Architecture) – opracowana przez firmę Nvidia uniwersalna architektura procesorów wielordzeniowych (głównie kart graficznych) umożliwiająca wykorzystanie ich mocy obliczeniowej do rozwiązywania ogólnych problemów numerycznych w sposób wydajniejszy niż w tradycyjnych, sekwencyjnych procesorach ogólnego zastosowania.
Architektura
[edytuj | edytuj kod]Integralną częścią architektury CUDA jest oparte na języku programowania C środowisko programistyczne wysokiego poziomu, w którego skład wchodzą m.in. specjalny kompilator (nvcc), debugger (cuda-gdb, który jest rozszerzoną wersją debuggera gdb umożliwiającą śledzenie zarówno kodu wykonywanego na CPU, jak i na karcie graficznej), profiler oraz interfejs programowania aplikacji. Dostępne są również biblioteki, które można wykorzystać w językach Python, Fortran, Java, C# oraz Matlab. Pierwsze wydanie środowiska współpracowało z systemami operacyjnymi Windows oraz Linux. Od wersji 2.0 działa również z macOS.
Zalety
[edytuj | edytuj kod]- Język programowania oparty na językach C/C++, w tym pełna obsługa szablonów C++.
- Model pamięci procesora ściśle odpowiadający architekturze sprzętowej, co umożliwia świadome, efektywne wykorzystywanie dostępnych zasobów GPU, w tym pamięci współdzielonej. Pamięć ta jest współdzielona przez wszystkie wątki w tzw. bloku (zwykle 128-512 wątków). Można jej używać jako programowalnej pamięci typu cache.
- Kod uruchamiany na GPU może odczytywać i zapisywać dane z dowolnego adresu w pamięci GPU.
- Pełna kompatybilność programów – napisany dziś program wykonywalny ma w przyszłości działać bez żadnych zmian na coraz wydajniejszych procesorach graficznych posiadających coraz większą liczbę rdzeni, rejestrów, pamięci operacyjnej i innych zasobów.
- Dostępność na wszystkich kartach firmy NVIDIA począwszy od serii GeForce 8 w tym Quadro oraz Tesla[1].
- Obsługa procesorów ARM (od wersji 6.5)
- Obecnie nawet starsze laptopy często mają kartę graficzną zawierającą rdzenie CUDA(2018)[2].
Ograniczenia
[edytuj | edytuj kod]- CUDA korzysta z podzbioru języka C++. Nie można na przykład definiować statycznych zmiennych wewnątrz funkcji, a funkcje mogą mieć tylko stałą liczbę parametrów[3].
- Dla liczb zmiennoprzecinkowych podwójnej precyzji (dostępnych w nowszych procesorach) istnieją pewne odstępstwa od standardu w zakresie zaokrąglania liczb.
- Przepustowość i opóźnienia magistrali PCI-Express łączącej CPU i GPU mogą być wąskim gardłem w przypadku przesyłania dużej ilości danych.
- CUDA jest dostępna jedynie dla kart graficznych produkowanych przez firmę NVIDIA
Zastosowania
[edytuj | edytuj kod]W grach komputerowych moc obliczeniową można wykorzystać do obliczeń fizyki w grach, ale CUDA jest również wykorzystywana do przyspieszania obliczeń w takich dziedzinach jak biologia, fizyka, kryptografia i inne obliczenia inżynierskie. Dla potrzeb tego segmentu Nvidia opracowała specjalny procesor graficzny Tesla.
- Przyspieszenie szyfrowania i kompresji oraz konwersji wideo do różnych formatów
- Symulacje fizyczne (np. w dynamice płynów) i obliczenia inżynierskie
- Renderowanie wirtualnej rzeczywistości na podstawie tomografii komputerowej i rezonansu magnetycznego
- Efekty specjalne w grafice komputerowej, np. symulacje falujących powierzchni ubrań[4]
- Sztuczna inteligencja
Niektóre projekty przetwarzania rozproszonego BOINC wykorzystują do obliczeń architekturę CUDA[5][6].
Wersja 3.x
[edytuj | edytuj kod]Kolejna wersja architektury CUDA (CUDA 3.0) obsługuje procesory graficzne o architekturze Fermi. Cuda 3.0 zapewnia pełniejsze wsparcie dla konstrukcji języka C++ (m.in. jednolitą przestrzeń adresową dla wskaźników, obsługę dziedziczenia, a od wersji 3.1 – funkcji rekurencyjnych i wskaźników na funkcje). Cuda 3.0 umożliwia wykonywanie kilkunastu kerneli jednocześnie na jednym GPU (o architekturze Fermi). Wraz z nową generacją procesorów Nvidia udostępniła wsparcie dla środowiska Visual Studio 2008[7].
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ Lista kart graficznych wspieranych przez CUDA.
- ↑ The NVIDIA® GeForce® 310M GPUs delivers great performance and amazing multimedia capabilities. | GeForce [online], www.geforce.com [dostęp 2018-12-05] (ang.).
- ↑ CUDA C Programming Guide.
- ↑ OptitTex CAD/CAM/CAE. NVIDIA. [dostęp 2020-07-10]. [zarchiwizowane z tego adresu (2020-07-10)].
- ↑ Liczenie na GPU (lista projektów i kart).
- ↑ GPU computing – BOINC.
- ↑ NVIDIA Parallel Nsight.
Linki zewnętrzne
[edytuj | edytuj kod]- CUDA Zone – strona producenta technologii CUDA
- NVIDIA CUDA C SDK Code Samples – strona z przykładowymi programami