Technologia CUDA

Print Friendly

CUDA

W nowoczesnej grafice komputerowej da się pokazać tylko to, co potrafimy w sensownym czasie policzyć. Zatem podstawowym ograniczeniem są możliwości sprzętowe i moc obliczeniowa.

Aby polepszyć możliwości renderowania grafiki firma Nvidia w 1999 roku wprowadziła na rynek procesor graficzny GPU (Graphics Processing Unit), którego głównym zadaniem było wykonywanie obliczeń związanych z grafiką 3D, co spowodowało częściowe odciążenie procesora CPU z konieczności wykonywania tego zadania, a w konsekwencji skutkowało zwiększeniem wydajności komputera.

Kolejnym rozwiązaniem służącym lepszemu wykorzystaniu mocy obliczeniowej w grafice komputerowej jest technologia CUDA.

CUDA (ang. Compute Unified Device Architecture) to opracowana przez firmę Nvidia uniwersalna architektura procesorów wielordzeniowych, która umożliwia wykorzystanie ich mocy obliczeniowej do rozwiązywania ogólnych problemów numerycznych w sposób wydajniejszy niż w tradycyjnych, sekwencyjnych procesorach ogólnego zastosowania (CPU). Projekt architektury CUDA zakłada pełną skalowalność programów – napisany dziś program wykonywalny ma w przyszłości działać bez żadnych zmian na coraz wydajniejszych procesorach graficznych.  Inne najważniejsze obszary zastosowań technologii CUDA – poza grafiką komputerową – to biologia, medycyna, fizyka, kryptografia i inne obliczenia inżynierskie. Dla potrzeb tego segmentu Nvidia opracowała specjalny procesor TESLA.

Konkurencyjne rozwiązania to procesor Larrabee oraz AMD FireStream.

Przykładowy przebieg przetwarzania w CUDA:

1. Kopiowanie danych z pamięci głównej do GPU.
2. CPU zleca GPU rozpoczęcie przetwarzania.
3. GPU realizuje obliczenia w sposób równoległy w każdym ze swoich rdzeni.
4. Następuje przekopiowanie wyników z pamięci GPU do pamięci głównej.

Przykładowy przebieg przetwarzania w CUDA

Podczas programowania przy pomocy technologii CUDA, GPU jest widziany jako  urządzenie obliczeniowe zdolne do wykonania dużej ilości wątków równolegle. GPU pracuje wtedy jako koprocesor dla głównego CPU. Innymi słowy, część aplikacji, która jest wykonywana wiele razy, ale niezależnie na różnych danych, może być wyizolowana do postaci funkcji która jest wykonywana na tym koprocesorze jako wiele różnych wątków. Aby to osiągnąć, taka funkcja jest kompilowana do postaci zbioru instrukcji koprocesora,
a następnie tak powstały program (kernel) jest ładowany do koprocesora. Zarówno CPU jak i koprocesor GPU maja własne DRAM. Można kopiować dane z jednego DRAM do drugiego, stosując zoptymalizowane instrukcje API (Application Programming Interface) wykorzystujące wysokowydajne zasoby DMA (Direct Memory Access) koprocesora.

Podsumowanie

CUDA to równoległa architektura obliczeniowa, która zapewnia radykalny wzrost wydajności obliczeń dzięki wykorzystaniu mocy układów GPU. Do zastosowań tej technologii możemy zaliczyć przetwarzanie wideo, astrofizykę, biologię obliczeniową, chemię, symulację dynamiki płynów, badania interferencji elektromagnetycznych, rekonstrukcję obrazu w tomografii komputerowej, projektowanie robotów, bezpieczeństwo ruchu lotniczego, analizę sejsmiczną, ray tracing i wiele innych.


Parent page: Technologia CUDA

NOTATKI W INTERNECIENOTATKI W INTERNECIENOTATKI W INTERNECIE
Dostępne na licencji Creative Commons. Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 3.0 Polska
Copyright © 2012 - Urszula Strojny