Jump to content

ДРУГОЙ

ДРУГОЙ
Разработчик(и) Нвидиа
Первоначальный выпуск 23 июня 2007 г .; 17 лет назад ( 23.06.2007 )
Стабильная версия
12,6 / август 2024 г .; 0 месяцев назад ( 2024-08 )
Операционная система Винда , Линукс
Платформа Поддерживаемые графические процессоры
Тип ГПГПУ
Лицензия Собственный
Веб-сайт разработчик .nvidia /cuda-зона

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

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

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

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

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

Онтология

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

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

Онтология фреймворка CUDA
память (аппаратная) память (код или область видимости переменных ) вычисление (аппаратное обеспечение) вычисление (синтаксис кода) вычисление (семантика кода)
БАРАН переменные, отличные от CUDA хозяин программа один обычный звонок
Видеопамять , кэш L2 графического процессора глобальный, константный, текстура устройство сетка одновременный вызов одной и той же подпрограммы на многих процессорах
Кэш L1 графического процессора локальный, общий SM («потоковый мультипроцессор») блокировать индивидуальный вызов подпрограммы
деформация = 32 нити SIMD-инструкции
Кэш графического процессора L0, регистрация поток (он же «SP», «потоковый процессор», «ядро cuda», но эти имена сейчас устарели) аналогично отдельным скалярным операциям внутри векторной операции

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

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

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

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

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

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

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

  • cuBLAS — библиотека базовых подпрограмм линейной алгебры CUDA
  • CUDART — библиотека времени выполнения CUDA
  • cuFFT — библиотека быстрого преобразования Фурье CUDA
  • cuRAND — библиотека генерации случайных чисел CUDA
  • cuSOLVER — коллекция плотных и разреженных прямых решателей на основе CUDA.
  • cuSPARSE — библиотека разреженных матриц CUDA
  • NPP — библиотека NVIDIA Performance Primitives
  • nvGRAPH — библиотека NVIDIA Graph Analytics.
  • NVML — библиотека управления NVIDIA
  • NVRTC — библиотека компиляции среды выполнения NVIDIA для CUDA C++

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

  • nView – программное обеспечение для управления настольными компьютерами NVIDIA nView
  • NVWMI — набор инструментов NVIDIA для управления предприятием
  • GameWorks PhysX — многоплатформенный игровой физический движок.

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

  • CUTLASS 1.0 – собственные алгоритмы линейной алгебры,
  • Видеодекодер NVIDIA устарел в CUDA 9.2; теперь он доступен в NVIDIA Video Codec SDK.

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

  • nvJPEG – гибридная (ЦП и ГП) обработка JPEG

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

  • CUB — новая из поддерживаемых библиотек C++.
  • Поддержка нескольких экземпляров графического процессора MIG
  • nvJPEG2000 — JPEG 2000 кодер и декодер

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

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

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

  • Разбросанное чтение — код может читать из произвольных адресов в памяти.
  • Единая виртуальная память (CUDA 4.0 и выше)
  • Единая память (CUDA 6.0 и выше)
  • Общая память . CUDA предоставляет быструю область общей памяти, которую можно использовать совместно между потоками. Его можно использовать в качестве кэша, управляемого пользователем, обеспечивая более высокую пропускную способность, чем это возможно при использовании поиска текстур. [ 23 ]
  • Ускоренная загрузка и обратная связь с графическим процессором.
  • Полная поддержка целочисленных и побитовых операций, включая целочисленный поиск текстур.

Ограничения

[ редактировать ]
  • Будь то главный компьютер или устройство графического процессора, весь исходный код CUDA теперь обрабатывается в соответствии с правилами синтаксиса C++. [ 24 ] Так было не всегда. Более ранние версии CUDA были основаны на правилах синтаксиса C. [ 25 ] Как и в более общем случае компиляции кода C с помощью компилятора C++, возможно, что старый исходный код CUDA в стиле C либо не скомпилируется, либо не будет вести себя так, как изначально предполагалось.
  • Взаимодействие с языками рендеринга, такими как OpenGL, является односторонним: OpenGL имеет доступ к зарегистрированной памяти CUDA, но CUDA не имеет доступа к памяти OpenGL.
  • Копирование между памятью хоста и устройства может привести к снижению производительности из-за пропускной способности системной шины и задержки (частично это можно облегчить с помощью асинхронной передачи памяти, обрабатываемой механизмом DMA графического процессора).
  • Для достижения наилучшей производительности потоки должны выполняться группами по меньшей мере по 32, при этом общее количество потоков исчисляется тысячами. Ветвления в программном коде существенно не влияют на производительность при условии, что каждый из 32 потоков проходит один и тот же путь выполнения; Модель выполнения SIMD становится существенным ограничением для любой по своей сути расходящейся задачи (например, перемещения разделения пространства структуры данных во время трассировки лучей ).
  • Для современных версий недоступна эмуляция или резервная функциональность.
  • Действительный C++ иногда может быть помечен и препятствовать компиляции из-за того, как компилятор подходит к оптимизации с учетом ограничений целевого графического процессора. [ нужна ссылка ]
  • C++ Информация о типе времени выполнения (RTTI) и обработка исключений в стиле C++ поддерживаются только в коде узла, а не в коде устройства.
  • В устройствах с одинарной точностью на устройствах с вычислительными возможностями CUDA 1.x первого поколения ненормальные числа не поддерживаются и вместо этого сбрасываются до нуля, а точность операций деления и извлечения квадратного корня немного ниже, чем математические операции с одинарной точностью, соответствующие стандарту IEEE 754. Устройства, поддерживающие вычислительные возможности версии 2.0 и выше, поддерживают ненормальные числа, а операции деления и извлечения квадратного корня по умолчанию соответствуют стандарту IEEE 754. Тем не менее, при желании пользователи могут получить более быструю математику игрового уровня для устройств с вычислительными возможностями 1.x, установив флаги компилятора, отключающие точное деление и точные квадратные корни, а также включив сброс ненормальных чисел до нуля. [ 26 ]
  • В отличие от OpenCL , графические процессоры с поддержкой CUDA доступны только у Nvidia, поскольку они являются собственностью компании. [ 27 ] [ 1 ] Попытки реализовать CUDA на других графических процессорах включают:
    • Проект Coriander: преобразует исходный код CUDA C++11 в OpenCL 1.2 C. Ответвление CUDA-on-CL, предназначенное для запуска TensorFlow . [ 28 ] [ 29 ] [ 30 ]
    • CU2CL: преобразование CUDA 3.2 C++ в OpenCL C. [ 31 ]
    • GPUOpen HIP: тонкий уровень абстракции поверх CUDA и ROCm, предназначенный для графических процессоров AMD и Nvidia. Имеет инструмент преобразования для импорта исходного кода CUDA C++. Поддерживает CUDA 4.0 плюс C++11 и float16.
    • ZLUDA — это замена CUDA на графических процессорах AMD и ранее графических процессорах Intel с производительностью, близкой к исходной. [ 32 ] Intel и AMD заключили с разработчиком Анджеем Яником отдельный контракт на разработку программного обеспечения в 2021 и 2022 годах соответственно. Однако ни одна из компаний не решила выпустить его официально из-за отсутствия варианта использования в бизнесе. Контракт AMD включал пункт, который позволял Янику самостоятельно выпускать свой код для AMD, что позволяло ему выпустить новую версию, поддерживающую только графические процессоры AMD. [ 33 ]
    • ChipStar может компилировать и запускать программы CUDA/HIP на передовых платформах OpenCL 3.0 или Level Zero. [ 34 ]

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

texture<float, 2, cudaReadModeElementType> tex;

