Из Википедии, бесплатной энциклопедии
  (Перенаправлено из GPGPU )
Перейти к навигации Перейти к поиску

Вычисления общего назначения на графических процессорах ( GPGPU , редко GPGP ) - это использование графического процессора (GPU), который обычно обрабатывает вычисления только для компьютерной графики , для выполнения вычислений в приложениях, традиционно обрабатываемых центральным процессором (CPU). . [1] [2] [3] [4] Использование нескольких видеокарт в одном компьютере или большого количества графических чипов еще больше распараллеливает и без того параллельный характер обработки графики. [5]Кроме того, даже одна структура GPU-CPU обеспечивает преимущества, которые несколько процессоров сами по себе не предлагают из-за специализации каждого чипа. [6]

По сути, конвейер GPGPU - это своего рода параллельная обработка между одним или несколькими графическими процессорами и процессорами, которая анализирует данные, как если бы они были в виде изображения или другой графической формы. Хотя графические процессоры работают на более низких частотах, у них обычно во много раз больше ядер . Таким образом, графические процессоры могут обрабатывать гораздо больше изображений и графических данных в секунду, чем традиционные процессоры. Перенос данных в графическую форму и последующее их сканирование и анализ с помощью графического процессора может значительно ускорить работу .

Конвейеры GPGPU были разработаны в начале 21 века для обработки графики (например, для улучшения шейдеров ). Было обнаружено, что эти конвейеры хорошо соответствуют потребностям научных вычислений , и с тех пор были разработаны в этом направлении.

История [ править ]

В принципе, любая произвольная логическая функция , включая функции сложения, умножения и другие математические функции, может быть построена из функционально полного набора логических операторов. В 1987 году «Игра жизни» Конвея стала одним из первых примеров вычислений общего назначения с использованием раннего потокового процессора, называемого блиттером, для вызова специальной последовательности логических операций с битовыми векторами. [7]

Вычисления общего назначения на графических процессорах стали более практичными и популярными примерно после 2001 года, когда появились как программируемые шейдеры, так и поддержка операций с плавающей запятой на графических процессорах. Примечательно, что проблемы, связанные с матрицами и / или векторами,  особенно с двух-, трех- или четырехмерными векторами, можно было легко перевести на графический процессор, который работает с собственной скоростью и поддерживает эти типы. Эксперименты научного компьютерного сообщества с новым оборудованием начались с процедуры умножения матриц (2001 г.); одной из первых общепринятых научных программ, работающих на графических процессорах быстрее, чем на центральных процессорах, была реализация LU-факторизации (2005). [8]

Эти ранние попытки использовать графические процессоры в качестве процессоров общего назначения потребовали переформулировать вычислительные проблемы с точки зрения графических примитивов, поддерживаемых двумя основными API-интерфейсами для графических процессоров, OpenGL и DirectX . Этот громоздкий перевод был устранен с появлением языков программирования общего назначения и API, таких как Sh / RapidMind , Brook и Accelerator. [9] [10]

За ними последовала CUDA от Nvidia , которая позволила программистам игнорировать лежащие в основе графические концепции в пользу более общих концепций высокопроизводительных вычислений . [8] Новые предложения, не зависящие от производителей оборудования, включают DirectCompute от Microsoft и OpenCL от Apple / Khronos Group . [8] Это означает, что современные конвейеры GPGPU могут использовать скорость графического процессора, не требуя полного и явного преобразования данных в графическую форму.

Реализации [ править ]

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

В 2016 г. , OpenCL является доминирующим открытым общего назначения на GPU вычисления языка, и является открытым стандартом определяется Khronos Group . [ необходима цитата ] OpenCL предоставляет кроссплатформенную платформу GPGPU, которая дополнительно поддерживает параллельные вычисления данных на процессорах. OpenCL активно поддерживается на платформах Intel, AMD, Nvidia и ARM. Группа Khronos также стандартизировала и внедрила SYCL , модель программирования более высокого уровня для OpenCL как встраиваемого языка с единым исходным кодом, основанного на чистом C ++ 11.

Доминирующей проприетарной структурой является Nvidia CUDA . [11] Nvidia запустила CUDA в 2006 году, комплект для разработки программного обеспечения (SDK) и интерфейс прикладного программирования (API), которые позволяют использовать язык программирования C для кодирования алгоритмов для выполнения на графических процессорах серии GeForce 8 и более поздних.

Стандарты программирования для параллельных вычислений включают OpenCL (независимый от производителя), OpenACC и OpenHMPP . Марк Харрис , основатель GPGPU.org, ввел термин GPGPU .

Xcelerit SDK , [12] , созданный Xcelerit , [13] предназначен для ускорения большого существующих C ++ или C # код-базы на графических процессорах с минимальными усилиями. Он обеспечивает упрощенную модель программирования, автоматизирует распараллеливание, управляет устройствами и памятью и компилируется в двоичные файлы CUDA . Кроме того, для многоядерных процессоров и других ускорителей можно использовать один и тот же исходный код.

OpenVIDIA был разработан в Университете Торонто в период с 2003 по 2005 год [14] в сотрудничестве с Nvidia .

Altimesh Hybridizer [15], созданный Altimesh [16], компилирует Common Intermediate Language вдвоичные файлы CUDA . Он поддерживает универсальные и виртуальные функции. [17] Отладка и профилирование интегрированы с Visual Studio и Nsight . [18] Он доступен как расширение Visual Studio в Visual Studio Marketplace .

Microsoft представила API вычислений DirectCompute GPU, выпущенный с API DirectX 11.

Alea GPU [19], созданный QuantAlea [20], представляет собственные вычислительные возможности GPU дляязыков Microsoft .NET F # [21] и C # . Alea GPU также предоставляет упрощенную модель программирования GPU, основанную на параллельном и параллельном агрегировании GPU с использованием делегатов и автоматического управления памятью. [22]

MATLAB поддерживает ускорение GPGPU с помощью Parallel Computing Toolbox и MATLAB Distributed Computing Server , [23] и сторонних пакетов, таких как Jacket .

Обработка GPGPU также используется для имитации ньютоновской физики с помощью физических двигателей , [24] и коммерческие реализации включают в себя Havok Physics, FX и PhysX , оба из которых обычно используется для компьютерных и видеоигр .

Close to Metal , теперь называемая Stream , - это технология AMD GPGPU для графических процессоров ATI Radeon.

C ++ Accelerated Massive Parallelism ( C ++ AMP ) - это библиотека, которая ускоряет выполнение кода C ++ за счет использования оборудования для параллельного обмена данными на графических процессорах.

Мобильные компьютеры [ править ]

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

Google Android 4.2 позволяет запускать код RenderScript на графическом процессоре мобильного устройства. [25] Apple представила проприетарный Metal API для приложений iOS , способный выполнять произвольный код через вычислительные шейдеры графического процессора Apple.

