4265

Возможности NVIDIA CUDA

Доклад

Информатика, кибернетика и программирование

Возможности NVIDIA CUDA Технология CUDA — это программно-аппаратная вычислительная архитектура NVIDIA, основанная на расширении языка Си, которая даёт возможность организации доступа к набору инструкций графического ускорителя и управления его ...

Русский

2012-11-15

17.64 KB

35 чел.

Возможности NVIDIA CUDA

Технология CUDA — это программно-аппаратная вычислительная архитектура NVIDIA, основанная на расширении языка Си, которая даёт возможность организации доступа к набору инструкций графического ускорителя и управления его памятью при организации параллельных вычислений. CUDA помогает реализовывать алгоритмы, выполнимые на графических процессорах видеоускорителей GeForce восьмого поколения и старше (серии GeForce 8, GeForce 9, GeForce 200), а также Quadro и Tesla.

Хотя трудоёмкость программирования GPU при помощи CUDA довольно велика, она ниже, чем с ранними GPGPU решениями. Такие программы требуют разбиения приложения между несколькими мультипроцессорами подобно MPI программированию, но без разделения данных, которые хранятся в общей видеопамяти. И так как CUDA программирование для каждого мультипроцессора подобно OpenMP программированию, оно требует хорошего понимания организации памяти. Но, конечно же, сложность разработки и переноса на CUDA сильно зависит от приложения.

Набор для разработчиков содержит множество примеров кода и хорошо документирован. Процесс обучения потребует около двух-четырёх недель для тех, кто уже знаком с OpenMP и MPI. В основе API лежит расширенный язык Си, а для трансляции кода с этого языка в состав CUDA SDK входит компилятор командной строки nvcc, созданный на основе открытого компилятора Open64.

Перечислим основные характеристики CUDA:

  1.  унифицированное программно-аппаратное решение для параллельных вычислений на видеочипах NVIDIA;
  2.  большой набор поддерживаемых решений, от мобильных до мультичиповых
  3.  стандартный язык программирования Си;
  4.  стандартные библиотеки численного анализа FFT (быстрое преобразование Фурье) и BLAS (линейная алгебра);
  5.  оптимизированный обмен данными между CPU и GPU;
  6.  взаимодействие с графическими API OpenGL и DirectX;
  7.  поддержка 32- и 64-битных операционных систем: Windows XP, Windows Vista, Linux и MacOS X;
  8.  возможность разработки на низком уровне.

Касательно поддержки операционных систем нужно добавить, что официально поддерживаются все основные дистрибутивы Linux (Red Hat Enterprise Linux 3.x/4.x/5.x, SUSE Linux 10.x), но, судя по данным энтузиастов, CUDA прекрасно работает и на других сборках: Fedora Core, Ubuntu, Gentoo и др.

Среда разработки CUDA (CUDA Toolkit) включает:

  1.  компилятор nvcc;
  2.  библиотеки FFT и BLAS;
  3.  профилировщик;
  4.  отладчик gdb для GPU;
  5.  CUDA runtime драйвер в комплекте стандартных драйверов NVIDIA
  6.  руководство по программированию;
  7.  CUDA Developer SDK (исходный код, утилиты и документация).