Параметры конфигурации для генерации кода CUDA из кода MATLAB с GPU Coder
Объект coder.gpuConfig
содержит параметры конфигурации, которые codegen
использует для генерации CUDA® MEX, статической библиотеки, динамически подключаемой библиотеки или исполняемой программы с GPU Coder™. Передайте объект функции codegen
при помощи опции -config
.
cfg = coder.gpuConfig(build_type)
cfg = coder.gpuConfig(build_type,'ecoder',false)
cfg = coder.gpuConfig(build_type,'ecoder',true)
cfg = coder.gpuConfig(
создает объект настройки генерации кода для заданного типа сборки, который может быть MEX CUDA, статической библиотекой, динамически подключаемой библиотекой или исполняемой программой. Если продукт Embedded Coder® установлен, он создает объект build_type
)coder.EmbeddedCodeConfig
для статической библиотеки, динамической библиотеки или исполняемых типов сборки.
cfg = coder.gpuConfig(
создает объект настройки генерации кода сгенерировать build_type
,'ecoder',false)'lib'
CUDA, 'dll'
или 'exe'
вывод, даже если продукт Embedded Coder установлен.
cfg = coder.gpuConfig(
создает объект настройки build_type
,'ecoder',true)coder.EmbeddedCodeConfig
, даже если продукт Embedded Coder не установлен. Однако генерация кода, использующая объект coder.EmbeddedCodeConfig
, требует лицензии Embedded Coder.
build_type
— Выведите, чтобы создать из сгенерированного кода C/C++ CUDA'MEX'
| 'LIB'
| 'DLL'
| 'EXE'
Выведите, чтобы создать из сгенерированного кода C/C++ CUDA, заданного как одно из значений в этой таблице.
Значение | Описание |
---|---|
'MEX' | MEX CUDA |
'LIB' | Статическая библиотека |
'DLL' | Динамически подключаемая библиотека |
'EXE' | Исполняемая программа |
Enabled
— Управляйте генерацией кода графического процессораtrue
(значение по умолчанию) | false
Управляйте генерацией CUDA (*.cu) файлы при помощи одного из значений в этой таблице.
Значение | Описание |
---|---|
true | Это значение является значением по умолчанию. Включает генерацию кода CUDA. |
false | Отключает генерацию кода CUDA. |
Пример: cfg.GpuConfig.Enabled = true
MallocMode
— Выделение памяти графического процессора'Discrete'
(значение по умолчанию) | 'Unified'
Режим (malloc
) выделения памяти, который будет использоваться в сгенерированном коде CUDA, заданном как одно из значений в этой таблице.
Значение | Описание |
---|---|
'Discrete' | Это значение является значением по умолчанию. Сгенерированный код использует API |
'Unified' | Сгенерированный код использует API |
Для получения дополнительной информации смотрите Дискретные и Режимы автоматического управления.
Пример: cfg.GpuConfig.MallocMode = 'Discrete'
KernelNamePrefix
— Пользовательские префиксы имени ядраЗадайте пользовательский префикс имени для всех ядер в сгенерированном коде. Например, использование значения 'CUDA_'
создает ядра с именами CUDA_kernel1
, CUDA_kernel2
, и так далее. Если никакое имя не обеспечивается, GPU Coder предварительно ожидает имя ядра с именем функции точки входа. Имена ядра могут содержать прописные буквы, строчные буквы, цифры 0-9 и символ подчеркивания _. GPU Coder удаляет неподдерживаемые символы из имен ядра и добавляет alpha
к префиксам, которые не начинаются с алфавитной буквы.
Пример: cfg.GpuConfig.KernelNamePrefix = 'myKernel'
EnableCUBLAS
— Use cuBLAS
true
(значение по умолчанию) | false
Замена математической функции вызывает с
вызовами библиотеки NVIDIA® cuBLAS
, заданными как одно из значений в этой таблице.
Значение | Описание |
---|---|
true | Это значение является значением по умолчанию. Позволяет GPU Coder заменять соответствующие вызовы математической функции на вызовы библиотеки |
false | Отключите использование библиотеки |
Для получения дополнительной информации смотрите Ядра от Вызовов Библиотеки.
Пример: cfg.GpuConfig.EnableCUBLAS = true
EnableCUSOLVER
— Use cuSOLVER
true
(значение по умолчанию) | false
Замена математической функции вызывает с вызовами библиотеки NVIDIA cuSOLVER
, заданными как одно из значений в этой таблице.
Значение | Описание |
---|---|
true | Это значение является значением по умолчанию. Позволяет GPU Coder заменять соответствующие вызовы математической функции на вызовы библиотеки |
false | Отключите использование библиотеки |
Для получения дополнительной информации смотрите Ядра от Вызовов Библиотеки.
Пример: cfg.GpuConfig.EnableCUSOLVER = true
EnableCUFFT
— Use cuFFT
true
(значение по умолчанию) | false
Замена вызовов функции fft
с вызовами библиотеки NVIDIA cuFFT
, заданными как одно из значений в этой таблице.
Значение | Описание |
---|---|
true | Это значение является значением по умолчанию. Позволяет GPU Coder заменять соответствующие вызовы |
false | Отключает использование библиотеки |
Для получения дополнительной информации смотрите Ядра от Вызовов Библиотеки.
Пример: cfg.GpuConfig.EnableCUFFT = true
Benchmarking
— Добавьте сравнительное тестирование в сгенерированный кодfalse
(значение по умолчанию) | true
Управляйте сложением сравнительного тестирования кода к сгенерированному коду CUDA при помощи одного из значений в этой таблице.
Значение | Описание |
---|---|
false | Это значение является значением по умолчанию. Сгенерированный код CUDA не содержит функциональность сравнительного тестирования. |
true | Генерирует код CUDA со сравнительным тестированием функциональности. Эта опция использует API CUDA, такие как |
Пример: cfg.GpuConfig.Benchmarking = true
SafeBuild
— Проверка ошибок в сгенерированном кодеfalse
(значение по умолчанию) | true
Добавьте функциональность проверки ошибок в сгенерированный код CUDA при помощи одного из значений в этой таблице.
Значение | Описание |
---|---|
false | Это значение является значением по умолчанию. Сгенерированный код CUDA не содержит функциональность проверки ошибок. |
true | Генерирует код с проверкой ошибок на вызовы API CUDA и вызовы ядра. |
Пример: cfg.GpuConfig.SafeBuild = true
ComputeCapability
— Минимум вычисляет возможность генерации кода'3.5'
(значение по умолчанию) | '3.2'
| '3.7'
| '5.0'
| '5.2'
| '5.3'
| '6.0'
| '6.1'
| '6.2'
| '7.0'
| '7.1'
| '7.2'
Выбор минимум вычисляет возможность генерации кода. Вычислить возможность идентифицирует функции, поддерживавшие оборудованием графического процессора, и используется приложениями во время выполнения, чтобы определить, который показывает оборудование, инструкции доступны на существующем графическом процессоре. Если вы задаете пользовательский, вычисляют возможность, GPU Coder игнорирует эту установку.
Пример: cfg.GpuConfig.ComputeCapability = '6.1'
CustomComputeCapability
— Управляйте генерацией кода графического процессора''
(значение по умолчанию) | вектор символовЗадайте имя NVIDIA виртуальная архитектура графического процессора, для которой должны быть скомпилированы файлы входа CUDA.
Например, чтобы задать виртуальный тип архитектуры -arch=compute_50
. Можно задать действительную архитектуру с помощью -arch=sm_50
. Для получения дополнительной информации см. Опции для Регулирования темы Генерации кода графического процессора в документации инструментария CUDA.
Пример: cfg.GpuConfig.CustomComputeCapability = '-arch=compute_50'
CompilerFlags
— Дополнительные флаги к компилятору графического процессора''
(значение по умолчанию) | character vector
Передайте дополнительные флаги компилятору графического процессора. Например, --fmad=false
сообщает, что компилятор nvcc
, чтобы отключить сокращение с плавающей точкой умножается и добавляет к синглу, С плавающей точкой, Умножаются - Добавляет инструкция (FMAD).
Для подобных параметров компилятора NVIDIA смотрите тему на Опциях Команды NVCC в документации инструментария CUDA.
Пример: cfg.GpuConfig.CompilerFlags = '--fmad=false'
StackLimitPerThread
— Сложите предел на поток графического процессора1024
(значение по умолчанию) | integer
Задайте максимальный предел стека на поток графического процессора как целочисленное значение.
Пример: cfg.GpuConfig.StackLimitPerThread = 1024
MallocThreshold
— Порог Malloc200
(значение по умолчанию) | integer
Задайте размер, выше которого частные переменные выделяются на куче вместо стека как целочисленное значение.
Пример: cfg.GpuConfig.MallocThreshold = 256
SelectCudaDevice
— Выбор устройства CUDA-1
(значение по умолчанию) | deviceID
Во много среде графического процессора, такой как платформы Диска NVIDIA, задайте устройство CUDA, чтобы предназначаться.
Пример: cfg.GpuConfig.SelectCudaDevice = <DeviceID>
Сгенерируйте MEX-функцию CUDA от функции MATLAB, которая подходит для генерации кода графического процессора. Кроме того, включите отчет генерации кода.
Запишите функции MATLAB VecAdd
, который выполняет векторное сложение входных параметров A
и B
.
function [C] = VecAdd(A,B) %#codegen C = coder.nullcopy(zeros(size(A))); coder.gpu.kernelfun(); C = A + B; end
Создайте объект настройки генерации кода сгенерировать MEX-функцию.
cfg = coder.gpuConfig('mex');
Включите отчет генерации кода.
cfg.GpuConfig.EnableCUBLAS = true; cfg.GenerateReport = true;
Сгенерируйте MEX-функцию в текущей папке, задающей объект настройки использование опции -config
.
% Generate a MEX function and code generation report codegen -config cfg -args {zeros(512,512,'double'),zeros(512,512,'double')} VecAdd
codegen
| coder.CodeConfig
| coder.EmbeddedCodeConfig
| coder.MexCodeConfig
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.