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 обеспечивает высоко настроенные реализации для стандартных стандартных программ, таких как прямая и обратная свертка, объединение, нормализация и слои активации. 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 | Описание | 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 использует FFTW
C библиотеки, где доступный или генерирует ядра от портативного БПФ MATLAB. Поддерживаются и типы данных одинарной и двойной точности. Ввод и вывод может быть действительным, или но преобразования с действительным знаком с комплексным знаком быстрее. библиотека cuFFT поддерживает входные размеры, которые обычно задаются как степень 2 или значение, которое может быть включено в продукт маленьких простых чисел. В целом, чем меньший простой множитель, тем лучше эффективность.
Примечание
Используя имена библиотеки CUDA, такие как cufft
, cublas
, и cudnn
как имена вашей функции MATLAB приводит к ошибкам генерации кода.
coder.gpu.constantMemory
| coder.gpu.kernel
| coder.gpu.kernelfun
| gpucoder.matrixMatrixKernel
| gpucoder.sort
| gpucoder.stencilKernel