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 CODER | cuBLAS, cuSOLVER, cuFFT, поддержка тяги |
---|---|---|---|
| Умножение матрицы | Да | Да |
| Решает систему линейного уравнения | Да | Да |
| LU-разложение матрицы | Да | Да |
| Ортогонально-треугольное разложение | Да | Неравнодушный |
| Определитель матрицы | Да | Да |
| Факторизация Холесского | Да | Да |
| Обратное число обусловленности | Да | Да |
| Решает систему линейных уравнений | Да | Да |
| Собственные значения и собственные векторы | Да | Нет |
| Разложение Шура | Да | Нет |
| Сингулярное разложение | Да | Неравнодушный |
| Быстрое преобразование Фурье | Да | Да |
| Обратное быстрое преобразование Фурье | Да | Да |
Сортировка массива | Да, использование |
Когда вы выбираете опцию 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 приводят к ошибкам генерации кода.
coder.gpu.constantMemory
| coder.gpu.kernel
| coder.gpu.kernelfun
| gpucoder.matrixMatrixKernel
| gpucoder.sort
| gpucoder.stencilKernel