Поддержка оборудования [ править ]

Компьютерные видеокарты производятся различными производителями, такими как Nvidia , AMD и ATI . Карты таких производителей различаются реализацией поддержки форматов данных, таких как целочисленные и с плавающей запятой (32-битные и 64-битные). Microsoft представила стандарт модели шейдеров , чтобы упорядочить различные функции графических карт по простому номеру версии модели шейдера (1.0, 2.0, 3.0 и т. Д.).

Целые числа [ править ]

Видеокарты до DirectX 9 поддерживали только палитру или целочисленные цветовые типы. Доступны различные форматы, каждый из которых содержит красный элемент, зеленый элемент и синий элемент. [ необходима цитата ] Иногда добавляется другое альфа-значение, которое используется для прозрачности. Общие форматы:

  • 8 бит на пиксель - иногда режим палитры, где каждое значение является индексом в таблице с реальным значением цвета, указанным в одном из других форматов. Иногда три бита для красного, три бита для зеленого и два бита для синего.
  • 16 бит на пиксель - обычно биты выделяются как пять бит для красного, шесть бит для зеленого и пять бит для синего.
  • 24 бита на пиксель - есть восемь бит для красного, зеленого и синего цветов.
  • 32 бита на пиксель - есть восемь бит для красного, зеленого, синего и альфа- канала .

Числа с плавающей запятой [ править ]

Для ранних графических процессоров с фиксированными функциями или ограниченной программируемости (то есть до графических процессоров, совместимых с DirectX 8.1 включительно) этого было достаточно, потому что это представление также использовалось в дисплеях. Важно отметить, что это представление имеет определенные ограничения. При достаточной мощности обработки графики даже программисты хотели бы использовать более качественные форматы, такие как форматы данных с плавающей запятой , для получения таких эффектов, как отображение изображений с высоким динамическим диапазоном . Многие приложения GPGPU требуют точности с плавающей запятой, которые поставляются с видеокартами, соответствующими спецификации DirectX 9.

В DirectX 9 Shader Model 2.x предлагалась поддержка двух типов точности: полной и частичной. Полная поддержка точности могла быть FP32 или FP24 (32- или 24-битная с плавающей запятой на компонент) или выше, в то время как частичная точность была FP16. От ATI Radeon R300 серия графических процессоров поддерживается FP24 точности только в трубопроводе программируемого фрагмента (хотя FP32 была поддержана в вершинных процессорах) , тогда как Nvidia «s NV30 серия поддерживается как FP16 и FP32; другие производители, такие как S3 Graphics и XGI, поддерживали смесь форматов вплоть до FP24.

Реализации с плавающей запятой на графических процессорах Nvidia в основном совместимы с IEEE ; однако это верно не для всех поставщиков. [26] Это имеет последствия для правильности, которые считаются важными для некоторых научных приложений. Хотя 64-битные значения с плавающей запятой (с плавающей запятой двойной точности) обычно доступны в процессорах, они не всегда поддерживаются графическими процессорами. Некоторые архитектуры графических процессоров жертвуют совместимостью с IEEE, в то время как другим не хватает двойной точности. Были предприняты попытки эмулировать значения с плавающей запятой двойной точности на графических процессорах; однако компромисс в скорости сводит на нет какие-либо преимущества от переноса вычислений в первую очередь на графический процессор. [27]

Векторизация [ править ]

Большинство операций на графическом процессоре работают в векторизованном виде: одна операция может выполняться одновременно с четырьмя значениями. Например, если один цвет <R1, G1, B1> должен быть модулирован другим цветом <R2, G2, B2>, графический процессор может создать результирующий цвет <R1 * R2, G1 * G2, B1 * B2> в одном операция. Эта функциональность полезна в графике, потому что почти каждый базовый тип данных является векторным (2-, 3- или 4-мерным). [ необходима цитата ] Примеры включают вершины, цвета, векторы нормалей и координаты текстуры. Многие другие приложения могут найти это хорошее применение, и из-за их более высокой производительности векторные инструкции, называемые одиночными инструкциями, множественными данными ( SIMD ), уже давно доступны для процессоров. [ необходима цитата ]

GPU против CPU [ править ]

Первоначально данные просто передавались в одностороннем порядке от центрального процессора (ЦП) к графическому процессору (ГП), а затем к устройству отображения . Однако со временем для графических процессоров стало ценно хранить сначала простые, а затем сложные структуры данных, которые затем передавались обратно в ЦП, который анализировал изображение, или набор научных данных, представленных как 2D- или 3D-формат, который видеокарта может понять. Поскольку графический процессор имеет доступ к каждой операции отрисовки, он может быстро анализировать данные в этих формах, тогда как центральный процессор должен опрашивать каждый пиксель или элемент данных гораздо медленнее, чем скорость доступа между процессором и его большим пулом оперативной памяти. (или, в худшем случае, жесткий диск) медленнее, чем графические процессоры и видеокарты, которые обычно содержат меньшие объемы более дорогой памяти, доступ к которой намного быстрее. Передача части набора данных для активного анализа в эту память графического процессора в виде текстур или других легко читаемых форм графического процессора приводит к увеличению скорости. Отличительной особенностью дизайна GPGPU является возможность двунаправленной передачи информации обратно от GPU к CPU; как правило, пропускная способность данных в обоих направлениях идеально высока, что приводит к эффекту умножения на скорость конкретного часто используемого алгоритма . Конвейеры GPGPU могут повысить эффективность особенно больших наборов данных и / или данных, содержащих 2D или 3D изображения. Он используется в сложных графических конвейерах, а также внаучные вычисления ; в большей степени в областях с большими наборами данных, таких как картирование генома , или где полезен двух- или трехмерный анализ - особенно в настоящее время анализ биомолекул , исследование белков и другая сложная органическая химия . Такие конвейеры могут также значительно повысить эффективность обработки изображений и компьютерного зрения , среди других областей; а также параллельная обработка в целом. Некоторые очень сильно оптимизированные конвейеры дали увеличение скорости в несколько сотен раз по сравнению с исходным конвейером на базе ЦП при выполнении одной часто используемой задачи.

Простым примером может быть программа графического процессора, которая собирает данные о средних значениях освещения, поскольку она отображает изображение с камеры или компьютерной графической программы обратно в основную программу на ЦП, чтобы ЦП мог затем вносить изменения в общий экран. Посмотреть. Более продвинутый пример может использовать обнаружение краев, чтобы вернуть как числовую информацию, так и обработанное изображение, представляющее контуры, программе компьютерного зрения, управляющей, скажем, мобильным роботом. Поскольку графический процессор имеет быстрый и локальный аппаратный доступ к каждому пикселю или другому элементу изображения в изображении, он может анализировать и усреднять его (для первого примера) или применять краевой фильтр Собела или другую свертку.фильтр (для второго) с гораздо большей скоростью, чем ЦП, который обычно должен обращаться к более медленным копиям рассматриваемой графики в оперативной памяти .