void foo()
{
  cudaArray* cu_array;

  // Allocate array
  cudaChannelFormatDesc description = cudaCreateChannelDesc<float>();
  cudaMallocArray(&cu_array, &description, width, height);

  // Copy image data to array
  cudaMemcpyToArray(cu_array, image, width*height*sizeof(float), cudaMemcpyHostToDevice);

  // Set texture parameters (default)
  tex.addressMode[0] = cudaAddressModeClamp;
  tex.addressMode[1] = cudaAddressModeClamp;
  tex.filterMode = cudaFilterModePoint;
  tex.normalized = false; // do not normalize coordinates

  // Bind the array to the texture
  cudaBindTextureToArray(tex, cu_array);

  // Run kernel
  dim3 blockDim(16, 16, 1);
  dim3 gridDim((width + blockDim.x - 1)/ blockDim.x, (height + blockDim.y - 1) / blockDim.y, 1);
  kernel<<< gridDim, blockDim, 0 >>>(d_data, height, width);

  // Unbind the array from the texture
  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 , который вычисляет произведение двух массивов на графическом процессоре. Неофициальные привязки языка Python можно получить на PyCUDA . [ 35 ]

import pycuda.compiler as comp
import pycuda.driver as drv
import numpy
import pycuda.autoinit

mod = comp.SourceModule(
    """
__global__ void multiply_them(float *dest, float *a, float *b)
{
  const int i = threadIdx.x;
  dest[i] = a[i] * b[i];
}
"""
)

multiply_them = mod.get_function("multiply_them")

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), block=(400, 1, 1))

print(dest - a * b)

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

 
import numpy
from pycublas import CUBLASMatrix

A = 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: [ 37 ]

import cupy

a = cupy.random.randn(400)
b = cupy.random.randn(400)

dest = cupy.zeros_like(a)

print(dest - a * b)

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

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

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

Вычислительные возможности (поддержка CUDA SDK по сравнению с микроархитектурой)
CUDA SDK
Версия(и)
Тесла Ферми Кеплер
(Рано)
Кеплер
(Поздно)
Максвелл Паскаль Время Тьюринг Ампер Есть
ловелас
Хоппер Блэквелл
1.0 [ 38 ] 1.0 – 1.1
1.1 1,0 – 1,1+х
2.0 1,0 – 1,1+х
2.1 – 2.3.1 [ 39 ] [ 40 ] [ 41 ] [ 42 ] 1.0 – 1.3
3.0 – 3.1 [ 43 ] [ 44 ] 1.0 2.0
3.2 [ 45 ] 1.0 2.1
4.0 – 4.2 1.0 2.1
5.0 – 5.5 1.0 3.5
6.0 1.0 3.2 3.5
6.5 1.1 3.7 5.х
7.0 – 7.5 2.0 5.х
8.0 2.0 6.х
9.0 – 9.2 3.0 7.0 – 7.2
10.0 – 10.2 3.0 7.5
11.0 [ 46 ] 3.5 8.0
11.1 – 11.4 [ 47 ] 3.5 8.6
11.5 – 11.7.1 [ 48 ] 3.5 8.7
11.8 [ 49 ] 3.5 8.9 9.0
12.0 – 12.5 5.0 9.0

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

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

