stringtranslate.com

CUDA

В вычислительной технике CUDA ( первоначально Compute Unified Device Architecture ) — это запатентованная [1] платформа параллельных вычислений и интерфейс прикладного программирования (API), который позволяет программному обеспечению использовать определенные типы графических процессоров (GPU) для ускоренной обработки общего назначения, подход, называемый вычислениями общего назначения на GPU ( GPGPU ). API CUDA и его среда выполнения: API CUDA — это расширение языка программирования C , которое добавляет возможность указывать параллелизм на уровне потоков в C, а также указывать операции, специфичные для устройства GPU (например, перемещение данных между CPU и GPU). [2] CUDA — это программный уровень, который предоставляет прямой доступ к набору виртуальных инструкций GPU и параллельным вычислительным элементам для выполнения вычислительных ядер . [3] Помимо драйверов и ядер среды выполнения, платформа CUDA включает в себя компиляторы, библиотеки и инструменты разработчика, которые помогают программистам ускорять свои приложения.

CUDA предназначена для работы с такими языками программирования, как C , C++ , Fortran и Python . Эта доступность упрощает специалистам по параллельному программированию использование ресурсов GPU, в отличие от предыдущих API, таких как Direct3D и OpenGL , которые требовали продвинутых навыков в графическом программировании. [4] Графические процессоры на базе CUDA также поддерживают программные фреймворки, такие как OpenMP , OpenACC и OpenCL . [5] [3]

CUDA была создана компанией Nvidia в 2006 году. [6] Когда она была впервые представлена, ее название было аббревиатурой от Compute Unified Device Architecture, [7] но позже Nvidia отказалась от общепринятого использования этой аббревиатуры и теперь редко ее расширяет. [8]

Фон

Графический процессор (GPU), как специализированный компьютерный процессор, удовлетворяет требованиям задач с интенсивными вычислениями в реальном времени для 3D-графики высокого разрешения . К 2012 году GPU превратились в высокопараллельные многоядерные системы, позволяющие эффективно манипулировать большими блоками данных. Такая конструкция более эффективна, чем центральные процессоры общего назначения (CPU) для алгоритмов в ситуациях, когда обработка больших блоков данных выполняется параллельно, например:

Ян Бак, работая в Стэнфорде в 2000 году, создал 8K-игровую установку с использованием 32 видеокарт GeForce, затем получил грант DARPA на выполнение параллельного программирования общего назначения на графических процессорах . Затем он присоединился к Nvidia, где с 2004 года курировал разработку CUDA. Продвигая CUDA, Дженсен Хуанг стремился сделать графические процессоры Nvidia общим оборудованием для научных вычислений. CUDA была выпущена в 2006 году. Около 2015 года фокус CUDA переключился на нейронные сети. [9]

Онтология

В следующей таблице представлено неточное описание онтологии фреймворка CUDA.

Способности программирования

Пример потока обработки CUDA
  1. Копирование данных из основной памяти в память графического процессора
  2. CPU инициирует вычислительное ядро ​​GPU
  3. Ядра CUDA графического процессора выполняют ядро ​​параллельно
  4. Копировать полученные данные из памяти графического процессора в основную память.

Платформа CUDA доступна разработчикам программного обеспечения через библиотеки с ускорением CUDA, директивы компилятора , такие как OpenACC , и расширения стандартных языков программирования, включая C , C++ , Fortran и Python . Программисты C/C++ могут использовать «CUDA C/C++», скомпилированный в PTX с помощью nvcc , компилятора C/C++ на основе LLVM от Nvidia , или непосредственно с помощью clang. [10] Программисты Fortran могут использовать «CUDA Fortran», скомпилированный с помощью компилятора PGI CUDA Fortran от The Portland Group . [ требуется обновление ] Программисты Python могут использовать библиотеку cuNumeric для ускорения приложений на графических процессорах Nvidia.

Помимо библиотек, директив компилятора, CUDA C/C++ и CUDA Fortran, платформа CUDA поддерживает другие вычислительные интерфейсы, включая OpenCL от Khronos Group , [11] DirectCompute от Microsoft , OpenGL Compute Shader и C++ AMP . [12] Также доступны сторонние оболочки для Python , Perl , Fortran, Java , Ruby , Lua , Common Lisp , Haskell , R , MATLAB , IDL , Julia и встроенная поддержка в Mathematica .

