exponenta event banner

Ядра из вызовов библиотеки

Графический процессор Coder™ поддерживает библиотеки, оптимизированные для графических процессоров CUDA ®, такие как библиотеки cuBLAS, cuSOLVER, cuFFT, Trust, cuDNN и TensorRT.

  • Библиотека cuBLAS представляет собой реализацию подпрограмм базовой линейной алгебры (BLAS) поверх времени выполнения NVIDIA ® CUDA. Он позволяет получить доступ к вычислительным ресурсам графического процессора NVIDIA .

  • Библиотека cuSOLVER представляет собой высокоуровневый пакет, основанный на библиотеках cuBLAS и cuSPARSE. Он предоставляет полезные LAPACK-подобные функции, такие как общая факторизация матрицы и процедуры треугольного решения для плотных матриц, разреженный решатель наименьших квадратов и решатель собственных значений.

  • Библиотека cuFFT обеспечивает высокопроизводительную реализацию алгоритма быстрого преобразования Фурье (FFT) на графических процессорах NVIDIA. Библиотеки cuBLAS, cuSOLVER и cuFFT являются частью набора инструментов NVIDIA CUDA.

  • Тяга - это библиотека шаблонов C++ для CUDA. Библиотека Trust поставляется с набором инструментов CUDA и позволяет использовать преимущества ускоренных GPU примитивов, таких как сортировка для реализации сложных высокопроизводительных параллельных приложений.

  • Библиотека NVIDIA CUDA Deep Neural Network (cuDNN) - GPU-ускоренная библиотека примитивов для глубоких нейронных сетей. cuDNN обеспечивает высоко настроенные реализации для стандартных подпрограмм, таких как уровни прямой и обратной свертки, объединения, нормализации и активации. NVIDIA TensorRT - это высокопроизводительный оптимизатор выводов глубокого обучения и библиотека времени выполнения. Дополнительные сведения см. в разделах Создание кода для сетей глубокого обучения с помощью cuDNN и Создание кода для сетей глубокого обучения с помощью TensorRT.

Кодер GPU не требует специальной прагматики для генерации вызовов ядра библиотекам. Во время процесса создания кода при выборе параметра Включить cuBLAS в приложении GPU Coder или использовании config_object.GpuConfig.EnableCUBLAS = true свойство в CLI, GPU Coder заменяет некоторые функции вызовами библиотеки cuBLAS. При выборе параметра Включить cuSOLVER в приложении GPU Coder или использовании config_object.GpuConfig.EnableCUSOLVER = true свойство в CLI, GPU Coder заменяет некоторые функции вызовами библиотеки cuSOLVER. Для замены высокоуровневых математических функций кодером графического процессора вызовам библиотеки необходимо выполнить следующие условия:

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

  • Должны быть соблюдены пороговые значения размера Coder™ данных MATLAB ®.

Кодер графического процессора поддерживает замены библиотек cuFFT, cuSOLVER и cuBLAS для функций, перечисленных в таблице. Для функций, не имеющих замен в CUDA, кодер GPU использует переносимые функции MATLAB, отображаемые на графический процессор.

Функция MATLABОписаниеПоддержка кодера MATLAB LAPACKcuBLAS, cuSOLVER, cuFFT, опора тяги

mtimes

Матричное умножение

Да

Да

mldivide (‘\’)

Система решения линейного уравнения Ax=B для x

Да

Да

lu

Факторизация матрицы логической единицы

Да

Да

qr

Ортогонально-треугольное разложение

Да

Неравнодушный

det

Матричный определитель

Да

Да

chol

Холеская факторизация

Да

Да

rcond

Номер ответного условия

Да

Да

linsolve

Система решения линейных уравнений Ax=B

Да

Да

eig

Собственные значения и собственные векторы

Да

Нет

schur

Разложение Шура

Да

Нет

svd

Декомпозиция сингулярных значений

Да

Неравнодушный

fft,fft2,fftn

Быстрое преобразование Фурье

Да

Да

ifft,ifft2,ifftn

Обратное быстрое преобразование Фурье

Да

Да

sort

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

 

Да, использование gpucoder.sort

При выборе параметра Включить cuFFT в приложении GPU Coder или использовании config_object.GpuConfig.EnableCUFFT = true свойство в картах CLI, GPU Coder fft,ifft,fft2,ifft2,fftn.ifftn вызовы функций в коде MATLAB для соответствующих вызовов библиотеки cuFFT. Для 2-D преобразований и выше кодер GPU создает несколько 1-D пакетных преобразований. Эти пакетные преобразования имеют более высокую производительность, чем единичные преобразования. Кодер графического процессора поддерживает только преобразование вне места. Если параметр Enable cuFFT не выбран, кодер графического процессора использует C FFTW библиотеки, если они доступны или генерируют ядра из портативного MATLAB FFT. Поддерживаются типы данных с одинарной и двойной точностью. Входные и выходные данные могут быть вещественными или комплексно-значимыми, но преобразования вещественных значений выполняются быстрее. Библиотека cuFFT поддерживает размеры входных данных, которые обычно задаются как мощность 2 или значение, которое может быть факторизовано в произведение малых простых чисел. В общем, чем меньше основной коэффициент, тем лучше производительность.

Примечание

Использование таких имен библиотек CUDA, как cufft, cublas, и cudnn поскольку имена функций MATLAB приводят к ошибкам генерации кода.

См. также

| | | | |

Связанные темы