GPGPU - это принципиально концепция программного обеспечения, а не аппаратного обеспечения; это разновидность алгоритма , а не часть оборудования. Однако специализированное оборудование может еще больше повысить эффективность конвейеров GPGPU, которые традиционно выполняют относительно мало алгоритмов с очень большими объемами данных. Таким образом, массово распараллеленные задачи уровня гигантских данных могут быть распараллелены еще больше с помощью специализированных настроек, таких как вычисления в стойке (много похожих, специализированных машин, встроенных в стойку ), что добавляет третий уровень - многие вычислительные блоки, каждое из которых использует много процессоров для соответствия ко многим графическим процессорам. Некоторые биткойн- майнеры использовали такие установки для обработки большого количества биткойнов .

Кеши [ править ]

Исторически в процессорах использовались кэши с аппаратным управлением , но более ранние графические процессоры предоставляли только локальную память с программным управлением. Однако, поскольку графические процессоры все чаще используются для приложений общего назначения, современные графические процессоры разрабатываются с аппаратно управляемыми многоуровневыми кэшами [28], которые помогли графическим процессорам перейти к массовым вычислениям. Например, 200 серии GeForce графических процессоров GT200 архитектура не имеют кэш - память L2, то Fermi GPU имеет 768 KiB кэш последнего уровня, то Kepler GPU имеет 1,5 MiB кэш последнего уровня, [28] [29] Maxwell GPU имеет 2 МиБ кэш последнего уровня, а графический процессор Pascal имеет кеш последнего уровня 4 МБ.

Зарегистрировать файл [ редактировать ]

Графические процессоры имеют очень большие файлы регистров , что позволяет им уменьшить задержку переключения контекста. Размер файла регистров также увеличивается в зависимости от поколения графических процессоров, например, общий размер файла регистров на графических процессорах Maxwell (GM200), Pascal и Volta составляет 6 МБ, 14 МБ и 20 МБ соответственно. [30] [31] [32] Для сравнения, размер файла регистров на ЦП невелик, обычно десятки или сотни килобайт. [30]

Энергоэффективность [ править ]

Высокая производительность графических процессоров достигается за счет высокого энергопотребления, которое при полной нагрузке фактически равно мощности всей остальной системы ПК вместе взятой. [33] Максимальная потребляемая мощность графического процессора серии Pascal (Tesla P100) составляла 250 Вт. [34] В нескольких исследовательских проектах сравнивалась энергоэффективность графических процессоров с процессорами и ПЛИС. [35]

Обработка потока [ править ]

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

Следующее обсуждение, относящееся к вершинам, фрагментам и текстурам, касается в основном устаревшей модели программирования GPGPU, где графические API ( OpenGL или DirectX ) использовались для выполнения вычислений общего назначения. С появлением универсальных вычислительных API-интерфейсов CUDA (Nvidia, 2007) и OpenCL (независимый от производителя, 2008) в новых кодах GPGPU больше нет необходимости сопоставлять вычисления с графическими примитивами. Природа потоковой обработки графических процессоров остается в силе независимо от используемых API. (См., Например, [36] )

Графические процессоры могут обрабатывать только независимые вершины и фрагменты, но могут обрабатывать многие из них параллельно. Это особенно эффективно, когда программист хочет одинаково обработать множество вершин или фрагментов. В этом смысле графические процессоры - это потоковые процессоры - процессоры, которые могут работать параллельно, выполняя одно ядро ​​сразу для множества записей в потоке.

Поток просто набор записей , которые требуют аналогичных вычислений. Потоки обеспечивают параллелизм данных. Ядра - это функции, которые применяются к каждому элементу потока. В графических процессорах вершины и фрагменты являются элементами в потоках, а вершинные и фрагментные шейдеры - это ядра, которые будут запускаться на них. [ сомнительно ] Для каждого элемента мы можем только читать из ввода, выполнять с ним операции и записывать в выход. Допустимо иметь несколько входов и несколько выходов, но никогда не использовать часть памяти, которая может быть как для чтения, так и для записи. [ расплывчато ]

Арифметическая интенсивность определяется как количество операций, выполняемых на одно слово переданной памяти. Для приложений GPGPU важно иметь высокую арифметическую интенсивность, иначе задержка доступа к памяти ограничит ускорение вычислений. [37]

Идеальные приложения GPGPU имеют большие наборы данных, высокий уровень параллелизма и минимальную зависимость между элементами данных.

Концепции программирования GPU [ править ]

Вычислительные ресурсы [ править ]

На GPU доступны различные вычислительные ресурсы:

  • Программируемые процессоры - вершинные, примитивные, фрагментные и в основном вычислительные конвейеры позволяют программисту выполнять ядро ​​над потоками данных.
  • Растеризатор - создает фрагменты и интерполирует константы для каждой вершины, такие как координаты текстуры и цвет.
  • Блок текстуры - интерфейс памяти только для чтения
  • Framebuffer - интерфейс памяти только для записи

Фактически, программа может заменить текстуру только для записи для вывода вместо фреймбуфера. Это делается либо с помощью Render-to-Texture (RTT), Render-To-Backbuffer-Copy-To-Texture (RTBCTT) или более поздней потоковой передачи.

Текстуры как поток [ править ]

Наиболее распространенной формой потока в GPGPU является двухмерная сетка, поскольку она естественным образом соответствует модели рендеринга, встроенной в графические процессоры. Многие вычисления естественно отображаются в сетки: матричная алгебра, обработка изображений, физическое моделирование и так далее.

Поскольку текстуры используются как память, поиск текстуры затем используется как чтение из памяти. Из-за этого некоторые операции могут выполняться автоматически графическим процессором.

Ядра [ править ]

Вычислительные ядра можно рассматривать как тело циклов . Например, программист, работающий с сеткой на ЦП, может иметь следующий код:

// Входные и выходные сетки имеют 10000 x 10000 или 100 миллионов элементов.void  transform_10k_by_10k_grid ( float  in [ 10000 ] [ 10000 ],  float  out [ 10000 ] [ 10000 ]) {  for  ( int  x  =  0 ;  x  <  10000 ;  x ++ )  {  for  ( int  y  =  0 ;  y  <  10000 ;  y ++ )  {  // следующая строка исполняется 100 миллионов раз  вНЕ [ х] [ y ]  =  делать_сложную_работу ( в [ x ] [ y ]);  }  } }

На графическом процессоре программист указывает только тело цикла как ядро ​​и данные, которые нужно перебирать, вызывая обработку геометрии.