Вычислительные возможности, полупроводники графических процессоров и платы Nvidia для графических процессоров
Вычислить
способность
(версия)
Микро-
архитектура
графические процессоры GeForce Квадро , НВС Тесла/ЦОД Тегра ,
Джетсон ,
ВОДИТЬ МАШИНУ
1.0 Тесла G80 GeForce 8800 Ultra, GeForce 8800 GTX, GeForce 8800 GTS (G80) Quadro FX 5600, Quadro FX 4600, Quadro Plex 2100 S4 Тесла C870, Тесла D870, Тесла S870
1.1 Г92, Г94, Г96, Г98, Г84, Г86 GeForce GTS 250, GeForce 9800 GX2, GeForce 9800 GTX, GeForce 9800 GT, GeForce 8800 GTS(G92), GeForce 8800 GT, GeForce 9600 GT, GeForce 9500 GT, GeForce 9400 GT, GeForce 8600 GTS, GeForce 8600 GT, GeForce 8500 GT ,
GeForce G110M, GeForce 9300M GS, GeForce 9200M GS, GeForce 9100M G, GeForce 8400M GT, GeForce G105M
Quadro FX 4700 X2, Quadro FX 3700, Quadro FX 1800, Quadro FX 1700, Quadro FX 580, Quadro FX 570, Quadro FX 470, Quadro FX 380, Quadro FX 370, Quadro FX 370 Low Profile, Quadro NVS 450, Quadro NVS 420 , Квадро НВС 290, Квадро НВС 295, Квадро Плекс 2100 Д4,
Quadro FX 3800M, Quadro FX 3700M, Quadro FX 3600M, Quadro FX 2800M, Quadro FX 2700M, Quadro FX 1700M, Quadro FX 1600M, Quadro FX 770M, Quadro FX 570M, Quadro FX 370M, Quadro FX 360M, Quadro NVS 320М, Квадро НВС 160М, Квадро НВС 150М, Квадро НВС 140М, Квадро НВС 135М, Квадро НВС 130М, Квадро НВС 450, Квадро НВС 420, [ 50 ] Квадро НВС 295
1.2 ГТ218, ГТ216, ГТ215 GeForce GT 340*, GeForce GT 330*, GeForce GT 320*, GeForce 315*, GeForce 310*, GeForce GT 240, GeForce GT 220, GeForce 210,
GeForce GTS 360M, GeForce GTS 350M, GeForce GT 335M, GeForce GT 330M, GeForce GT 325M, GeForce GT 240M, GeForce G210M, GeForce 310M, GeForce 305M
Quadro FX 380 низкопрофильный, Quadro FX 1800M, Quadro FX 880M, Quadro FX 380M,
Нвидиа НВС 300, НВС 5100М, НВС 3100М, НВС 2100М, ИОН
1.3 ГТ200, ГТ200б GeForce GTX 295, GTX 285, GTX 280, GeForce GTX 275, GeForce GTX 260 Quadro FX 5800, Quadro FX 4800, Quadro FX 4800 для Mac, Quadro FX 3800, Quadro CX, Quadro Plex 2200 D2 Тесла C1060, Тесла S1070, Тесла M1060
2.0 Ферми ГФ100, ГФ110 GeForce GTX 590, GeForce GTX 580, GeForce GTX 570, GeForce GTX 480, GeForce GTX 470, GeForce GTX 465,
GeForce GTX 480M
Quadro 6000, Quadro 5000, Quadro 4000, Quadro 4000 для Mac, Quadro Plex 7000,
Квадро 5010М, Квадро 5000М
Тесла C2075, Тесла C2050/C2070, Тесла M2050/M2070/M2075/M2090
2.1 GF104, GF106 GF108, GF114, GF116, GF117, GF119 GeForce GTX 560 Ti, GeForce GTX 550 Ti, GeForce GTX 460, GeForce GTS 450, GeForce GTS 450*, GeForce GT 640 (GDDR3), GeForce GT 630, GeForce GT 620, GeForce GT 610, GeForce GT 520, GeForce GT 440, GeForce GT 440*, GeForce GT 430, GeForce GT 430*, GeForce GT 420*,
GeForce GTX 675M, GeForce GTX 670M, GeForce GT 635M, GeForce GT 630M, GeForce GT 625M, GeForce GT 720M, GeForce GT 620M, GeForce 710M, GeForce 610M, GeForce 820M, GeForce GTX 580M, GeForce GTX 570M, GeForce GTX 560M, GeForce GT 555M, GeForce GT 550M, GeForce GT 540M, GeForce GT 525M, GeForce GT 520MX, GeForce GT 520M, GeForce GTX 485M, GeForce GTX 470M, GeForce GTX 460M, GeForce GT 445M, GeForce GT 435M, GeForce GT 420M, GeForce GT 415M , GeForce 710M, GeForce 410M
Квадро 2000, Квадро 2000Д, Квадро 600,
Квадро 4000М, Квадро 3000М, Квадро 2000М, Квадро 1000М,
НВС 310, НВС 315, НВС 5400М, НВС 5200М, НВС 4200М
3.0 Кеплер ГК104, ГК106, ГК107 GeForce GTX 770, GeForce GTX 760, GeForce GT 740, GeForce GTX 690, GeForce GTX 680, GeForce GTX 670, GeForce GTX 660 Ti, GeForce GTX 660, GeForce GTX 650 Ti BOOST, GeForce GTX 650 Ti, GeForce GTX 650,
GeForce GTX 880M, GeForce GTX 870M, GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GeForce GTX 660M, GeForce GT 750M, GeForce GT 650M, GeForce GT 745M, GeForce GT 645M, GeForce GT 740M, GeForce GT 730M, GeForce GT 640M, GeForce GT 640M LE, GeForce GT 735M, GeForce GT 730M
Quadro K5000, Quadro K4200, Quadro K4000, Quadro K2000, Quadro K2000D, Quadro K600, Quadro K420,
Квадро К500М, Квадро К510М, Квадро К610М, Квадро К1000М, Квадро К2000М, Квадро К1100М, Квадро К2100М, Квадро К3000М, Квадро К3100М, Квадро К4000М, Квадро К5000М, Квадро К4100М, Квадро К5100М,
НВС 510, Квадро 410
Тесла К10, СЕТКА К340, СЕТКА К520, СЕТКА К2
3.2 ГК20А Тегра К1,
Джетсон ТК1
3.5 ГК110, ГК208 GeForce GTX Titan Z, GeForce GTX Titan Black, GeForce GTX Titan, GeForce GTX 780 Ti, GeForce GTX 780, GeForce GT 640 (GDDR5), GeForce GT 630 v2, GeForce GT 730, GeForce GT 720, GeForce GT 710, GeForce GT 740M (64-бит, DDR3), GeForce GT 920M Квадро К6000, Квадро К5200 Тесла К40, Тесла К20х, Тесла К20
3.7 ГК210 Тесла К80
5.0 Максвелл ГМ107, ГМ108 GeForce GTX 750 Ti, GeForce GTX 750, GeForce GTX 960M, GeForce GTX 950M, GeForce 940M, GeForce 930M, GeForce GTX 860M, GeForce GTX 850M, GeForce 845M, GeForce 840M, GeForce 830M Quadro K1200, Quadro K2200, Quadro K620, Quadro M2000M, Quadro M1000M, Quadro M600M, Quadro K620M, NVS 810 Тесла М10
5.2 ГМ200, ГМ204, ГМ206 GeForce GTX Titan X, GeForce GTX 980 Ti, GeForce GTX 980, GeForce GTX 970, GeForce GTX 960, GeForce GTX 950, GeForce GTX 750 SE,
GeForce GTX 980M, GeForce GTX 970M, GeForce GTX 965M
Quadro M6000 24 ГБ, Quadro M6000, Quadro M5000, Quadro M4000, Quadro M2000, Quadro M5500,
Квадро М5000М, Квадро М4000М, Квадро М3000М
Тесла М4, Тесла М40, Тесла М6, Тесла М60
5.3 GM20B Тегра Х1,
Джетсон ТХ1,
Джетсон Нано,
ДРАЙВ СХ,
ДРАЙВ ПХ
6.0 Паскаль ГП100 Квадро GP100 Тесла П100
6.1 ГП102, ГП104, ГП106, ГП107, ГП108 Нвидиа ТИТАН Xp, Титан X,
GeForce GTX 1080 Ti, GTX 1080, GTX 1070 Ti, GTX 1070, GTX 1060,
GTX 1050 Ti, GTX 1050, GT 1030, GT 1010,
MX350, MX330, MX250, MX230, MX150, MX130, MX110
Quadro P6000, Quadro P5000, Quadro P4000, Quadro P2200, Quadro P2000, Quadro P1000, Quadro P400, Quadro P500, Quadro P520, Quadro P600,
Quadro P5000(Мобильный), Quadro P4000(Мобильный), Quadro P3000(Мобильный)
Тесла П40, Тесла П6, Тесла П4
6.2 ГП10Б [ 51 ] Тегра Х2, Джетсон ТХ2, ДРАЙВ ПХ 2
7.0 Время ГВ100 NVIDIA TITAN V Рама GV100 Тесла В100, Тесла В100С
7.2 ГВ10Б [ 52 ]

ГВ11Б [ 53 ] [ 54 ]

Тегра Ксавьер,
Джетсон Ксавье NX,
Джетсон AGX Ксавьер,
ДРАЙВ AGX Ксавьер,
ДРАЙВ AGX Пегас,
Клара AGX
7.5 Тьюринг ТУ102, ТУ104, ТУ106, ТУ116, ТУ117 NVIDIA ТИТАН РТХ,
GeForce RTX 2080 Ti, RTX 2080 Super, RTX 2080, RTX 2070 Super, RTX 2070, RTX 2060 Super, RTX 2060 12 ГБ, RTX 2060,
GeForce GTX 1660 Ti, GTX 1660 Супер, GTX 1660, GTX 1650 Супер, GTX 1650, MX550, MX450
Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Quadro RTX 4000, T1000, T600, T400
T1200(мобильный), T600(мобильный), T500(мобильный), Quadro T2000(мобильный), Quadro T1000(мобильный)
Тесла Т4
8.0 Ампер GA100 А100 80 ГБ, А100 40 ГБ, А30
8.6 ГА102, ГА103, ГА104, ГА106, ГА107 GeForce RTX 3090 Ti, RTX 3090, RTX 3080 Ti, RTX 3080 12 ГБ, RTX 3080, RTX 3070 Ti, RTX 3070, RTX 3060 Ti, RTX 3060, RTX 3050, RTX 3050 Ti (мобильный), RTX 3050 (мобильный), RTX 2050 (мобильный), MX570 RTX A6000, RTX A5500, RTX A5000, RTX A4500, RTX A4000, RTX A2000
RTX A5000 (мобильный), RTX A4000 (мобильный), RTX A3000 (мобильный), RTX A2000 (мобильный)
А40, А16, А10, А2
8.7 ГА10Б Джетсон Мьюзик Нано,
Джетсон Мьюзик NX,
Джетсон AGX Музыка,
ДРАЙВ AGX Музыка,
ПРИВОД AGX Пегас ОА,
Клара Холоскан
8.9 Ада Лавлейс [ 55 ] AD102, AD103, AD104, AD106, AD107 GeForce RTX 4090, RTX 4080 Super, RTX 4080, RTX 4070 Ti Super, RTX 4070 Ti, RTX 4070 Super, RTX 4070, RTX 4060 Ti, RTX 4060 Доступен RTX 6000, Доступен RTX 5880, Доступен RTX 5000, Доступен RTX 4500, Доступен RTX 4000, Доступен RTX 4000 SFF Л40С, Л40, Л20, Л4, Л2
9.0 Хоппер ГХ100 Н200, Н100
10.0 Блэквелл 100 ГБ Б200, Б100
10.х ГБ202, ГБ203, ГБ205, ГБ206, ГБ207 GeForce RTX 5090, RTX 5080 Б40
Вычислить
способность
(версия)
Микро-
архитектура
графические процессоры GeForce Квадро , НВС Тесла/ЦОД Тегра ,
Джетсон ,
ВОДИТЬ МАШИНУ

