Ядра из библиотечных вызовов

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

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

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

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

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

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

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

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

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

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

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

mtimes

Умножение матрицы

Да

Да

mldivide (‘\’)

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

Да

Да

lu

LU-разложение матрицы

Да

Да

qr

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

Да

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

det

Определитель матрицы

Да

Да

chol

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

Да

Да

rcond

Обратное число обусловленности

Да

Да

linsolve

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

Да

Да

eig

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

Да

Нет

schur

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

Да

Нет

svd

Сингулярное разложение

Да

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

fft,fft2,fftn

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

Да

Да

ifft,ifft2,ifftn

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

Да

Да

sort

Сортировка массива

 

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

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

Примечание

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

См. также

| | | | |

Похожие темы