Управление потоком [ править ]

В последовательном коде можно управлять потоком программы с помощью операторов if-then-else и различных форм циклов. Такие структуры управления потоком только недавно были добавлены в графические процессоры. [38] Условная запись могла выполняться с использованием правильно созданной серии арифметических / битовых операций, но циклы и условные переходы были невозможны.

Последние графические процессоры допускают ветвление, но обычно со снижением производительности. Во внутренних циклах, как правило, следует избегать ветвления, будь то код ЦП или ГП, и для достижения результатов можно использовать различные методы, такие как статическое разрешение ветвления, предварительное вычисление, прогнозирование, разделение цикла [39] и Z-cull [40]. ветвление при отсутствии аппаратной поддержки.

Методы GPU [ править ]

Карта [ править ]

Операция map просто применяет данную функцию (ядро) к каждому элементу в потоке. Простой пример - умножение каждого значения в потоке на константу (увеличение яркости изображения). Операцию карты просто реализовать на графическом процессоре. Программист генерирует фрагмент для каждого пикселя на экране и применяет программу фрагмента к каждому пикселю. Поток результатов того же размера сохраняется в выходном буфере.

Уменьшить [ править ]

Некоторые вычисления требуют вычисления меньшего потока (возможно, потока только из одного элемента) из большего потока. Это называется уменьшением потока. Как правило, сокращение может выполняться в несколько этапов. Результаты предыдущего шага используются в качестве входных данных для текущего шага, а диапазон, в котором применяется операция, сокращается до тех пор, пока не останется только один элемент потока.

Фильтрация потоков [ править ]

Потоковая фильтрация - это, по сути, неравномерное сокращение. Фильтрация включает удаление элементов из потока на основе некоторых критериев.

Сканировать [ редактировать ]

Операция сканирования, также называемая суммой параллельных префиксов , принимает вектор (поток) элементов данных и (произвольную) ассоциативную двоичную функцию «+» с элементом идентичности «i» . Если входом является [a0, a1, a2, a3, ...], исключительное сканирование дает результат [i, a0, a0 + a1, a0 + a1 + a2, ...], в то время как инклюзивное сканирование дает output [a0, a0 + a1, a0 + a1 + a2, a0 + a1 + a2 + a3, ...] и не требует наличия тождества . Хотя на первый взгляд операция может показаться изначально последовательной, эффективные алгоритмы параллельного сканирования возможны и были реализованы на графических процессорах. Операция сканирования используется, например, в быстрой сортировке и умножении разреженной матрицы на вектор. [36][41] [42] [43]

Scatter [ править ]

Операция разброса наиболее естественно определяется на вершинном процессоре. Вершинный процессор может регулировать положение вершины , что позволяет программисту контролировать, где информация размещается в сетке. Также возможны другие расширения, такие как управление размером области, на которую влияет вершина.

Обработчик фрагментов не может выполнять прямую операцию разброса, потому что положение каждого фрагмента в сетке фиксируется во время создания фрагмента и не может быть изменено программистом. Однако иногда операция логического разброса может быть преобразована или реализована с другим шагом сбора данных. Реализация с разбросом сначала будет выдавать как выходное значение, так и выходной адрес. Сразу после операции сбора используются сравнения адресов, чтобы увидеть, отображается ли выходное значение в текущий выходной слот.

В выделенных вычислительных ядрах разброс может выполняться с помощью индексированных записей.

Собрать [ править ]

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

Сортировать [ редактировать ]

Операция сортировки преобразует неупорядоченный набор элементов в упорядоченный набор элементов. Наиболее распространенная реализация на графических процессорах - это использование поразрядной сортировки для целочисленных данных и данных с плавающей запятой, а также крупномасштабной сортировки слиянием и сетей мелкой сортировки для общих сопоставимых данных. [44] [45]

Искать [ редактировать ]

Операция поиска позволяет программисту найти данный элемент в потоке или, возможно, найти соседей указанного элемента. Графический процессор не используется для ускорения поиска отдельного элемента, а вместо этого используется для параллельного выполнения нескольких поисков. [ необходима цитата ] В основном используемый метод поиска - это бинарный поиск по отсортированным элементам.

Структуры данных [ править ]

На графическом процессоре могут быть представлены самые разные структуры данных:

  • Плотные массивы
  • Разреженные матрицы ( разреженный массив ) - статические или динамические
  • Адаптивные конструкции ( союзного типа )

Приложения [ править ]

Ниже приведены некоторые из областей, в которых графические процессоры использовались для вычислений общего назначения:

  • Автоматическое распараллеливание [46] [47] [48]
  • Физическое моделирование и физические движки [24] (обычно основанные на ньютоновских физических моделях)
    • Игра жизни Конвея , моделирование ткани , несжимаемый поток жидкости путем решения уравнений Эйлера (гидродинамика) [49] или уравнений Навье – Стокса [50]
  • Статистическая физика
    • Модель Изинга [51]
  • Калибровочная теория на решетке [ необходима ссылка ]
  • Сегментация  - 2D и 3D [52]
  • Методы установки уровня
  • КТ реконструкция [53]
  • Быстрое преобразование Фурье [54]
  • Обучение на графическом процессоре - машинное обучение и вычисления для интеллектуального анализа данных , например, с помощью программного обеспечения BIDMach.
  • алгоритм k-ближайшего соседа [55]
  • Нечеткая логика [56]
  • Отображение тонов
  • Обработка аудиосигнала [57]
    • Обработка аудио и звуковых эффектов для использования графического процессора для цифровой обработки сигналов (DSP)
    • Обработка аналогового сигнала
    • Обработка речи
  • Цифровая обработка изображений
  • Обработка видео [58]
    • Аппаратное ускорение декодирования и постобработки видео
      • Компенсация движения (mo comp)
      • Обратное дискретное косинусное преобразование (iDCT)
      • Декодирование переменной длины (VLD), кодирование Хаффмана
      • Обратное квантование ( IQ (не путать с коэффициентом интеллекта))
      • Внутренняя разблокировка
      • Обработка битового потока ( CAVLC / CABAC ) с использованием специального оборудования для этой задачи, поскольку это последовательная задача, не подходящая для обычных вычислений GPGPU.
      • Деинтерлейсинг
        • Пространственно-временной деинтерлейсинг
      • Подавление шума
      • Улучшение края
      • Цветокоррекция
    • Аппаратное ускорение кодирования и предварительной обработки видео
  • Глобальное освещение  - трассировка лучей , фотонное картирование , излучение, среди прочего, подповерхностное рассеяние
  • Геометрические вычисления - конструктивная сплошная геометрия , поля расстояний, обнаружение столкновений , вычисление прозрачности, генерация теней
  • Научные вычисления
    • Моделирование распространения света методом Монте-Карло [59]
    • Прогноз погоды
    • Климатические исследования
    • Молекулярное моделирование на GPU [60]
    • Квантовая механическая физика
    • Астрофизика [61]
  • Биоинформатика [62] [63]
  • Вычислительные финансы
  • Медицинская визуализация
  • Система поддержки принятия клинических решений (CDSS) [64]
  • Компьютерное зрение [65]
  • Цифровая обработка сигналов / обработка сигналов
  • Техника управления [ необходима цитата ]
  • Исследование операций [66] [67] [68]
    • Реализации: алгоритм GPU Tabu Search, решающий проблему планирования проектов с ограниченными ресурсами, находится в свободном доступе на GitHub; [69] алгоритм GPU, решающий проблему смены медсестры, находится в свободном доступе на GitHub. [70]
  • Нейронные сети
  • Операции с базой данных [71]
  • Вычислительная гидродинамика, особенно с использованием решеточных методов Больцмана
  • Криптография [72] и криптоанализ
  • Моделирование производительности: вычислительно-ресурсоемкие задачи на GPU [60]
    • Реализации: MD6 , Advanced Encryption Standard (AES), [73] [74] Data Encryption Standard (DES), RSA , [75] криптография на основе эллиптических кривых (ECC).
    • Взлом пароля [76] [77]
    • Обработка криптовалютных транзакций («майнинг») ( майнинг биткойнов )
  • Автоматизация проектирования электроники [78] [79]
  • Антивирусное программное обеспечение [80] [81]
  • Обнаружение вторжений [82] [83]
  • Увеличение вычислительной мощности для проектов распределенных вычислений, таких как SETI @ home , Einstein @ home

