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

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

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

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

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

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

  • Библиотека NVIDIA CUDA Deep Neural Network (cuDNN) является ускоренной графическим процессором библиотекой примитивов для глубоких нейронных сетей. cuDNN обеспечивает высоко настроенные реализации для стандартных стандартных программ, таких как прямая и обратная свертка, объединение, нормализация и слои активации. TheNVIDIA 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ОписаниеMATLAB Coder поддержка LAPACKcuBLAS, cuSOLVER, cuFFT, Поддержка Тяги

mtimes

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

Да

Да

mldivide (‘\’)

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

Да

Да

lu

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

Да

Да

qr

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

Да

\partial

det

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

Да

Да

inv

Обращение матриц

Да

Да

chol

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

Да

Да

rcond

Взаимное число обусловленности

Да

Да

linsolve

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

Да

Да

eig

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

Да

Нет

schur

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

Да

Нет

svd

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

Да

\partial

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 вызовам библиотеки. Для 2D преобразований и выше, GPU Coder создает несколько 1D пакетных преобразований. Эти пакетные преобразования имеют более высокую производительность, чем одно преобразования. GPU Coder только поддерживает неуместный преобразования. Если Enable cuFFT не выбран, GPU Coder использует FFTW C библиотеки, где доступный или генерирует ядра от портативного БПФ MATLAB. Поддерживаются и типы данных одинарной и двойной точности. Ввод и вывод может быть действительным, или но преобразования с действительным знаком с комплексным знаком быстрее. библиотека cuFFT поддерживает входные размеры, которые обычно задаются как степень 2 или значение, которое может быть включено в продукт маленьких простых чисел. В целом, чем меньший простой множитель, тем лучше производительность.

Примечание

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

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

| | | | |

Похожие темы