'*' — OEM. продукция только

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

[ редактировать ]
Поддержка функций (не перечисленные функции поддерживаются для всех вычислительных возможностей) Вычислительные возможности (версия)
1.0, 1.1 1.2, 1.3 2.х 3.0 3.2 3.5, 3.7, 5.х, 6.х, 7.0, 7.2 7.5 8.х 9.0
Функции голосования по деформации (__all(), __any()) Нет Да
Функции деформационного голосования (__ballot()) Нет Да
Функции ограничения памяти (__threadfence_system())
Функции синхронизации (__syncthreads_count(), __syncthreads_and(), __syncthreads_or())
Поверхностные функции
3D сетка блоков резьбы
Функции варп-перетасовки Нет Да
Программирование единой памяти
Сдвиг воронки Нет Да
Динамический параллелизм Нет Да
Единый путь к данным [ 56 ] Нет Да
Асинхронное копирование с аппаратным ускорением Нет Да
Аппаратно-ускоренное разделение барьера прибытия/ожидания
Поддержка варп-уровня для операций по сокращению
Управление резидентностью кэша L2
Инструкции DPX для ускоренного динамического программирования Нет Да
Распределенная общая память
Кластер блоков потоков
Блок ускорителя тензорной памяти (ТМА)
Поддержка функций (не перечисленные функции поддерживаются для всех вычислительных возможностей) 1.0,1.1 1.2,1.3 2.х 3.0 3.2 3.5, 3.7, 5.х, 6.х, 7.0, 7.2 7.5 8.х 9.0
Вычислительные возможности (версия)

[ 57 ]

Типы данных

[ редактировать ]
Тип данных Операция Поддерживается с
Атомная операция Поддерживается с
для глобальной памяти
Поддерживается с
для общей памяти
8-битное целое число
подписанный/неподписанный
загрузка, хранение, преобразование 1.0
16-битное целое число
подписанный/неподписанный
общие операции 1.0 атомныйCAS() 3.5
32-битное целое число
подписанный/неподписанный
общие операции 1.0 атомарные функции 1.1 1.2
64-битное целое число
подписанный/неподписанный
общие операции 1.0 атомарные функции 1.2 2.0
любой 128-битный тривиально копируемый тип общие операции Нет атомныйExch, атомныйCAS 9.0
16-битная с плавающей запятой
РП16
сложение, вычитание,
умножение, сравнение,
функции warp shuffle, преобразование
5.3 атомное сложение Half2 6.0
атомное присоединение 7.0
16-битная с плавающей запятой
БФ16
сложение, вычитание,
умножение, сравнение,
функции warp shuffle, преобразование
8.0 атомное присоединение 8.0
32-битная с плавающей запятой общие операции 1.0 атомныйExch() 1.1 1.2
атомное присоединение 2.0
32-битные числа с плавающей запятой float2 и float4 общие операции Нет атомное присоединение 9.0
64-битная с плавающей запятой общие операции 1.3 атомное присоединение 6.0

Примечание. Любые пропущенные строки или пустые записи отражают некоторый недостаток информации по конкретному элементу. [ 58 ]

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

[ редактировать ]
FMA за цикл на тензорное ядро [ 59 ] Поддерживается с 7.0 7.2 7.5 Рабочая станция 7.5 Рабочий стол 8.0 8.6 Рабочая станция 8.7 8.9 Рабочая станция 8.6 Рабочий стол 8.9 Рабочий стол 9.0 10.0
Тип данных Для плотных матриц Для разреженных матриц 1-е поколение (8x/SM) 1-е поколение? (8x/СМ) 2-е поколение (8x/СМ) 3-е поколение (4x/SM) 4-е поколение (4x/SM) 3-е поколение (4x/SM) 4-е поколение (4x/SM) 5-е поколение (4x/SM)
1-битные значения (И) 8.0 как
экспериментальный
Нет Нет 4096 2048 4096 скорость подлежит уточнению
1-битные значения (XOR) 7,5–8,9 как
экспериментальный
Нет 1024 Устарело или удалено?
4-битные целые числа 8,0–8,9 как
экспериментальный
256 1024 512 1024
4-битная плавающая запятая FP4 (E2M1?) 10.0 Нет 4096
6-битная плавающая запятая FP6 (E3M2 и E2M3?) 10.0 Нет 2048
8-битные целые числа 7.2 8.0 Нет 128 128 512 256 512 1024 2048
8-битная плавающая запятая FP8 (E4M3 и E5M2) с накоплением FP16 8.9 Нет 512 Нет
8-битная плавающая запятая FP8 (E4M3 и E5M2) с накоплением FP32
16-битная плавающая запятая FP16 с накоплением FP16 7.0 8.0 64 64 64 256 128 256 512 1024
16-битная плавающая запятая FP16 с накоплением FP32 32 64 128
16-битная плавающая запятая BF16 с накоплением FP32 7.5 [ 60 ] 8.0 Нет
32-битный (используется 19 бит) с плавающей запятой TF32 скорость подлежит уточнению (32?) 128 32 64 256 512
64-битная с плавающей запятой 8.0 Нет Нет 16 скорость подлежит уточнению 32 16

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

Состав тензорного ядра 7.0 7.2, 7.5 8.0, 8.6 8.7 8.9 9.0
Ширина единицы скалярного произведения в единицах FP16 (в байтах) [ 67 ] [ 68 ] [ 69 ] [ 70 ] 4 (8) 8 (16) 4 (8) 16 (32)
Единицы скалярного произведения на тензорное ядро 16 32
Тензорные ядра на раздел SM 2 1
Полная пропускная способность (байт/цикл) [ 71 ] на раздел SM [ 72 ] 256 512 256 1024
Тензорные ядра FP: минимальные циклы для расчета матрицы по всей деформации 8 4 8
Тензорные ядра FP: минимальная форма матрицы для полной пропускной способности (байты) [ 73 ] 2048
INT Tensor Cores: минимальные циклы для расчета матрицы по всей деформации. Нет 4
Тензорные ядра INT: минимальная форма матрицы для полной пропускной способности (байты) Нет 1024 2048 1024

[ 74 ] [ 75 ] [ 76 ] [ 77 ]

Состав ядра тензора FP64 8.0 8.6 8.7 8.9 9.0
Ширина единицы скалярного произведения в единицах FP64 (в байтах) 4 (32) подлежит уточнению 4 (32)
Единицы скалярного произведения на тензорное ядро 4 подлежит уточнению 8
Тензорные ядра на раздел SM 1
Полная пропускная способность (байт/цикл) [ 78 ] на раздел SM [ 79 ] 128 подлежит уточнению 256
Минимальные циклы для расчета матрицы всей основы 16 подлежит уточнению
Минимальная форма матрицы для полной пропускной способности (байты) [ 80 ] 2048

Техническая спецификация

