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