Биоинформатика [ править ]

Использование GPGPU в биоинформатике: [60] [84]

Молекулярная динамика [ править ]

† Ожидаемое ускорение во многом зависит от конфигурации системы. Производительность графического процессора по сравнению с многоядерным процессором x86 . Производительность графического процессора оценивается на основе поддерживаемых функций графического процессора и может быть сравнением производительности ядра с ядром. Подробные сведения об используемой конфигурации см. На веб-сайте приложения. Ускорение согласно внутреннему тестированию Nvidia или документации независимых поставщиков программного обеспечения.

‡ Q = Quadro GPU , T = Tesla GPU . Nvidia рекомендовала графические процессоры для этого приложения. Обратитесь к разработчику или независимому поставщику программного обеспечения для получения информации о сертификации.

См. Также [ править ]

  • Блок обработки графики
  • OpenCL
  • OpenMP
  • OpenACC
  • OpenHMPP
  • Fastra II
  • Потоковая обработка
  • Марк Харрис (программист)
  • Физический движок
    • Расширенная библиотека моделирования
    • Блок обработки физики (ППУ)
    • Havok (программное обеспечение) Физика, FX
    • PhysX
  • Близко к металлу
  • C ++ AMP
  • DirectCompute
  • RenderScript
  • Блок обработки звука
  • Ларраби (микроархитектура)
  • Вычислить ядро
  • AI-ускоритель
  • Процессор глубокого обучения (DLP)