[ редактировать ]
Технические характеристики Вычислительные возможности (версия)
1.0 1.1 1.2 1.3 2.х 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0
Максимальное количество резидентных сеток на устройство
(параллельное выполнение ядра, может быть ниже для определенных устройств)
1 16 4 32 16 128 32 16 128 16 128
Максимальная размерность сетки блоков резьбы 2 3
Максимальный размер x сетки блоков резьбы 65535 2 31 − 1
Максимальный размер y или z сетки блоков резьбы 65535
Максимальная размерность резьбового блока 3
Максимальный размер x или y блока 512 1024
Максимальный z-размер блока 64
Максимальное количество потоков на блок 512 1024
Размер деформации 32
Максимальное количество резидентных блоков на мультипроцессор 8 16 32 16 32 16 24 32
Максимальное количество резидентных варпов на мультипроцессор 24 32 48 64 32 64 48 64
Максимальное количество резидентных потоков на мультипроцессор 768 1024 1536 2048 1024 2048 1536 2048
Количество 32-битных обычных регистров на мультипроцессор 8 К 16 К 32 К 64 К 128 К 64 К
Количество 32-битных унифицированных регистров на мультипроцессор Нет 2 К [ 81 ]

[ 82 ]

Максимальное количество 32-битных регистров на блок потока 8 К 16 К 32 К 64 К 32 К 64 К 32 К 64 К 32 К 64 К
Максимальное количество 32-битных обычных регистров на поток 124 63 255
Максимальное количество 32-битных универсальных регистров на варп Нет 63 [ 83 ]

[ 84 ]

Объем общей памяти на мультипроцессор
(из общей общей памяти + кэш L1, если применимо)
16 КиБ 16/48 КиБ (или 64 КиБ) 16/32/48 КиБ (или 64 КиБ) 80/96/112 КиБ (или 128 КиБ) 64 КиБ 96 КиБ 64 КиБ 96 КиБ 64 КиБ 0/8/16/32/64/96 КиБ (или 128 КиБ) 32/64 КиБ (или 96 КиБ) 0/8/16/32/64/100/132/164 КиБ (из 192 КиБ) 0/8/16/32/64/100 КиБ (или 128 КиБ) 0/8/16/32/64/100/132/164 КиБ (из 192 КиБ) 0/8/16/32/64/100 КиБ (или 128 КиБ) 0/8/16/32/64/100/132/164/196/228 КиБ (из 256 КиБ)
Максимальный объем общей памяти на блок потока 16 КиБ 48 КиБ 96 КиБ 48 КиБ 64 КиБ 163 КиБ 99 КиБ 163 КиБ 99 КиБ 227 КиБ
Количество общих банков памяти 16 32
Объем локальной памяти на поток 16 КиБ 512 КиБ
Постоянный размер памяти, доступный CUDA C/C++
(1 банк, PTX имеет доступ к 11 банкам, SASS имеет доступ к 18 банкам)
64 КиБ
Кэшируйте рабочий набор для каждого мультипроцессора для постоянной памяти. 8 КиБ 4 КиБ 8 КиБ
Кэш рабочего набора для каждого мультипроцессора для памяти текстур. 16 КиБ на TPC 24 КиБ на TPC 12 КиБ 12 – 48 КиБ [ 85 ] 24 КиБ 48 КиБ 32 КиБ [ 86 ] 24 КиБ 48 КиБ 24 КиБ 32 – 128 КиБ 32 – 64 КиБ 28 – 192 КиБ 28 – 128 КиБ 28 – 192 КиБ 28 – 128 КиБ 28 – 256 КиБ
Максимальная ширина ссылки на одномерную текстуру, привязанной к CUDA
множество
8192 65536 131072
Максимальная ширина для ссылки на одномерную текстуру, привязанная к линейной
память
2 27 2 28 2 27 2 28 2 27 2 28
Максимальная ширина и количество слоев для одномерного слоя
ссылка на текстуру
8192 × 512 16384 × 2048 32768 х 2048
Максимальная ширина и высота для привязки ссылки на 2D-текстуру
в массив CUDA
65536 × 32768 65536 × 65535 131072 х 65536
Максимальная ширина и высота для привязки ссылки на 2D-текстуру
в линейную память
65000 х 65000 65536 х 65536 131072 х 65000
Максимальная ширина и высота для привязки ссылки на 2D-текстуру
в массив CUDA, поддерживающий сбор текстур
16384 х 16384 32768 х 32768
Максимальная ширина, высота и количество слоев для 2D-файла.
ссылка на многослойную текстуру
8192 × 8192 × 512 16384 × 16384 × 2048 32768 х 32768 х 2048
Максимальная ширина, высота и глубина 3D-текстуры.
ссылка, привязанная к линейной памяти или массиву CUDA
2048 3 4096 3 16384 3
Максимальная ширина (и высота) для ссылки на текстуру кубической карты 16384 32768
Максимальная ширина (и высота) и количество слоев
для справки по многослойной текстуре кубической карты
16384 × 2046 32768 × 2046
Максимальное количество текстур, которые можно привязать к
ядро
128 256
Максимальная ширина для одномерной привязки поверхности, привязанной к
CUDA-массив
Нет
поддерживается
65536 16384 32768
Максимальная ширина и количество слоев для одномерного слоя
привязка к поверхности
65536 × 2048 16384 × 2048 32768 × 2048
Максимальная ширина и высота для привязки 2D-поверхности
привязан к массиву CUDA
65536 × 32768 16384 × 65536 131072 × 65536
Максимальная ширина, высота и количество слоев для 2D-файла.
эталон многослойной поверхности
65536 × 32768 × 2048 16384 × 16384 × 2048 32768 × 32768 × 2048
Максимальная ширина, высота и глубина трехмерной поверхности.
ссылка, привязанная к массиву CUDA
65536 × 32768 × 2048 4096 × 4096 × 4096 16384 × 16384 × 16384
Максимальная ширина (и высота) для ссылки на поверхность кубической карты, привязанной к массиву CUDA. 32768 16384 32768
Максимальная ширина и количество слоев кубической карты
эталон многослойной поверхности
32768 × 2046 16384 × 2046 32768 × 2046
Максимальное количество поверхностей, которые можно привязать к
ядро
8 16 32
Максимальное количество инструкций на ядро 2 миллиона 512 миллионов
Максимальное количество блоков потоков на кластер блоков потоков [ 87 ] Нет 16
Технические характеристики 1.0 1.1 1.2 1.3 2.х 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0
Вычислительные возможности (версия)
[ 88 ]

[ 89 ]

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

