Исполняемый файл ядра на графическом процессоре
A CUDAKernel
объект представляет ядро CUDA, которое может выполняться на графическом процессоре. Вы создаете ядро с помощью кода CU и PTX. Пример создания и использования CUDAKernel
см. раздел «Запуск кода CUDA или PTX на графическом процессоре».
existsOnGPU | Определите, доступен ли gpuArray или CUDAKernel на графическом процессоре |
feval | Оценка ядра на графическом процессоре |
setConstantMemory | Установите некоторую постоянную память на графическом процессоре |
A CUDAKernel
объект имеет следующие свойства:
Имя свойства | Описание |
---|---|
ThreadBlockSize | Размер блока потоков в ядре. Это может быть целочисленный вектор длины 1, 2 или 3 (поскольку блоки потоков могут быть до 3-мерными). Продукт элементов ThreadBlockSize не должен превышать MaxThreadsPerBlock для этого ядра, и нет элемента ThreadBlockSize может превысить соответствующий элемент свойства MaxThreadBlockSize . |
MaxThreadsPerBlock | Максимальное количество потоков, допустимое в одном блоке для этого ядра CUDA. Продукт элементов ThreadBlockSize не должно превышать это значение. |
GridSize | Размер сетки (эффективно количество блоков резьбы, которые будут запускаться независимо графическим процессором). Это целочисленный вектор длины 3. Ни один из элементов этого вектора не может превысить соответствующий элемент в векторе MaxGridSize свойство GPUDevice объект. |
SharedMemorySize | Объем динамической общей памяти (в байтах), который может использовать каждый блок потока. Каждый блок потока имеет доступную область общей памяти. Размер этой области ограничен в текущих картах ~ 16 кБ и разделяется с регистрами на мультипроцессорах. Как и во всей памяти, это нужно выделить до запуска ядра. Также распространено, чтобы размер этой общей области памяти был привязан к размеру блока потоков. Установка этого значения в ядре гарантирует, что каждый поток в блоке может получить доступ к этой доступной области общей памяти . |
EntryPoint | (только для чтения) Вектор символов, содержащий фактическое имя точки входа в коде PTX, который будет вызываться этим ядром. Пример может выглядеть следующим образом '_Z13returnPointerPKfPy' . |
MaxNumLHSArguments | (только для чтения) Максимальное количество левой стороны аргументов, поддерживаемых этим ядром. Это не может быть больше, чем количество аргументов правой стороны, и, если какие-либо входы являются постоянными или скалярными, это будет меньше. |
NumRHSArguments | (только для чтения) Необходимое количество аргументов правой стороны, необходимых для вызова этого ядра. Все входы должны задавать скалярное значение входного сигнала, элементы для вектора входного сигнала или размер выходного аргумента. |
ArgumentTypes | (только для чтения) Массив ячеек из символьных векторов, той же длины, что и NumRHSArguments . Каждый из векторов символов указывает, что ожидаемый тип MATLAB для этого входа (числовой тип, такой как uint8 , single , или double далее следует слово scalar или vector указать, передаем ли мы ссылку или значение). В сложение, если этот аргумент является только входом в ядро, он префиксируется in ; и если это вход/выход, то он префиксируется inout . Это позволяет вам решить, как эффективно вызвать ядро как с массивами MATLAB, так и с gpuArray, и увидеть, какие из входов ядра рассматриваются как выходы. |
gpuArray
| GPUDevice
| parallel.gpu.CUDAKernel