Ссылки [ править ]

  1. Fung и др., «Опосредованная реальность с использованием оборудования компьютерной графики для компьютерного зрения». Архивировано 2 апреля 2012 г. в Wayback Machine , Труды Международного симпозиума по носимым вычислениям 2002 г. (ISWC2002), Сиэтл, Вашингтон, США, 7–10 октября 2002, с. 83–89.
  2. ^ Безликая проективная оценка движения на основе видео EyeTap с помощью гироскопического отслеживания реальности, опосредованной носимым компьютером , ACM Personal and Ubiquitous Computing, опубликованная Springer Verlag, Vol.7, Iss. 3, 2003.
  3. ^ «Обработка сигналов компьютерного зрения на графических процессорах», Труды Международной конференции IEEE по акустике, речи и обработке сигналов (ICASSP 2004). Архивировано 19 августа 2011 г. в Wayback Machine : Монреаль, Квебек, Канада, 17–21 мая 2004 г. , стр. V-93 - V-96
  4. Перейти ↑ Chitty, DM (2007, июль). Параллельный подход к генетическому программированию с использованием программируемого графического оборудования. Архивировано 8 августа 2017 года на Wayback Machine . В материалах 9-й ежегодной конференции по генетическим и эволюционным вычислениям (стр. 1566-1573). ACM.
  5. ^ «Использование нескольких графических карт в качестве параллельного компьютера общего назначения: приложения для компьютерного зрения», Труды 17-й Международной конференции по распознаванию образов (ICPR2004). Архивировано 18 июля 2011 г. в Wayback Machine , Кембридж, Соединенное Королевство, 23–26 августа 2004 г. , том 1, страницы 805–808.
  6. ^ Mittal, S .; Веттер, Дж. (2015). "Обзор методов гетерогенных вычислений CPU-GPU" . ACM Computing Surveys . 47 (4): 1–35. DOI : 10.1145 / 2788396 . ОСТИ  1265534 . S2CID  9436861 .
  7. ^ Халл, Джеральд (декабрь 1987). «ЖИЗНЬ» . Удивительные вычисления . 2 (12): 81–84.
  8. ^ a b c Du, Пэн; Вебер, Рик; Лущек, Петр; Томов, Станимире; Петерсон, Грегори; Донгарра, Джек (2012). «От CUDA к OpenCL: к портативному решению для многоплатформенного программирования на GPU». Параллельные вычисления . 38 (8): 391–407. CiteSeerX 10.1.1.193.7712 . DOI : 10.1016 / j.parco.2011.10.002 . 
  9. ^ Тардити, Дэвид; Пури, Сидд; Оглсби, Хосе (2006). «Ускоритель: использование параллелизма данных для программирования графических процессоров общего назначения» (PDF) . Новости компьютерной архитектуры ACM SIGARCH . 34 (5). DOI : 10.1145 / 1168919.1168898 .
  10. ^ Че, Шуай; Бойер, Майкл; Мэн, Цзяюань; Tarjan, D .; Шеффер, Джереми У .; Скадрон, Кевин (2008). «Исследование производительности приложений общего назначения на графических процессорах с использованием CUDA». J. Параллельные и распределенные вычисления . 68 (10): 1370–1380. CiteSeerX 10.1.1.143.4849 . DOI : 10.1016 / j.jpdc.2008.05.014 . 
  11. ^ «OpenCL становится все более популярным на CUDA» . 28 февраля 2012 года. Архивировано 23 апреля 2012 года . Проверено 10 апреля 2012 года . «В качестве двух основных программных сред для вычислений на GPU, OpenCL и CUDA, последние несколько лет борются за то, чтобы разделить умы в сообществе разработчиков».
  12. ^ "Xcelerit SDK" . XceleritSDK . 26 октября 2015. Архивировано 8 марта 2018 года.
  13. ^ "Домашняя страница" . Xcelerit . Архивировано 8 марта 2018 года.
  14. ^ Джеймс Fung, Стив Манн, Крис Аймоне, " OpenVIDIA: Parallel GPU Computer Vision ", Труды ACM Multimedia 2005, Сингапур, 6-11 ноября 2005, страницы 849-852
  15. ^ «Гибридизатор» . Гибридизатор . Архивировано 17 октября 2017 года.
  16. ^ "Домашняя страница" . Альтимеш . Архивировано 17 октября 2017 года.
  17. ^ «Гибридизирующие дженерики и наследование» . 27 июля 2017. Архивировано 17 октября 2017 года.
  18. ^ «Отладка и профилирование с помощью Hybridizer» . 5 июня 2017. Архивировано 17 октября 2017 года.
  19. ^ «Введение» . Алеа ГПУ . Архивировано 25 декабря 2016 года . Проверено 15 декабря 2016 .
  20. ^ "Домашняя страница" . Quant Alea . Архивировано 12 декабря 2016 года . Проверено 15 декабря 2016 .
  21. ^ «Использовать F # для программирования на GPU» . Фонд программного обеспечения F #. Архивировано из оригинального 18 декабря 2016 года . Проверено 15 декабря 2016 .
  22. ^ «Особенности Alea GPU» . Quant Alea . Архивировано 21 декабря 2016 года . Проверено 15 декабря 2016 .
  23. ^ «MATLAB добавляет поддержку GPGPU» . 20 сентября 2010 года Архивировано из оригинала 27 сентября 2010 года.
  24. ^ a b Джозелли, Марк и др. « Новый физический движок с автоматическим распределением процессов между CPU-GPU ». Материалы симпозиума 2008 ACM SIGGRAPH по видеоиграм. ACM, 2008.
  25. ^ «Android 4.2 API - разработчики Android» . developer.android.com . Архивировано 26 августа 2013 года.
  26. ^ Отображение вычислительных концепций на GPU : Марк Харрис. Отображение вычислительных концепций на графические процессоры. В курсах ACM SIGGRAPH 2005 (Лос-Анджелес, Калифорния, 31 июля - 4 августа 2005 г.). J. Fujii, Ed. СИГГРАФ '05. ACM Press, Нью-Йорк, штат Нью-Йорк, 50.
  27. ^ Двойная точность на графических процессорах (Proceedings of ASIM 2005). Архивировано 21 августа 2014 года на Wayback Machine : Доминик Годдеке, Роберт Стрзодка и Стефан Турек. Ускорение моделирования с двойной точностью (МКЭ) с помощью (графических процессоров). Труды ASIM 2005 - 18-й симпозиум по технике моделирования, 2005.
  28. ^ a b « Обзор методов управления и использования кешей в графических процессорах, заархивированный 16 февраля 2015 г. на Wayback Machine », С. Миттал, JCSC, 23 (8), 2014.
  29. ^ "Nvidia-Kepler-GK110-Архитектура-Технический документ" (PDF) . Архивировано 21 февраля 2015 года (PDF) .
  30. ^ Б « Обследование техники для архитектуры и Управления GPU регистрового файла архива 26 марта 2016 в Wayback Machine », IEEE TPDS, 2016
  31. ^ " Внутри Паскаль: от Nvidia Новейшего Computing Platform архивации 7 мая 2017 в Wayback Machine "
  32. ^ « Внутри Volta: самый продвинутый в мире графический процессор для центров обработки данных, заархивированный 1 января 2020 года на Wayback Machine »
  33. ^ " https://www.tomshardware.com/reviews/geforce-radeon-power,2122.html Сколько энергии нужно вашей видеокарте?"
  34. ^ " https://images.nvidia.com/content/tesla/pdf/nvidia-tesla-p100-PCIe-datasheet.pdf Ускоритель GPU Nvidia Tesla P100, заархивированный 24 июля 2018 г. на Wayback Machine "
  35. ^ « Обзор методов анализа и повышения энергетической эффективности GPU архивации 4 сентября 2015 в Wayback Machine », Mittalдр., ACM Computing Surveys, 2014.
  36. ^ a b "D. Göddeke, 2010. Быстрые и точные многосеточные решатели с конечными элементами для моделирования PDE на кластерах GPU. Докторская диссертация, Технический университет Дортмунда" . Архивировано 16 декабря 2014 года.
  37. ^ Асанович, К .; Бодик, Р .; Demmel, J .; Кивени, Т .; Keutzer, K .; Kubiatowicz, J .; Morgan, N .; Patterson, D .; Sen, K .; Wawrzynek, J .; Wessel, D .; Йелик, К. (2009). «Взгляд на ландшафт параллельных вычислений» . Commun. ACM . 52 (10): 56–67. DOI : 10.1145 / 1562764.1562783 .
  38. ^ «Самоцветы GPU - Глава 34, Идиомы управления потоком GPU» .
  39. ^ Будущие фишки . «Учебник по удалению веток», 2011 г.
  40. ^ GPGPU обзорная статья архивации 4 января 2007 в Wayback Machine : Джон Д. Оуэнс, Дэвид Luebke, Нага Govindaraju, Марк Харрис, Йенс Крюгер, Аарон Е. Lefohn и Тим Перселла. «Обзор универсальных вычислений на графическом оборудовании». Форум компьютерной графики, том 26, номер 1, 2007 г., стр. 80–113.
  41. ^ "С. Сенгупта, М. Харрис, Я. Чжан, Дж. Д. Оуэнс, 2007. Сканирующие примитивы для вычислений на GPU. В T. Aila и M. Segal (ред.): Graphics Hardware (2007)" . Архивировано из оригинала на 5 июня 2015 года . Проверено 16 декабря 2014 .
  42. ^ Blelloch, GE (1989). «Сканирование как примитивные параллельные операции» (PDF) . Транзакции IEEE на компьютерах . 38 (11): 1526–1538. DOI : 10.1109 / 12.42122 . Архивировано из оригинального (PDF) 23 сентября 2015 года . Проверено 16 декабря 2014 .
  43. ^ «М. Харрис, С. Сенгупта, Дж. Д. Оуэнс. Сумма параллельных префиксов (сканирование) с помощью CUDA. В Nvidia: GPU Gems 3, Глава 39» .[ постоянная мертвая ссылка ]
  44. ^ Меррилл, Дуэйн. Разработка алгоритмов, ориентированных на размещение, с применением для вычислений на GPU . Кандидат наук. докторскую диссертацию на факультете компьютерных наук Университета Вирджинии. Декабрь 2011 г.
  45. ^ Шон Бакстер. Современные графические процессоры. Архивировано 7 октября 2016 года на Wayback Machine , 2013 год.
  46. ^ Leung, Алан, Ондржей Lhoták и Гулам Lashari. « Автоматическое распараллеливание для графических процессоров ». Труды 7-й Международной конференции по принципам и практике программирования на Java. ACM, 2009.
  47. ^ Хенриксен, Troels, Мартин Elsman и Космин Е. Oancea. « Нарезка по размеру: гибридный подход к выводу размера в футарке ». Материалы 3-го семинара ACM SIGPLAN по функциональным высокопроизводительным вычислениям. ACM, 2014.
  48. ^ Баскаран, Мутху Маникандан и др. « Фреймворк компилятора для оптимизации гнезд аффинных циклов для GPGPU ». Материалы 22-й ежегодной международной конференции по суперкомпьютерам. ACM, 2008.
  49. ^ «К. Крейн, И. Лламас, С. Тарик, 2008. Моделирование и рендеринг трехмерных жидкостей в реальном времени. В Nvidia: GPU Gems 3, Глава 30» .[ постоянная мертвая ссылка ]
  50. ^ «М. Харрис, 2004. Моделирование быстрой гидродинамики на GPU. В Nvidia: GPU Gems, Глава 38» . Архивировано 7 октября 2017 года.
  51. ^ Блок, Benjamin, Питер Virnau и Tobias Preis. « Многопроцессорное моделирование методом Монте-Карло 2D-модели Изинга с ускорением на нескольких графических процессорах ». Computer Physics Communications 181.9 (2010): 1549-1556.
  52. ^ ВС, Shanhui, Кристиан Бауэр, и Рейнхард Beichel. « Автоматизированная трехмерная сегментация легких с раком легкого в данных компьютерной томографии с использованием нового надежного подхода к модели активной формы ». Операции IEEE по медицинской визуализации 31.2 (2011): 449-460.
  53. ^ Хименес, Эдвард С. и Лорел Дж. Орр. « Переосмысление союза реконструкции компьютерной томографии и вычислений GPGPU ». Системы проникающего излучения и приложения XIV. Vol. 8854. Международное общество оптики и фотоники, 2013.
  54. ^ Соренсен, Томас Сангильд и др. « Ускорение быстрого преобразования Фурье в обычном графическом оборудовании ». IEEE Transactions on Medical Imaging 27.4 (2008): 538-547.
  55. ^ Fast K -ближайшего поиска соседей с помощью GPU . В материалах семинара CVPR по компьютерному зрению на GPU, Анкоридж, Аляска, США, июнь 2008 г. В. Гарсия, Э. Дебрев и М. Барло.
  56. ^ М. Кокоччони, Р. Грассо, М. Риксен, Быстрое прототипирование высокопроизводительных приложений для нечетких вычислений с использованием высокоуровневого программирования на GPU для поддержки морских операций , в материалах симпозиума IEEE 2011 г. по вычислительному интеллекту для приложений безопасности и обороны (CISDA), Париж, 11–15 апреля 2011 года
  57. Whalen, Шон. « Блок обработки звука и графики ». Отчет автора, Калифорнийский университет в Дэвисе 47 (2005 г.): 51.
  58. Уилсон, Рон (3 сентября 2009 г.). «DSP приносит вам лунную прогулку в высоком разрешении» . EDN . Архивировано из оригинального 22 января 2013 года . Проверено 3 сентября 2009 года . Сообщается, что Lowry использует графические процессоры Nvidia Tesla (графические процессоры), запрограммированные в CUDA (Compute Unified Device Architecture) компании для реализации алгоритмов. Nvidia утверждает, что графические процессоры примерно на два порядка быстрее вычислений на центральном процессоре, что сокращает время обработки до менее одной минуты на кадр.
  59. ^ Alerstam, E .; Свенссон, Т .; Андерссон-Энгельс, С. (2008). «Параллельные вычисления с графическими процессорами для высокоскоростного моделирования миграции фотонов методом Монте-Карло» (PDF) . Журнал биомедицинской оптики . 13 (6): 060504. Bibcode : 2008JBO .... 13f0504A . DOI : 10.1117 / 1.3041496 . PMID 19123645 . Архивировано 9 августа 2011 года (PDF) .  
  60. ^ a b c Хасан, Хондкер С .; Чаттерджи, Амлан; Радхакришнан, Шридхар; Антонио, Джон К. (2014). «Модель прогнозирования производительности и анализ для ресурсоемких задач на графических процессорах» (PDF) . Передовая инженерия информационных систем (PDF) . Конспект лекций по информатике. 7908 . С. 612–617. DOI : 10.1007 / 978-3-662-44917-2_65 . ISBN  978-3-642-38708-1.
  61. ^ «Вычислительная физика с графическими процессорами: Обсерватория Лунда» . www.astro.lu.se . Архивировано 12 июля 2010 года.
  62. ^ Schatz, Майкл C; Трапнелл, Коул; Делчер, Артур Л; Варшней, Амитабх (2007). «Выравнивание последовательностей с высокой пропускной способностью с использованием графических процессоров» . BMC Bioinformatics . 8 : 474. DOI : 10,1186 / 1471-2105-8-474 . PMC 2222658 . PMID 18070356 .  
  63. ^ Светлин А. Манавский; Джорджио Валле (2008). «Совместимые с CUDA видеокарты как эффективные аппаратные ускорители для выравнивания последовательностей Смита-Уотермана» . BMC Bioinformatics . 9 (Приложение 2): S10. DOI : 10.1186 / 1471-2105-9-s2-S10 . PMC 2323659 . PMID 18387198 .  
  64. ^ Олейник, М; Стювер, М; Горлач, S; Хайдер, Д. (15 ноября 2014 г.). «gCUP: быстрое предсказание использования корецепторов ВИЧ-1 на основе графического процессора для секвенирования следующего поколения» . Биоинформатика . 30 (22): 3272–3. DOI : 10.1093 / биоинформатики / btu535 . PMID 25123901 . 
  65. ^ Ван, Гохуэй и др. « Ускорение алгоритмов компьютерного зрения с использованием фреймворка OpenCL на мобильном графическом процессоре - тематическое исследование ». Международная конференция IEEE по акустике, обработке речи и сигналов, 2013 г. IEEE, 2013.
  66. ^ GPU вычисления в ИЛИ архивации 13 января 2015 года в Вайбак Machine Винсент Бойер, Didier ЭльБаз. «Последние достижения в области вычислений на GPU в исследованиях операций». Семинары симпозиума параллельной и распределенной обработки и докторский форум (IPDPSW), 27-я Международная конференция IEEE 2013 г., страницы: 1778–1787
  67. ^ Буката, Libor; Суха, Пршемысл; Ханзалек, Зденек (2014). «Решение проблемы планирования проектов с ограниченными ресурсами с помощью параллельного поиска табу, разработанного для платформы CUDA». Журнал параллельных и распределенных вычислений . 77 : 58–68. arXiv : 1711.04556 . DOI : 10.1016 / j.jpdc.2014.11.005 . S2CID 206391585 . 
  68. ^ Bäumelt, Zdeněk; Дворжак, Ян; Šůcha, Přemysl; Hanzálek, Zdeněk (2016). «Новый подход к переналадке медсестер на основе параллельного алгоритма». Европейский журнал операционных исследований . 251 (2): 624–639. DOI : 10.1016 / j.ejor.2015.11.022 .
  69. ^ CTU-МСГ архивации 9 января 2016 в Wayback Machine Чешский технический университет в Праге, промышленной информатики Group (2015).
  70. ^ NRRPGpu архивации 9 января 2016 в Wayback Machine Чешский технический университет в Праге, промышленной информатики Group (2015).
  71. ^ Наджу Манчерил. «Сортировка на базе графического процессора в PostgreSQL» (PDF) . Школа компьютерных наук - Университет Карнеги-Меллона . Архивировано 2 августа 2011 года (PDF) .
  72. ^ Манавски, Светлин А. « CUDA-совместимый графический процессор в качестве эффективного аппаратного ускорителя для криптографии AES ». 2007 Международная конференция IEEE по обработке сигналов и связи. IEEE, 2007.
  73. ^ Харрисон, Оуэн; Уолдрон, Джон (2007). «Внедрение и анализ шифрования AES на графических процессорах». Криптографическое оборудование и встроенные системы - CHES 2007 . Конспект лекций по информатике. 4727 . п. 209. CiteSeerX 10.1.1.149.7643 . DOI : 10.1007 / 978-3-540-74735-2_15 . ISBN  978-3-540-74734-5.
  74. ^ AES и режимы работы на графических процессорах, совместимых с SM4.0. Архивировано 21 августа 2010 года в Wayback Machine. Оуэн Харрисон, Джон Уолдрон, Практическая криптография с симметричным ключом на современном графическом оборудовании. В материалах USENIX Security 2008.
  75. ^ Харрисон, Оуэн; Уолдрон, Джон (2009). «Эффективное ускорение асимметричной криптографии на графическом оборудовании». Прогресс в криптологии - AFRICACRYPT 2009 . Конспект лекций по информатике. 5580 . п. 350. CiteSeerX 10.1.1.155.5448 . DOI : 10.1007 / 978-3-642-02384-2_22 . ISBN  978-3-642-02383-5.
  76. ^ «Проблемы с терафлопами: мощность графических процессоров может угрожать мировой системе защиты паролей» . Технологический научно-исследовательский институт Джорджии . Архивировано из оригинала 30 декабря 2010 года . Проверено 7 ноября 2010 года .
  77. ^ «Хотите отпугнуть хакеров? Сделайте свой пароль длиннее» . NBC News . 19 августа 2010 . Проверено 7 ноября 2010 года .
  78. Лернер, Ларри (9 апреля 2009 г.). «Точка зрения: массовые графические процессоры, а не процессоры для моделирования EDA» . EE Times . Проверено 3 мая 2009 года .
  79. ^ "W2500 ADS Transient Convolution GT" . ускоряет моделирование целостности сигнала на рабочих станциях с графическими процессорами (ГП) на базе Nvidia Compute Unified Device Architecture (CUDA)
  80. ^ GrAVity: массивно-параллельный антивирусный движок. Архивировано 27 июля 2010 г. на Wayback Machine . Гиоргос Василиадис и Сотирис Иоаннидис, GrAVity: параллельный антивирусный движок. В материалах RAID 2010.
  81. ^ «Лаборатория Касперского использует технологии Nvidia для усиления защиты» . Лаборатория Касперского . 14 декабря 2009 г. Архивировано 19 июня 2010 г. Во время внутреннего тестирования Tesla S1070 продемонстрировала 360-кратное увеличение скорости алгоритма определения подобия по сравнению с популярным центральным процессором Intel Core 2 Duo, работающим на тактовой частоте. скорость 2,6 ГГц.
  82. ^ Gnort: высокопроизводительное обнаружение сетевых вторжений с использованием графических процессоров. Архивировано 9 апреля 2011 г. на Wayback Machine . Гиоргос Василиадис и др., Gnort: высокопроизводительное обнаружение сетевых вторжений с использованием графических процессоров. В материалах RAID 2008.
  83. ^ Сопоставление регулярных выражений на графическом оборудовании для обнаружения вторжений. Архивировано 27 июля 2010 г. на Wayback Machine . Гиоргос Василиадис и др., Сопоставление регулярных выражений на графическом оборудовании для обнаружения вторжений. В материалах RAID 2009.
  84. ^ «Архивная копия» (PDF) . Архивировано (PDF) из оригинала 25 марта 2013 года . Проверено 12 сентября 2013 года . CS1 maint: заархивированная копия как заголовок ( ссылка )
  85. ^ Лэнгдон, Уильям Б. Лам, Брайан Йи Хонг; Петке, Юстина; Харман, Марк (2015). «Улучшение программного обеспечения для анализа ДНК CUDA с помощью генетического программирования». Материалы конференции 2015 г. по генетическим и эволюционным вычислениям - GECCO '15 . С. 1063–1070. DOI : 10.1145 / 2739480.2754652 . ISBN 9781450334723. S2CID  8992769 .

Внешние ссылки [ править ]

  • openhmpp.org - новый открытый стандарт для многих ядер
  • OCLTools Компилятор и компоновщик OpenCL с открытым исходным кодом
  • GPGPU.org - Универсальные вычисления с использованием графического оборудования
  • GPGPU Wiki
  • SIGGRAPH 2005 Примечания к курсу GPGPU
  • Примечания к курсу IEEE VIS 2005 GPGPU
  • Зона разработчиков Nvidia
  • Инструменты AMD GPU
  • CPU против GPGPU
  • Что такое вычисления на GPU?
  • Статья в техническом отчете: «ATI делает ставку на физику, основание GPGPU» , Скотт Уоссон.
  • Прейс, Тобиас; Вирнау, Питер; Пол, Вольфганг; Шнайдер, Йоханнес Дж (2009). «Ускоренное графическим процессором Монте-Карло моделирование 2D и 3D модели Изинга». Журнал вычислительной физики . 228 (12): 4468. Bibcode : 2009JCoPh.228.4468P . DOI : 10.1016 / j.jcp.2009.03.018 .
  • GPGPU Computing @ Duke Statistical Science
  • Программирование GPGPU на F # с использованием системы Microsoft Research Accelerator