[ редактировать ]
Спецификации архитектуры Вычислительные возможности (версия)
1.0 1.1 1.2 1.3 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0
Количество полос ALU для арифметических операций INT32 8 32 48 192 [ 90 ] 128 128 64 128 128 64 64 64
Количество полос ALU для любой арифметической операции INT32 или FP32.
Количество полос ALU для арифметических операций FP32 64 64 128 128
Количество полос ALU для арифметических операций FP16x2 Нет 1 128 [ 91 ] 128 [ 92 ] 64 [ 93 ]
Количество полос ALU для арифметических операций FP64 Нет 1 16 от ФП32 [ 94 ] 4 от ФП32 [ 95 ] 8 8 / 64 [ 96 ] 64 4 [ 97 ] 32 4 32 2 32 2 2? 2 64
Количество единиц загрузки/хранения 4 на 2 см. 8 за 2 см. 8 на 2 см/3 см [ 96 ] 8 за 3 см. 16 32 16 32 16 32
Количество специальных функциональных блоков для трансцендентных функций одинарной точности с плавающей запятой 2 [ 98 ] 4 8 32 16 32 16
Количество блоков текстурирования (TMU) 4 на 2 см. 8 за 2 см. 8 за 2/3см [ 96 ] 8 за 3 см. 4 4 / 8 [ 96 ] 16 8 16 8 4
Количество полос ALU для единых арифметических операций INT32 Нет 2 [ 99 ]
Количество тензорных ядер Нет 8 (1-е поколение) [ 100 ] 0 / 8 [ 96 ] (2-е поколение) 4 (3-е поколение) 4 (4-е поколение)
Количество ядер трассировки лучей Нет 0 / 1 [ 96 ] (1-е поколение) Нет 1 (2-е поколение) Нет 1 (3-е поколение) Нет
Количество разделов SM = блоки обработки [ 101 ] 1 4 2 4
Количество планировщиков деформации на раздел SM 1 2 4 1
Максимальное количество новых инструкций, выдаваемых в каждом цикле одним планировщиком [ 102 ] 2 [ 103 ] 1 2 [ 104 ] 2 1
Размер единой памяти для кэша данных и общей памяти 16 КиБ [ 105 ] 16 КиБ [ 105 ] 64 КиБ 128 КиБ 64 КиБ SM + 24 КиБ L1 (отдельный) [ 106 ] 96 КиБ SM + 24 КиБ L1 (отдельный) [ 106 ] 64 КиБ SM + 24 КиБ L1 (отдельный) [ 106 ] 64 КиБ SM + 24 КиБ L1 (отдельный) [ 106 ] 96 КиБ SM + 24 КиБ L1 (отдельный) [ 106 ] 64 КиБ SM + 24 КиБ L1 (отдельный) [ 106 ] 128 КиБ 96 КиБ [ 107 ] 192 КиБ 128 КиБ 192 КиБ 128 КиБ 256 КиБ
Размер кэша инструкций L3 на графический процессор 32 КиБ [ 108 ] использовать кэш данных L2
Размер кэша инструкций L2 на кластер текстурных процессоров (TPC) 8 КиБ
Размер кэша инструкций L1.5 на SM [ 109 ] 4 КиБ 32 КиБ 32 КиБ 48 КиБ [ 110 ] 128 КиБ 32 КиБ 128 КиБ ~46 КиБ [ 111 ] 128 КиБ [ 112 ]
Размер кэша инструкций L1 на SM 8 КиБ 8 КиБ
Размер кэша инструкций L0 на раздел SM только 1 раздел на SM Нет 12 КиБ 16 КиБ? [ 113 ] 32 КиБ
Ширина инструкции [ 114 ] 32-битные инструкции и 64-битные инструкции [ 115 ] 64-битные инструкции + 64-битная управляющая логика каждые 7 инструкций 64-битные инструкции + 64-битная управляющая логика каждые 3 инструкции 128-битная комбинированная логика инструкций и управления
Ширина шины памяти на раздел памяти в битах 64 ((Г)ГДР) 32 ((Г)ГДР) 512 (ХБМ) 32 ((Г)ГДР) 512 (ХБМ) 32 ((Г)ГДР) 512 (ХБМ) 32 ((Г)ГДР) 512 (ХБМ)
Кэш L2 на раздел памяти 16 КиБ [ 116 ] 32 КиБ [ 116 ] 128 КиБ 256 КиБ 1 МиБ 512 КиБ 128 КиБ 512 КиБ 256 КиБ 128 КиБ 768 КиБ 64 КиБ 512 КиБ 4 МБ 512 КиБ 8 МБ [ 117 ] 5 МБ
Количество блоков вывода рендеринга (ROP) на раздел памяти (или на GPC в более поздних моделях) 4 8 4 8 16 8 12 8 4 16 2 8 16 16 на ГПК 3 на ГПК 16 на ГПК
Спецификации архитектуры 1.0 1.1 1.2 1.3 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0
Вычислительные возможности (версия)
[ 118 ]

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

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

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

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

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

CUDA конкурирует с другими стеками вычислений на графических процессорах: Intel OneAPI и AMD ROCm .

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

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

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