В индустрии компьютерных игр графические процессоры используются для графического рендеринга и для расчетов игровой физики (физические эффекты, такие как мусор, дым, огонь, жидкости); примерами являются PhysX и Bullet . CUDA также использовалась для ускорения неграфических приложений в вычислительной биологии , криптографии и других областях на порядок или больше. [13] [14] [15] [16] [17]

CUDA предоставляет как API низкого уровня (CUDA Driver API, не с одним источником), так и API более высокого уровня (CUDA Runtime API, с одним источником). Первоначальный CUDA SDK был опубликован 15 февраля 2007 года для Microsoft Windows и Linux . Поддержка Mac OS X была позже добавлена ​​в версии 2.0, [18] которая заменяет бета-версию, выпущенную 14 февраля 2008 года. [19] CUDA работает со всеми графическими процессорами Nvidia, начиная с серии G8x, включая GeForce , Quadro и линейку Tesla . CUDA совместима с большинством стандартных операционных систем.

CUDA 8.0 поставляется со следующими библиотеками (для компиляции и выполнения, в алфавитном порядке):

CUDA 8.0 поставляется со следующими программными компонентами:

CUDA 9.0–9.2 поставляется со следующими другими компонентами:

CUDA 10 поставляется со следующими другими компонентами:

CUDA 11.0–11.8 поставляется со следующими другими компонентами: [20] [21] [22] [23]

Преимущества

CUDA имеет ряд преимуществ по сравнению с традиционными вычислениями общего назначения на графических процессорах (GPGPU) с использованием графических API:

Ограничения

Пример

Этот пример кода на языке C++ загружает текстуру из изображения в массив на графическом процессоре:

текстура < float , 2 , cudaReadModeElementType > tex ;   void foo () { cudaArray * cu_array ;    // Выделяем массив cudaChannelFormatDesc description = cudaCreateChannelDesc <float> (); cudaMallocArray ( & cu_array , & description , width , height ) ;         // Копируем данные изображения в массив cudaMemcpyToArray ( cu_array , image , width * height * sizeof ( float ), cudaMemcpyHostToDevice );     // Установить параметры текстуры ( по умолчанию ) tex.addressMode [ 0 ] = cudaAddressModeClamp ; tex.addressMode [ 1 ] = cudaAddressModeClamp ; tex.filterMode = cudaFilterModePoint ; tex.normalized = false ; // не нормализовать координаты              // Привязываем массив к текстуре cudaBindTextureToArray ( tex , cu_array );   // Запустить ядро ​​dim3 blockDim ( 16 , 16 , 1 ) ; dim3 gridDim ( ( width + blockDim.x - 1 ) /blockDim.x , ( height + blockDim.y - 1 ) /blockDim.y,1 ) ; ядро ​​<<< gridDim , blockDim , 0 >>> ( d_data , height , width ) ;                           // Отвязываем массив от текстуры cudaUnbindTexture ( tex ); } //end foo()  __global__ void kernel ( float * odata , int height , int width ) { unsigned int x = blockIdx.x * blockDim.x + threadIdx.x ; unsigned int y = blockIdx.y * blockDim.y + threadIdx.y ; if ( x < width && y < height ) { float c = tex2D ( tex , x , y ) ; odata [ y * width + x ] = c ; } }                                        

Ниже приведен пример на Python , который вычисляет произведение двух массивов на GPU. Неофициальные привязки языка Python можно получить из PyCUDA . [36]

импортировать  pycuda.compiler  как  comp импортировать  pycuda.driver  как  drv импортировать  numpy импортировать  pycuda.autoinitmod  =  comp . SourceModule ( """ __global__ void multiply_them(float *dest, float *a, float *b) {  const int i = threadIdx.x;  dest[i] = a[i] * b[i]; } """ ) умножить_их  =  mod . get_function ( "умножить_их" )a  =  numpy.random.randn ( 400 ) .astype ( numpy.float32 ) b = numpy.random.randn ( 400 ) .astype ( numpy.float32 )  dest  =  numpy.zeros_like ( a ) multiply_them ( drv.Out ( dest ) , drv.In ( a ) , drv.In ( b ) , блок = ( 400 , 1 , 1 ) )     распечатать ( назначение  -  a  *  b )

Дополнительные привязки Python для упрощения операций умножения матриц можно найти в программе pycublas . [37]

 импорт  numpy из  pycublas  импорт  CUBLASMatrixA  =  CUBLASMatrix ( numpy . mat ( [ [ 1 ,  2 ,  3 ],  [ 4 ,  5 ,  6 ]],  numpy . float32 )) B  =  CUBLASMatrix ( numpy . mat ( [ [ 2 ,  3 ],  [ 4 ,  5 ],  [ 6 ,  7 ]],  numpy . float32 )) C  =  A  *  B print ( C . np_mat ())

в то время как CuPy напрямую заменяет NumPy: [38]

импортировать  cupya  =  cupy.random.randn ( 400 ) b = cupy.random.randn ( 400 )  dest  =  cupy.zeros_like ( a )распечатать ( назначение  -  a  *  b )

Поддерживаемые графические процессоры

Поддерживаемые версии CUDA Compute Capability для версии CUDA SDK и микроархитектуры (по кодовому имени):

Примечание: CUDA SDK 10.2 — последний официальный релиз для macOS, поскольку в более новых версиях поддержка macOS будет недоступна.

Возможности вычислений CUDA по версиям с соответствующими полупроводниками GPU и моделями карт GPU (разделенными по различным областям применения):

'*' – только OEM -продукты

Особенности и характеристики версии

[58]

Типы данных

Примечание: любые пропущенные строки или пустые записи отражают некоторую нехватку информации по данному конкретному пункту. [59]

Тензорные ядра

Примечание: любые пропущенные строки или пустые записи отражают некоторую нехватку информации по данному конкретному пункту. [62] [63] [64] [65] [66] [67]

[75] [76] [77] [78]

Технические характеристики

[89]

[90]

Многопроцессорная архитектура

[119]

Для получения дополнительной информации прочтите руководство по программированию Nvidia CUDA. [120]

Текущее и будущее использование архитектуры CUDA

Сравнение с конкурентами

CUDA конкурирует с другими вычислительными стеками GPU: Intel OneAPI и AMD ROCm .

В то время как CUDA от Nvidia имеет закрытый исходный код, OneAPI от Intel и ROCm от AMD имеют открытый исходный код.

Intel OneAPI

oneAPI — это инициатива, основанная на открытых стандартах, созданная для поддержки разработки программного обеспечения для различных аппаратных архитектур. [123] Библиотеки oneAPI должны реализовывать открытые спецификации, которые публично обсуждаются специальными группами по интересам, предоставляя возможность любому разработчику или организации реализовывать собственные версии библиотек oneAPI. [124] [125]

Первоначально это решение было разработано компанией Intel, но другими его последователями стали Fujitsu и Huawei.

Единый фонд ускорения (UXL)

Unified Acceleration Foundation (UXL) — это новый технологический консорциум, работающий над продолжением инициативы OneAPI, с целью создания новой экосистемы программного обеспечения ускорителей с открытым стандартом, связанных с ней открытых стандартов и проектов спецификаций через рабочие группы и специальные группы интересов (SIG). Цель состоит в том, чтобы предложить открытые альтернативы CUDA от Nvidia. Основными компаниями, стоящими за этим, являются Intel, Google, ARM, Qualcomm, Samsung, Imagination и VMware. [126]

AMD ROCm

ROCm [127] — это программный стек с открытым исходным кодом для программирования графических процессоров (GPU) от Advanced Micro Devices (AMD).

Смотрите также

Ссылки

  1. ^ ab Shah, Agam. «Nvidia не полностью против сторонних производителей чипов CUDA». www.theregister.com . Получено 25.04.2024 .
  2. ^ Nvidia. "Что такое CUDA?". Nvidia . Получено 21 марта 2024 г. .
  3. ^ ab Abi-Chahla, Fedy (18 июня 2008 г.). "CUDA от Nvidia: конец CPU?". Tom's Hardware . Получено 17 мая 2015 г.
  4. ^ Зунич, Питер (24.01.2018). "CUDA против OpenCL против OpenGL". Videomaker . Получено 16.09.2018 .
  5. ^ "OpenCL". Разработчик NVIDIA . 2013-04-24 . Получено 2019-11-04 .
  6. ^ "Домашняя страница Nvidia CUDA". 18 июля 2017 г.
  7. ^ Шимпи, Ананд Лал; Уилсон, Дерек (8 ноября 2006 г.). "Nvidia GeForce 8800 (G80): графические процессоры, переработанные для DirectX 10". AnandTech . Получено 16 мая 2015 г. .
  8. ^ "Введение — документация nsight-visual-studio-edition 12.6". docs.nvidia.com . Получено 2024-10-10 .
  9. ^ Витт, Стивен (27.11.2023). «Как Nvidia Дженсена Хуанга поддерживает революцию искусственного интеллекта». The New Yorker . ISSN  0028-792X . Получено 10.12.2023 .
  10. ^ "CUDA LLVM Compiler". 7 мая 2012 г.
  11. Первая демонстрация OpenCL на GPU на YouTube
  12. ^ Демонстрация DirectCompute Ocean, запущенная на графическом процессоре Nvidia с поддержкой CUDA на YouTube
  13. ^ Василиадис, Гиоргос; Антонатос, Спирос; Полихронакис, Михалис; Маркатос, Евангелос П.; Иоаннидис, Сотирис (сентябрь 2008 г.). "Gnort: Высокопроизводительное обнаружение вторжений в сеть с использованием графических процессоров" (PDF) . Последние достижения в обнаружении вторжений . Конспект лекций по информатике. Том 5230. С. 116–134. doi :10.1007/978-3-540-87403-4_7. ISBN 978-3-540-87402-7.
  14. ^ Schatz, Michael C.; Trapnell, Cole; Delcher, Arthur L.; Varshney, Amitabh (2007). "Высокопроизводительное выравнивание последовательностей с использованием графических процессоров". BMC Bioinformatics . 8 : 474. doi : 10.1186/1471-2105-8-474 . PMC 2222658. PMID  18070356 . 
  15. ^ Manavski, Svetlin A.; Giorgio, Valle (2008). «CUDA-совместимые графические карты как эффективные аппаратные ускорители для выравнивания последовательностей Смита-Уотермана». BMC Bioinformatics . 10 (Suppl 2): ​​S10. doi : 10.1186/1471-2105-9-S2-S10 . PMC 2323659 . PMID  18387198. 
  16. ^ «Пирит – Google Code».
  17. ^ "Используйте графический процессор Nvidia для научных вычислений". BOINC. 2008-12-18. Архивировано из оригинала 2008-12-28 . Получено 2017-08-08 .
  18. ^ "Nvidia CUDA Software Development Kit (CUDA SDK) – Release Notes Version 2.0 for MAC OS X". Архивировано из оригинала 2009-01-06.
  19. ^ "CUDA 1.1 – Теперь на Mac OS X". 14 февраля 2008 г. Архивировано из оригинала 22 ноября 2008 г.
  20. ^ «Раскрыты возможности CUDA 11». 14 мая 2020 г.
  21. ^ «CUDA Toolkit 11.1 представляет поддержку графических процессоров серий GeForce RTX 30 и Quadro RTX». 23 сентября 2020 г.
  22. ^ «Улучшение распределения памяти с новыми функциями NVIDIA CUDA 11.2». 16 декабря 2020 г.
  23. ^ «Изучение новых возможностей CUDA 11.3». 16 апреля 2021 г.
  24. ^ Зильберштейн, Марк; Шустер, Ассаф ; Гейгер, Дэн; Патни, Анжул; Оуэнс, Джон Д. (2008). "Эффективное вычисление сумм-произведений на графических процессорах с помощью программно-управляемого кэша" (PDF) . Труды 22-й ежегодной международной конференции по суперкомпьютерам – ICS '08 (PDF) . Труды 22-й ежегодной международной конференции по суперкомпьютерам – ICS '08. стр. 309–318. doi :10.1145/1375527.1375572. ISBN 978-1-60558-158-3.
  25. ^ "CUDA C Programming Guide v8.0" (PDF) . nVidia Developer Zone . Январь 2017 г. стр. 19 . Получено 22 марта 2017 г. .
  26. ^ "NVCC заставляет компилировать файлы .cu на C++". 29 ноября 2011 г.
  27. ^ Уайтхед, Натан; Фит-Флореа, Алекс. «Точность и производительность: плавающая точка и соответствие IEEE 754 для графических процессоров Nvidia» (PDF) . Nvidia . Получено 18 ноября 2014 г. .
  28. ^ "CUDA-Enabled Products". CUDA Zone . Nvidia Corporation . Получено 2008-11-03 .
  29. ^ «Проект Coriander: Компиляция кодов CUDA в OpenCL, запуск везде». Phoronix.
  30. ^ Перкинс, Хью (2017). "cuda-on-cl" (PDF) . IWOCL . Получено 8 августа 2017 г.
  31. ^ "hughperkins/coriander: Сборка кода NVIDIA® CUDA™ для устройств OpenCL™ 1.2". GitHub. 6 мая 2019 г.
  32. ^ "Документация CU2CL". chrec.cs.vt.edu .
  33. ^ "GitHub – vosen/ZLUDA". GitHub .
  34. ^ Ларабель, Майкл (2024-02-12), «AMD тихо профинансировала внедрение Drop-In CUDA на основе ROCm: теперь оно с открытым исходным кодом», Phoronix , получено 2024-02-12
  35. ^ "GitHub – chip-spv/chipStar". GitHub .
  36. ^ "PyCUDA".
  37. ^ "pycublas". Архивировано из оригинала 2009-04-20 . Получено 2017-08-08 .
  38. ^ "CuPy" . Получено 2020-01-08 .
  39. ^ "Руководство по программированию NVIDIA CUDA. Версия 1.0" (PDF) . 23 июня 2007 г.
  40. ^ "Руководство по программированию NVIDIA CUDA. Версия 2.1" (PDF) . 8 декабря 2008 г.
  41. ^ "Руководство по программированию NVIDIA CUDA. Версия 2.2" (PDF) . 2 апреля 2009 г.
  42. ^ "Руководство по программированию NVIDIA CUDA. Версия 2.2.1" (PDF) . 26 мая 2009 г.
  43. ^ "Руководство по программированию NVIDIA CUDA. Версия 2.3.1" (PDF) . 26 августа 2009 г.
  44. ^ "Руководство по программированию NVIDIA CUDA. Версия 3.0" (PDF) . 20 февраля 2010 г.
  45. ^ "Руководство по программированию NVIDIA CUDA C. Версия 3.1.1" (PDF) . 21 июля 2010 г.
  46. ^ "Руководство по программированию NVIDIA CUDA C. Версия 3.2" (PDF) . 9 ноября 2010 г.
  47. ^ "CUDA 11.0 Release Notes". Разработчик NVIDIA .
  48. ^ "CUDA 11.1 Release Notes". Разработчик NVIDIA .
  49. ^ "CUDA 11.5 Release Notes". Разработчик NVIDIA .
  50. ^ "CUDA 11.8 Release Notes". Разработчик NVIDIA .
  51. ^ "NVIDIA Quadro NVS 420 Specs". База данных графических процессоров TechPowerUp . 25 августа 2023 г.
  52. ^ Ларабель, Майкл (29 марта 2017 г.). «NVIDIA выпускает поддержку графического процессора Tegra X2 в Nouveau». Phoronix . Получено 8 августа 2017 г.
  53. ^ Характеристики Nvidia Xavier на TechPowerUp (предварительные)
  54. ^ «Добро пожаловать — Jetson Linux Developer Guide 34.1 документация».
  55. ^ «NVIDIA обеспечивает поддержку графического процессора Volta с открытым исходным кодом для своей системы на кристалле Xavier».
  56. ^ «Архитектура NVIDIA Ады Лавлейс».
  57. ^ Анализ архитектуры графического процессора Turing с помощью микробенчмаркинга
  58. ^ "H.1. Характеристики и технические характеристики – Таблица 13. Поддержка функций на вычислительную мощность". docs.nvidia.com . Получено 23.09.2020 .
  59. ^ «Руководство по программированию CUDA C++».
  60. ^ Fused-Multiply-Add, фактически выполнено, Dense Matrix
  61. ^ как SASS с версии 7.5, как PTX с версии 8.0
  62. ^ «Техническое описание. Серия NVIDIA Jetson AGX Orin» (PDF) . nvidia.com . Проверено 5 сентября 2023 г.
  63. ^ "Архитектура графического процессора NVIDIA Ampere GA102" (PDF) . nvidia.com . Получено 5 сентября 2023 г. .
  64. ^ Луо, Вейле; Фан, Руибо; Ли, Зею; Ду, Дайю; Ван, Цян; Чу, Сяовэнь (2024). «Сравнительный анализ и анализ архитектуры графического процессора Nvidia Hopper». arXiv : 2402.13499v1 [cs.AR].
  65. ^ "Datasheet NVIDIA A40" (PDF) . nvidia.com . Получено 27 апреля 2024 г. .
  66. ^ "АРХИТЕКТУРА ГРАФИЧЕСКОГО ПРОЦЕССОРА NVIDIA AMPERE GA102" (PDF) . 27 апреля 2024 г.
  67. ^ "Технический паспорт NVIDIA L40" (PDF) . 27 апреля 2024 г.
  68. ^ В Whitepapers кубические диаграммы Tensor Core представляют ширину единицы скалярного произведения в высоту (4 FP16 для Volta и Turing, 8 FP16 для A100, 4 FP16 для GA102, 16 FP16 для GH100). Два других измерения представляют количество единиц скалярного произведения (4x4 = 16 для Volta и Turing, 8x4 = 32 для Ampere и Hopper). Результирующие серые блоки представляют собой операции FMA FP16 за цикл. Pascal без ядра Tensor показан только для сравнения скорости, как и Volta V100 с типами данных, отличными от FP16.
  69. ^ "Техническая документация по архитектуре NVIDIA Turing" (PDF) . nvidia.com . Получено 5 сентября 2023 г. .
  70. ^ "NVIDIA Tensor Core GPU" (PDF) . nvidia.com . Получено 5 сентября 2023 г. .
  71. ^ «Подробный обзор архитектуры NVIDIA Hopper». 22 марта 2022 г.
  72. ^ форма x размер преобразованного операнда, например, 2 тензорных ядра x 4x4x4xFP16/цикл = 256 байт/цикл
  73. ^ = продукт первых 3 строк таблицы
  74. ^ = произведение двух предыдущих строк таблицы; форма: например, 8x8x4xFP16 = 512 байт
  75. ^ Сан, Вэй; Ли, Энг; Гэн, Тонг; Штуйк, Сандер; Корпорал, Хенк (2023). «Раскрытие тензорных ядер с помощью микротестов: задержка, пропускная способность и числовые характеристики». Труды IEEE по параллельным и распределенным системам . 34 (1): 246–261. arXiv : 2206.02874 . doi : 10.1109/tpds.2022.3217824. S2CID  249431357.
  76. ^ «Параллельное выполнение потоков ISA версии 7.7».
  77. ^ Райхан, Мд Аамир; Голи, Негар; Амодт, Тор (2018). «Моделирование графических процессоров с поддержкой ускорителей глубокого обучения». arXiv : 1811.08309 [cs.MS].
  78. ^ «Архитектура NVIDIA Ады Лавлейс».
  79. ^ форма x размер преобразованного операнда, например, 2 тензорных ядра x 4x4x4xFP16/цикл = 256 байт/цикл
  80. ^ = продукт первых 3 строк таблицы
  81. ^ = произведение двух предыдущих строк таблицы; форма: например, 8x8x4xFP16 = 512 байт
  82. ^ Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [cs.DC].
  83. ^ Берджесс, Джон (2019). «RTX ON – NVIDIA TURING GPU». Симпозиум IEEE Hot Chips 31 (HCS) 2019 г. стр. 1–27. doi :10.1109/HOTCHIPS.2019.8875651. ISBN 978-1-7281-2089-8. S2CID  204822166.
  84. ^ Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [cs.DC].
  85. ^ Берджесс, Джон (2019). «RTX ON – NVIDIA TURING GPU». Симпозиум IEEE Hot Chips 31 (HCS) 2019 г. стр. 1–27. doi :10.1109/HOTCHIPS.2019.8875651. ISBN 978-1-7281-2089-8. S2CID  204822166.
  86. ^ зависит от устройства
  87. ^ "Tegra X1". 9 января 2015 г.
  88. ^ Архитектура графического процессора NVIDIA H100 Tensor Core
  89. ^ H.1. Характеристики и технические характеристики – Таблица 14. Технические характеристики по вычислительным возможностям
  90. ^ Подробное описание архитектуры NVIDIA Hopper
  91. ^ может выполнять только 160 целочисленных инструкций согласно руководству по программированию
  92. ^ 128 согласно [1]. 64 из FP32 + 64 отдельных единиц?
  93. ^ 64 ядрами FP32 и 64 гибкими ядрами FP32/INT.
  94. ^ «Руководство по программированию CUDA C++».
  95. ^ 32 полосы FP32 объединяются в 16 полос FP64. Может быть меньше в зависимости от модели.
  96. ^ поддерживается только 16 полосами FP32, они объединяются в 4 полосы FP64
  97. ^ abcdef в зависимости от модели
  98. ^ Эффективная скорость, вероятно, через порты FP32. Нет описания реальных ядер FP64.
  99. ^ Может также использоваться для сложения и сравнения целых чисел.
  100. ^ 2 такта/инструкция для каждого раздела SM Берджесс, Джон (2019). "RTX ON – The NVIDIA TURING GPU". Симпозиум IEEE Hot Chips 31 (HCS) 2019 г. стр. 1–27. doi :10.1109/HOTCHIPS.2019.8875651. ISBN 978-1-7281-2089-8. S2CID  204822166.
  101. ^ Дюрант, Люк; Жиру, Оливье; Харрис, Марк; Стэм, Ник (10 мая 2017 г.). «Внутри Volta: самый передовой в мире графический процессор для центров обработки данных». Блог разработчиков Nvidia .
  102. ^ Планировщики и диспетчеры имеют выделенные исполнительные блоки в отличие от Fermi и Kepler.
  103. ^ Диспетчеризация может перекрываться одновременно, если она занимает более одного цикла (когда исполнительных блоков меньше, чем 32/SM Partition)
  104. ^ Может ли двойной выпуск труб MAD и труб SFU?
  105. ^ Не более одного планировщика могут выдавать 2 инструкции одновременно. Первый планировщик отвечает за варпы с нечетными идентификаторами. Второй планировщик отвечает за варпы с четными идентификаторами.
  106. ^ ab только общая память, без кэша данных
  107. ^ abcdef разделяемая память отделена, но L1 включает кэш текстур
  108. ^ "H.6.1. Архитектура". docs.nvidia.com . Получено 2019-05-13 .
  109. ^ «Демистификация микроархитектуры графического процессора посредством микробенчмаркинга» (PDF) .
  110. ^ Цзя, Чжэ; Маджиони, Марко; Штайгер, Бенджамин; Скарпацца, Даниэле П. (2018). «Анализ архитектуры графического процессора NVIDIA Volta с помощью микробенчмаркинга». arXiv : 1804.06826 [cs.DC].
  111. ^ "Tegra X1". 9 января 2015 г.
  112. ^ Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [cs.DC].
  113. ^ «Анализ архитектуры графического процессора Ampere с помощью микробенчмаркинга».
  114. ^ Обратите внимание, что Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [cs.DC].не согласен и заявляет 2 КБ кэша инструкций L0 на раздел SM и 16 КБ кэша инструкций L1 на раздел SM
  115. ^ Цзя, Чжэ; Маджиони, Марко; Штайгер, Бенджамин; Скарпацца, Даниэле П. (2018). «Анализ архитектуры графического процессора NVIDIA Volta с помощью микробенчмаркинга». arXiv : 1804.06826 [cs.DC].
  116. ^ "Операционный код asfermi". GitHub .
  117. ^ ab для доступа только с помощью текстурного движка
  118. ^ 25% отключено на RTX 4090
  119. ^ "I.7. Compute Capability 8.x". docs.nvidia.com . Получено 2022-10-12 .
  120. ^ «Приложение F. Характеристики и технические характеристики» (PDF) . (3,2 МиБ) , страница 148 из 175 (Версия 5.0, октябрь 2012 г.).
  121. ^ "Биоинформатика nVidia CUDA: BarraCUDA". BioCentric . 2019-07-19 . Получено 2019-10-15 .
  122. ^ "Часть V: Моделирование физики". Разработчик NVIDIA . Получено 2020-09-11 .
  123. ^ "Модель программирования oneAPI". oneAPI.io . Получено 2024-07-27 .
  124. ^ "Спецификации | oneAPI". oneAPI.io . Получено 2024-07-27 .
  125. ^ "Спецификация oneAPI — документация спецификации oneAPI 1.3-rev-1". oneapi-spec.uxlfoundation.org . Получено 27.07.2024 .
  126. ^ "Эксклюзив: Заговор с целью ослабить контроль Nvidia над ИИ, нацелившись на программное обеспечение". Reuters . Получено 2024-04-05 .
  127. ^ "Вопрос: Что означает ROCm? · Проблема № 1628 · RadeonOpenCompute/ROCm". Github.com . Получено 18 января 2022 г. .

Дальнейшее чтение

Внешние ссылки