Tesla
ИНФОРМАЦИЯ О ПРОДУКТЕ
ГДЕ КУПИТЬ
ССЫЛКИ ПО ТЕМЕ

Вычисления на GPU

 

Вычисления на GPU или GPGPU заключаются в использовании GPU (графического процессора) для универсальных вычислений в области науки и проектирования.

GPU вычисления представлены совместным использованием CPU и GPU в гетерогенной модели вычислений. Стандартная часть приложения выполняется на CPU, а более требовательная к вычислениям часть обрабатывается с GPU ускорением. С точки зрения пользователя приложение работает быстрее, потому что оно использует высокую производительность GPU для повышения производительности.  

Heterogeneous Computing

После нескольких лет эволюции GPU способен обеспечить терафлопы производительности при проведении вычислений с плавающей запятой. В 2006-2007 компания NVIDIA произвела революцию в GPGPU и ускорила вычисления благодаря новой архитектуре массивно параллельных вычислений CUDA. Архитектура CUDA состоит из сотен процессорных ядер, которые работают в связке, чтобы разом справится с набором данных в приложении.

Главным успехом GPGPU в течение последних нескольких лет стала простота программирования соответствующей модели параллельных вычислений. Благодаря данной модели программирования разработчики могут изменить свои приложения и перенаправить обработку требовательных к ресурсам блоков программ на GPU. Остальная часть приложения выполняется на CPU. Для переноса функции программы на GPU требуется изменение кода функции для включения возможностей параллелизма и добавление ключевых слов «C», позволяющее перенос данных с и на GPU. Задача разработчика – задействовать десятки тысяч потоков одновременно. Аппаратное обеспечение GPU контролирует и планирует потоки.

Графические процессоры Tesla серии 20 основаны на архитектуре «Fermi», являющейся третьим поколением архитектуры CUDA. Архитектура Fermi оптимизирована для выполнения научных приложений благодаря ключевым возможностям, включающим аппаратную поддержку вычислений с плавающей запятой по стандарту IEEE с производительностью в более 500 гигафлоп, L1 и L2 КЭШ, защиту памяти ECC, управляемый пользователем локальный дата-КЭШ в виде разделяемой памяти на GPU, совместный доступ к памяти и т.п.

"GPU уже достигли той точки развития, когда многие приложения реального мира могут с легкостью выполняться на них, причем быстрее, чем на многоядреных системах. Будущие вычислительные архитектуры станут гибридными системами с графическими процессорами, состоящими из параллельных ядер и работающими в связке с многоядреными CPU".

Профессор Джэк Донгарра (Jack Dongarra)
Директор Innovative Computing Laboratory
Университет штата Теннесси

История вычислений на GPU

История графических чипов началась с графических конвейеров с фиксированной функциональностью. Постепенно их программируемость все возрастала, и в конце концов NVIDIA представила первый GPU, или графический процессор. В 1999-2000 годах специалисты в компьютерной области и научные работники в таких сферах, как получение медицинских изображений и электромагнетизм, перешли на GPU для вычислительных приложений общего назначения. Они обнаружили, что высокая производительность вычислений с плавающей точкой графических процессоров значительно ускоряла работу научных приложений. Это стало началом мощного движения, называющегося GPGPU или вычисления общего назначения на GPU.

Но возникла проблема – для GPGPU были необходимы графические языки программирования, такие как OpenGL и Cg, для программирования GPU. Разработчикам приходилось делать научные приложения похожими на графические приложения, отрисовывая треугольники и полигоны. Это ограничивало доступность огромной производительности GPU для науки.

Компания NVIDIA поняла, насколько велик потенциал данной производительности в научной области, и направила свои ресурсы на модификацию GPU, делая графический процессор полностью программируемым для использования в научных приложениях, также NVIDIA добавила поддержку высокоуровневых языков, таких как C, C++ и Fortran. Так родилась архитектура CUDA для GPU.

Архитектура параллельных вычислений CUDA и программируемая модель

Аппаратной архитектуре параллельных вычислений CUDA сопутствует среда программирования CUDA, которая обеспечивает набор абстракций, позволяющих выражать как паралеллизм данных, так и параллелизм задач. Программист сам выбирает средства разработки: языки высокого уровня, такие как C, C++, Fortran, или же API - OpenCL™ и DirectX™-11 Compute.

GPU-ComputingOvrw.png

Сегодня NVIDIA обеспечивает поддержку программирования GPU на C, C++, Fortran, OpenCL и DirectCompute. Набор инструментов для разработки, а также библиотеки и аппаратно-программные решения, доступные разработчикам, показаны на изображении выше, мы также приводим ссылки в данном тексте . Для программирования GPU используется язык C с минимальным набором ключевых слов и расширений. Вскоре будет предоставлена поддержка Fortran, OpenCL и т.д.

Программируемая модель CUDA подсказывает программистам, как разделить задачу на подзадачи, которые можно решать параллельно и независимо друг от друга. Мелкоструктурный параллелизм в подзадачах заключается в том, что каждую подзадачу можно решать сообща.

Архитектура CUDA GPU и соответствующая модель вычислений CUDA нашли широкое применение в тысячах приложений и освещены в тысячах научных публикаций. В портале CUDA Zone перечислены многие такие приложения и статьи. .

OpenCL является товарным знаком Apple и используется по лицензии Khronos Group Inc.
DirectX является зарегистрированным товарным знаком Microsoft Corporation.