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 поддержка LAPACK | cuBLAS, cuSOLVER, cuFFT, Поддержка Тяги |
---|---|---|---|
| Умножение матриц | Да | Да |
| Решите систему линейного уравнения | Да | Да |
| LU-разложение матрицы | Да | Да |
| Ортогонально-треугольное разложение | Да | \partial |
| Матричный детерминант | Да | Да |
| Матричная инверсия | Да | Да |
| Факторизация Холесского | Да | Да |
| Взаимный номер условия | Да | Да |
| Решите систему линейных уравнений | Да | Да |
| Собственные значения и собственные векторы | Да | Нет |
| Разложение Шура | Да | Нет |
| Сингулярное разложение | Да | \partial |
| Быстрое преобразование Фурье | Да | Да |
| Обратное быстрое преобразование Фурье | Да | Да |
Сортировка массива | Да, использование |
Когда вы выбираете опцию 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 пользуется библиотеками C FFTW
, где доступный или генерирует ядра от портативного БПФ MATLAB. Поддерживаются и типы данных одинарной и двойной точности. Ввод и вывод может быть действительным, или но преобразования с действительным знаком с комплексным знаком быстрее. библиотека cuFFT поддерживает входные размеры, которые обычно задаются как степень 2 или значение, которое может быть включено в продукт маленьких простых чисел. В целом, чем меньший простой множитель, тем лучше производительность.
Используя имена библиотеки CUDA, такие как cufft
, cublas
и cudnn
как имена вашей функции MATLAB приводит к ошибкам генерации кода.
coder.gpu.constantMemory
| coder.gpu.kernel
| coder.gpu.kernelfun
| gpucoder.matrixMatrixKernel
| gpucoder.sort
| gpucoder.stencilKernel