Фонд единого ускорения (UXL)

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

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

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

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Шах, Агам. «Nvidia не категорически против того, чтобы третьи стороны производили чипы CUDA» . www.theregister.com . Проверено 25 апреля 2024 г.
  2. ^ Нвидиа. «Что такое CUDA?» . Нвидия . Проверено 21 марта 2024 г.
  3. ^ Перейти обратно: а б Аби-Чахла, Феди (18 июня 2008 г.). «CUDA от Nvidia: конец процессоров?» . Аппаратное обеспечение Тома . Проверено 17 мая 2015 г.
  4. ^ Зунич, Питер (24 января 2018 г.). «CUDA против OpenCL против OpenGL» . Видеомейкер . Проверено 16 сентября 2018 г.
  5. ^ «ОпенКЛ» . Разработчик NVIDIA . 24 апреля 2013 г. Проверено 4 ноября 2019 г.
  6. ^ «Домашняя страница NVIDIA CUDA» . 18 июля 2017 г.
  7. ^ Шимпи, Ананд Лал; Уилсон, Дерек (8 ноября 2006 г.). «Nvidia GeForce 8800 (G80): графические процессоры, переработанные для DirectX 10» . АнандТех . Проверено 16 мая 2015 г.
  8. ^ Витт, Стивен (27 ноября 2023 г.). «Как Nvidia Дженсена Хуанга способствует революции искусственного интеллекта» . Житель Нью-Йорка . ISSN   0028-792X . Проверено 10 декабря 2023 г.
  9. ^ «CUDA LLVM-компилятор» . 7 мая 2012 г.
  10. ^ Первая демонстрация OpenCL на графическом процессоре на YouTube.
  11. ^ Демонстрация DirectCompute Ocean, работающая на графическом процессоре Nvidia CUDA, на YouTube
  12. ^ Василиадис, Гиоргос; Антонатос, Спирос; Полихронакис, Михалис; Маркатос, Евангелос П.; Иоаннидис, Сотирис (сентябрь 2008 г.). «Gnort: Высокопроизводительное обнаружение сетевых вторжений с использованием графических процессоров» (PDF) . Последние достижения в области обнаружения вторжений . Конспекты лекций по информатике. Том. 5230. стр. 116–134. дои : 10.1007/978-3-540-87403-4_7 . ISBN  978-3-540-87402-7 .
  13. ^ Шац, Майкл С.; Трапнелл, Коул; Делчер, Артур Л.; Варшней, Амитабх (2007). «Высокопроизводительное выравнивание последовательностей с использованием графических процессоров» . БМК Биоинформатика . 8 : 474. дои : 10.1186/1471-2105-8-474 . ПМК   2222658 . ПМИД   18070356 .
  14. ^ Манавский, Светлин А.; Джорджио, Валле (2008). «CUDA-совместимые карты графического процессора как эффективные аппаратные ускорители для выравнивания последовательностей Смита-Уотермана» . БМК Биоинформатика . 10 (Дополнение 2): S10. дои : 10.1186/1471-2105-9-S2-S10 . ПМК   2323659 . ПМИД   18387198 .
  15. ^ «Пирит – Код Google» .
  16. ^ «Используйте графический процессор Nvidia для научных вычислений» . БОИНК. 18 декабря 2008 г. Архивировано из оригинала 28 декабря 2008 г. Проверено 8 августа 2017 г.
  17. ^ «Комплект разработки программного обеспечения Nvidia CUDA (CUDA SDK) — примечания к выпуску версии 2.0 для MAC OS X» . Архивировано из оригинала 6 января 2009 г.
  18. ^ «CUDA 1.1 – теперь и в Mac OS X» . 14 февраля 2008 г. Архивировано из оригинала 22 ноября 2008 г.
  19. ^ «Раскрыты возможности CUDA 11» . 14 мая 2020 г.
  20. ^ «CUDA Toolkit 11.1 представляет поддержку графических процессоров серий GeForce RTX 30 и Quadro RTX» . 23 сентября 2020 г.
  21. ^ «Улучшение распределения памяти с помощью новых функций NVIDIA CUDA 11.2» . 16 декабря 2020 г.
  22. ^ «Изучение новых возможностей CUDA 11.3» . 16 апреля 2021 г.
  23. ^ Зильберштейн, Марк; Шустер, Ассаф ; Гейгер, Дэн; Патни, Анджул; Оуэнс, Джон Д. (2008). «Эффективное вычисление произведений суммы на графических процессорах с помощью программно-управляемого кэша» (PDF) . Материалы 22-й ежегодной международной конференции по суперкомпьютерам – ICS '08 (PDF) . Материалы 22-й ежегодной международной конференции по суперкомпьютерам – ICS '08. стр. 309–318. дои : 10.1145/1375527.1375572 . ISBN  978-1-60558-158-3 .
  24. ^ «Руководство по программированию на CUDA C, версия 8.0» (PDF) . Зона разработчиков nVidia . Январь 2017. с. 19 . Проверено 22 марта 2017 г.
  25. ^ «NVCC принудительно компилирует C++ файлов .cu» . 29 ноября 2011 г.
  26. ^ Уайтхед, Натан; Фит-Флоря, Алекс. «Точность и производительность: числа с плавающей запятой и соответствие стандарту IEEE 754 для графических процессоров Nvidia» (PDF) . Нвидия . Проверено 18 ноября 2014 г.
  27. ^ «Продукты с поддержкой CUDA» . Зона КУДА . Корпорация Нвидиа . Проверено 3 ноября 2008 г.
  28. ^ «Проект Coriander: компилируйте коды CUDA в OpenCL и запускайте повсюду» . Фороникс.
  29. ^ Перкинс, Хью (2017). «куда-он-кл» (PDF) . ИВОКЛ . Проверено 8 августа 2017 г.
  30. ^ «hughperkins/coriander: Создайте код NVIDIA® CUDA™ для устройств OpenCL™ 1.2» . Гитхаб. 6 мая 2019 г.
  31. ^ «Документация CU2CL» . chrec.cs.vt.edu .
  32. ^ «GitHub – возен/ЗЛУДА» . Гитхаб .
  33. ^ Ларабель, Майкл (12 февраля 2024 г.), «AMD незаметно профинансировала внешнюю реализацию CUDA, основанную на ROCm: теперь это открытый исходный код» , Phoronix , получено 12 февраля 2024 г.
  34. ^ «GitHub – чип-spv/chipStar» . Гитхаб .
  35. ^ «ПиКУДА» .
  36. ^ «пикубла» . Архивировано из оригинала 20 апреля 2009 г. Проверено 8 августа 2017 г.
  37. ^ «КуПи» . Проверено 8 января 2020 г.
  38. ^ «Руководство по программированию NVIDIA CUDA. Версия 1.0» (PDF) . 23 июня 2007 г.
  39. ^ «Руководство по программированию NVIDIA CUDA. Версия 2.1» (PDF) . 8 декабря 2008 г.
  40. ^ «Руководство по программированию NVIDIA CUDA. Версия 2.2» (PDF) . 2 апреля 2009 г.
  41. ^ «Руководство по программированию NVIDIA CUDA. Версия 2.2.1» (PDF) . 26 мая 2009 г.
  42. ^ «Руководство по программированию NVIDIA CUDA. Версия 2.3.1» (PDF) . 26 августа 2009 г.
  43. ^ «Руководство по программированию NVIDIA CUDA. Версия 3.0» (PDF) . 20 февраля 2010 г.
  44. ^ «Руководство по программированию NVIDIA CUDA C. Версия 3.1.1» (PDF) . 21 июля 2010 г.
  45. ^ «Руководство по программированию NVIDIA CUDA C. Версия 3.2» (PDF) . 9 ноября 2010 г.
  46. ^ «Примечания к выпуску CUDA 11.0» . Разработчик NVIDIA .
  47. ^ «Примечания к выпуску CUDA 11.1» . Разработчик NVIDIA .
  48. ^ «Примечания к выпуску CUDA 11.5» . Разработчик NVIDIA .
  49. ^ «Примечания к выпуску CUDA 11.8» . Разработчик NVIDIA .
  50. ^ «Характеристики NVIDIA Quadro NVS 420» . База данных графических процессоров TechPowerUp . 25 августа 2023 г.
  51. ^ Ларабель, Майкл (29 марта 2017 г.). «NVIDIA внедряет поддержку графического процессора Tegra X2 в версии Nouveau» . Фороникс . Проверено 8 августа 2017 г.
  52. ^ Спецификации Nvidia Xavier на TechPowerUp (предварительные)
  53. ^ «Добро пожаловать — документация Jetson Linux Developer Guide 34.1» .
  54. ^ «NVIDIA представляет поддержку графического процессора Volta с открытым исходным кодом для своей SoC Xavier» .
  55. ^ «Архитектура NVIDIA Ады Лавлейс» .
  56. ^ Анализ архитектуры графического процессора Тьюринга с помощью микробенчмаркинга
  57. ^ «H.1. Функции и технические характеристики – Таблица 13. Поддержка функций в зависимости от вычислительных возможностей» . docs.nvidia.com . Проверено 23 сентября 2020 г.
  58. ^ «Руководство по программированию CUDA C++» .
  59. ^ Fused-Multiply-Add, фактически выполнено, Dense Matrix
  60. ^ как SASS с версии 7.5, как PTX с версии 8.0
  61. ^ «Техническое описание. Серия NVIDIA Jetson AGX Orin» (PDF) . nvidia.com . Получено 5 сентября.
  62. ^ «Архитектура графического процессора NVIDIA Ampere GA102» (PDF) . nvidia.com . Проверено 5 сентября 2023 г.
  63. ^ Луо, Вейле; Ли, Зею; Ван, Цян ( ) 2024 , Сяовэнь .
  64. ^ «Техническое описание NVIDIA A40» (PDF) . nvidia.com . Проверено 27 апреля 2024 г.
  65. ^ «АРХИТЕКТУРА графического процессора NVIDIA AMPERE GA102» (PDF) . 27 апреля 2024 г.
  66. ^ «Техническое описание NVIDIA L40» (PDF) . 27 апреля 2024 г.
  67. ^ В технических документах диаграммы куба Tensor Core представляют ширину единицы скалярного произведения в высоту (4 FP16 для Volta и Turing, 8 FP16 для A100, 4 FP16 для GA102, 16 FP16 для GH100). Два других измерения представляют количество единиц скалярного произведения (4x4 = 16 для Вольты и Тьюринга, 8x4 = 32 для Ампера и Хоппера). Полученные серые блоки представляют собой операции FMA FP16 за цикл. Pascal без ядра Tensor показан только для сравнения скорости, как и Volta V100 с типами данных, отличными от FP16.
  68. ^ «Информационный документ по архитектуре NVIDIA Turing» (PDF) . nvidia.com . Проверено 5 сентября 2023 г.
  69. ^ «Графический процессор NVIDIA с тензорными ядрами» (PDF) . nvidia.com . Проверено 5 сентября 2023 г.
  70. ^ «Подробное описание архитектуры NVIDIA Hopper» . 22 марта 2022 г.
  71. ^ форма x преобразованный размер операнда, например, 2 тензорных ядра x 4x4x4xFP16/цикл = 256 байт/цикл
  72. ^ = продукт в первых 3 строках таблицы
  73. ^ = произведение двух предыдущих строк таблицы; форма: например, 8x8x4xFP16 = 512 байт
  74. ^ Сунь, Вэй; Ли, Анг; Гэн, Тонг; Стейк, Сандер; Капрал, Хенк (2023 г.). «Анализ тензорных ядер с помощью микротестов: задержка, пропускная способность и числовое поведение». Транзакции IEEE в параллельных и распределенных системах . 34 (1): 246–261. arXiv : 2206.02874 . дои : 10.1109/tpds.2022.3217824 . S2CID   249431357 .
  75. ^ «Параллельное выполнение потоков ISA версии 7.7» .
  76. ^ Райхан, штат Мэриленд Аамир; Голи, Негар; Аамодт, Тор (2018). «Моделирование графических процессоров с поддержкой ускорителя глубокого обучения». arXiv : 1811.08309 [ cs.MS ].
  77. ^ «Архитектура NVIDIA Ады Лавлейс» .
  78. ^ форма x преобразованный размер операнда, например, 2 тензорных ядра x 4x4x4xFP16/цикл = 256 байт/цикл
  79. ^ = продукт в первых 3 строках таблицы
  80. ^ = произведение двух предыдущих строк таблицы; форма: например, 8x8x4xFP16 = 512 байт
  81. ^ Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [ cs.DC ].
  82. ^ Берджесс, Джон (2019). «RTX ON – графический процессор NVIDIA TURING» . 31-й симпозиум IEEE Hot Chips 2019 (HCS) . стр. 1–27. дои : 10.1109/HOTCHIPS.2019.8875651 . ISBN  978-1-7281-2089-8 . S2CID   204822166 .
  83. ^ Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [ cs.DC ].
  84. ^ Берджесс, Джон (2019). «RTX ON – графический процессор NVIDIA TURING» . 31-й симпозиум IEEE Hot Chips 2019 (HCS) . стр. 1–27. дои : 10.1109/HOTCHIPS.2019.8875651 . ISBN  978-1-7281-2089-8 . S2CID   204822166 .
  85. ^ зависит от устройства
  86. ^ «Тегра Х1» . 9 января 2015 г.
  87. ^ Архитектура графического процессора NVIDIA H100 с тензорным ядром
  88. ^ Ч.1. Функции и технические характеристики. Таблица 14. Технические характеристики по вычислительным возможностям.
  89. ^ Подробное описание архитектуры NVIDIA Hopper
  90. ^ может выполнять только 160 целочисленных инструкций согласно руководству по программированию.
  91. ^ 128 по данным [1] . 64 от ФП32 + 64 отдельных блока?
  92. ^ 64 ядрами FP32 и 64 гибкими ядрами FP32/INT.
  93. ^ «Руководство по программированию CUDA C++» .
  94. ^ 32 полосы FP32 объединяются в 16 полос FP64. Возможно, ниже в зависимости от модели.
  95. ^ поддерживается только 16 полосами FP32, они объединяются в 4 полосы FP64.
  96. ^ Перейти обратно: а б с д и ж в зависимости от модели
  97. ^ Эффективная скорость, вероятно, через порты FP32. Нет описания реальных ядер FP64.
  98. ^ Также может использоваться для сложения и сравнения целых чисел.
  99. ^ 2 такта/инструкция для каждого раздела SM Берджесс, Джон (2019). «RTX ON – графический процессор NVIDIA TURING» . 31-й симпозиум IEEE Hot Chips 2019 (HCS) . стр. 1–27. дои : 10.1109/HOTCHIPS.2019.8875651 . ISBN  978-1-7281-2089-8 . S2CID   204822166 .
  100. ^ Дюрант, Люк; Жиру, Оливье; Харрис, Марк; Стэм, Ник (10 мая 2017 г.). «Внутри Volta: самый продвинутый в мире графический процессор для центров обработки данных» . Блог разработчиков NVIDIA .
  101. ^ Планировщики и диспетчеры имеют отдельные исполнительные блоки, в отличие от Ферми и Кеплера.
  102. ^ Диспетчеризация может перекрываться одновременно, если это занимает более одного цикла (когда количество исполнительных блоков меньше, чем 32/SM Partition)
  103. ^ Возможна двойная выпуск трубы MAD и трубы SFU.
  104. ^ Не более одного планировщика может выдать 2 инструкции одновременно. Первый планировщик отвечает за варпы с нечетными идентификаторами. Второй планировщик отвечает за варпы с четными ID.
  105. ^ Перейти обратно: а б только общая память, без кэша данных
  106. ^ Перейти обратно: а б с д и ж общая память отдельная, но L1 включает в себя кэш текстур
  107. ^ «Н.6.1. Архитектура» . docs.nvidia.com . Проверено 13 мая 2019 г.
  108. ^ «Демистификация микроархитектуры графического процессора посредством микробенчмаркинга» (PDF) .
  109. ^ Цзя, Чжэ; Маджиони, Марко; Штайгер, Бенджамин; Скарпацца, Даниэле П. (2018). «Анализ архитектуры графического процессора NVIDIA Volta с помощью микробенчмаркинга». arXiv : 1804.06826 [ cs.DC ].
  110. ^ «Тегра Х1» . 9 января 2015 г.
  111. ^ Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [ cs.DC ].
  112. ^ «Анализ архитектуры графического процессора Ampere посредством микробенчмаркинга» .
  113. ^ Обратите внимание, что Цзя, Чжэ; Маджиони, Марко; Смит, Джеффри; Даниэле Паоло Скарпацца (2019). «Анализ графического процессора NVidia Turing T4 с помощью микробенчмаркинга». arXiv : 1903.07486 [ cs.DC ]. не согласен и заявляет, что кэш инструкций L0 составляет 2 КБ на раздел SM и кэш инструкций L1 16 КБ на SM.
  114. ^ Цзя, Чжэ; Маджиони, Марко; Штайгер, Бенджамин; Скарпацца, Даниэле П. (2018). «Анализ архитектуры графического процессора NVIDIA Volta с помощью микробенчмаркинга». arXiv : 1804.06826 [ cs.DC ].
  115. ^ «код операции асферми» . Гитхаб .
  116. ^ Перейти обратно: а б для доступа только с помощью текстурного движка
  117. ^ 25% отключено на RTX 4090.
  118. ^ «I.7. Вычислительные возможности 8.x» . docs.nvidia.com . Проверено 12 октября 2022 г.
  119. ^ «Приложение F. Характеристики и технические характеристики» (PDF) .   (3,2 МБ) , стр. 148 из 175 (версия 5.0, октябрь 2012 г.).
  120. ^ «Биоинформатика nVidia CUDA: BarraCUDA» . БиоЦентрик . 19 июля 2019 г. Проверено 15 октября 2019 г.
  121. ^ «Часть V: Физическое моделирование» . Разработчик NVIDIA . Проверено 11 сентября 2020 г.
  122. ^ «Модель программирования oneAPI» . oneAPI.io . Проверено 27 июля 2024 г.
  123. ^ «Спецификации | oneAPI» . oneAPI.io . Проверено 27 июля 2024 г.
  124. ^ «Спецификация oneAPI — документация по спецификации oneAPI 1.3-ред.-1» . oneapi-spec.uxlfoundation.org . Проверено 27 июля 2024 г.
  125. ^ «Эксклюзив: за заговором с целью ослабить контроль Nvidia над искусственным интеллектом, нацелившись на программное обеспечение» . Рейтер . Проверено 5 апреля 2024 г.
  126. ^ «Вопрос: Что означает ROCm? · Проблема № 1628 · RadeonOpenCompute/ROCm» . Гитхаб.com . Проверено 18 января 2022 г.

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 90fc8d73e5900c2d2bafe9a10b4f39b0__1722902580
URL1:https://arc.ask3.ru/arc/aa/90/b0/90fc8d73e5900c2d2bafe9a10b4f39b0.html
Заголовок, (Title) документа по адресу, URL1:
CUDA - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)