Готовый перевод PyCUDA documentation / Документация PyCUDA: Device Interface Reference Documentation http://documen.tician.de/pycuda/driver.html

Справочная документация по интерфейсу устройства

Запрос версии

pycuda.VERSION

Передает численную версию PyCUDA, как кортеж целых чисел переменной длины. Дает возможность легко проверить версию например так VERSION >= (0, 93).

Добавлено в PyCUDA 0.93.

pycuda.VERSION_STATUS

Текстовая строка, как “rc4” или “beta” определяет статус выпуска.

Новая, в версии 0.93.

pycuda.VERSION_TEXT

Полное имя релиза (такое как “0.93rc4”) в форме строки.

Новое в версии 0.93.

Сообщения об ошибках

exception pycuda.driver.Error

Базовый класс всех ошибок PyCuda.

exception pycuda.driver.CompileError

Передается, когда компиляция SourceModule не удается.

msg

Новая, в версии 0.94.

stdout

Новая, в версии 0.94.

stderr

Новая, в версии 0.94.

command_line

Новая, в версии 0.94.

exception pycuda.driver.MemoryError

Передается, когда mem_alloc() или связанный с ней функционал не работает.

исключение pycuda.driver.LogicError

Передается, когда PyCuda сталкивается с ситуацией, когда есть вероятность, что программист сделал ошибку. LogicErrors не зависят от внешних обстоятельств определенных run-time средой.

Пример: CUDA использовалась до того, как была инициализирована.

исключение pycuda.driver.LaunchError

Передается, когда не удается вызов ядра. (Отметим, что о нем будет часто сообщаться при помощи следующего вызова, после действительного вызова ядра. )

исключение pycuda.driver.RuntimeError

Передается, когда возникает непридвиденная ошибка во времени выполнения, которая вероятно происходит из-за ошибки программиста.

Пример: Файл не был найден.

Константы

класс pycuda.driver.ctx_flags

Флаги для Device.make_context().Только CUDA 2.0 и выше.

SCHED_AUTO

Если здесь больше содержимого, чем процессоров, выходов, и вращения в другую сторону в то время как куда ждет пока пока вызовы завершаться.

SCHED_SPIN

Крутится, когда ждет, пока закончатся вызовы CUDA.

SCHED_YIELD

Выходит в другие потоки, пока ждет завершения вызовов CUDA.

SCHED_MASK

Маска действительных флагов планирования в этом битовое поле.

BLOCKING_SYNC

Использование блоковой синхронизации. CUDA 2.2 или новее.

MAP_HOST

Поддержка скрепленных отображенных выделений памяти(mapped pinned allocations). CUDA 2.2 или новее.

LMEM_RESIZE_TO_MAX

Поддержка местных выделений памяти после загрузки. CUDA 3.2 или новее. По слухам добавлена, чтобы уменьшить расходы ресурсов на запуск операций перегрузки Ферми.

Новый в версии 2011.1.

FLAGS_MASK

Маска правильных флагов в этом битовом поле.

Класс pycuda.driver.event_flags

Флаги для событий.CUDA 2.2 или новее.

DEFAULT

BLOCKING_SYNC

DISABLE_TIMING

CUDA 3.2 или новее.

Новые в версии 0.94.

класс pycuda.driver.device_attribute

MAX_THREADS_PER_BLOCK

MAX_BLOCK_DIM_X

MAX_BLOCK_DIM_Y

MAX_BLOCK_DIM_Z

MAX_GRID_DIM_X

MAX_GRID_DIM_Y

MAX_GRID_DIM_Z

TOTAL_CONSTANT_MEMORY

WARP_SIZE

MAX_PITCH

CLOCK_RATE

TEXTURE_ALIGNMENT

GPU_OVERLAP

MULTIPROCESSOR_COUNT

Только CUDA 2.0 и выше.

SHARED_MEMORY_PER_BLOCK

Устаревший на CUDA 2.0. Смотрите ниже команду для замены.

MAX_SHARED_MEMORY_PER_BLOCK

Только CUDA 2.0 и выше.

REGISTERS_PER_BLOCK

Устаревший на CUDA 2.0. Смотрите ниже команду для замены.

MAX_REGISTERS_PER_BLOCK

CUDA 2.0 и выше.

KERNEL_EXEC_TIMEOUT

CUDA 2.2 и выше.

INTEGRATED

CUDA 2.2 и выше.

CAN_MAP_HOST_MEMORY

CUDA 2.2 и выше.

COMPUTE_MODE

CUDA 2.2 и выше. Смотрите compute_mode.(режим вычисления)

MAXIMUM_TEXTURE1D_WIDTH
MAXIMUM_TEXTURE2D_WIDTH
MAXIMUM_TEXTURE2D_HEIGHT
MAXIMUM_TEXTURE3D_WIDTH
MAXIMUM_TEXTURE3D_HEIGHT
MAXIMUM_TEXTURE3D_DEPTH
MAXIMUM_TEXTURE2D_ARRAY_WIDTH
MAXIMUM_TEXTURE2D_ARRAY_HEIGHT
MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES

CUDA 3.0 и выше.

Новые в версии 0.94.

MAXIMUM_TEXTURE2D_LAYERED_WIDTH
MAXIMUM_TEXTURE2D_LAYERED_HEIGHT
MAXIMUM_TEXTURE2D_LAYERED_LAYERS
MAXIMUM_TEXTURE1D_LAYERED_WIDTH
MAXIMUM_TEXTURE1D_LAYERED_LAYERS

CUDA 4.0 и выше.

Новые в версии 2011.1.

SURFACE_ALIGNMENT

CUDA 3.0(post-beta) и выше.

Новый в версии 0.94.

CONCURRENT_KERNELS

CUDA 3.0(post-beta) и выше.

Новый в версии 0.94.

ECC_ENABLED

CUDA 3.0(post-beta) и выше.

Новый в версии 0.94.

PCI_BUS_ID

CUDA 3.2 и выше.

Новый в версии 0.94.

PCI_DEVICE_ID

CUDA 3.2 и выше.

Новый в версии 0.94.

TCC_DRIVER

CUDA 3.2 и выше.

Новый в версии 0.94.

MEMORY_CLOCK_RATE
GLOBAL_MEMORY_BUS_WIDTH
L2_CACHE_SIZE
MAX_THREADS_PER_MULTIPROCESSOR
ASYNC_ENGINE_COUNT
UNIFIED_ADDRESSING

CUDA 4.0 и выше.

Новые в версии 2011.1.

класс pycuda.driver.pointer_attribute

CONTEXT
MEMORY_TYPE
DEVICE_POINTER
HOST_POINTER

CUDA 4.0 и выше.

Новый в версии 2011.1.

класс pycuda.driver.profiler_output_mode

KEY_VALUE_PAIR
CSV

CUDA 4.0 и выше.

Новый в версии 2011.1.

класс pycuda.driver.function_attribute

Флаги для Function.get_attribute(). CUDA 2.2 или новее.

MAX_THREADS_PER_BLOCK

SHARED_SIZE_BYTES

CONST_SIZE_BYTES

LOCAL_SIZE_BYTES

NUM_REGS

PTX_VERSION

CUDA 3.0(post-beta) и выше.

Новый в версии 0.94.

BINARY_VERSION

CUDA 3.0(post-beta) и выше.

Новый в версии 0.94.

MAX

класс pycuda.driver.func_cache

Смотрите функцию .set_cache_config(). CUDA 3.0 и новее.

Новый в версии 0.94.

PREFER_NONE

PREFER_SHARED

PREFER_L1

класс pycuda.driver.array_format

UNSIGNED_INT8

UNSIGNED_INT16

UNSIGNED_INT32

SIGNED_INT8

SIGNED_INT16

SIGNED_INT32

HALF

FLOAT

класс pycuda.driver.array3d_flags

2DARRAY

CUDA 3.0 и выше. Устаревший – используйте LAYERED.

Новый в версии 0.94.

LAYERED

CUDA 4.0 и выше.

Новый в версии 2011.1.

класс pycuda.driver.address_mode

WRAP

CLAMP

MIRROR

BORDER

CUDA 3.2 и выше.

Новый в версии 0.94.

класс pycuda.driver.filter_mode

POINT

LINEAR

класс pycuda.driver.memory_type

HOST

DEVICE

ARRAY

класс pycuda.driver.compute_mode

CUDA 2.2 или новее.

DEFAULT

EXCLUSIVE

PROHIBITED

EXCLUSIVE_PROCESS

CUDA 4.0 и выше.

Новый в версии 2011.1.

класс pycuda.driver.jit_option

CUDA 2.1 и новее.

MAX_REGISTERS

THREADS_PER_BLOCK

WALL_TIME

INFO_LOG_BUFFER

INFO_LOG_BUFFER_SIZE_BYTES

ERROR_LOG_BUFFER

ERROR_LOG_BUFFER_SIZE_BYTES

OPTIMIZATION_LEVEL

TARGET_FROM_CUCONTEXT

TARGET

FALLBACK_STRATEGY

класс pycuda.driver.jit_target

CUDA 2.1 и новее.

COMPUTE_10

COMPUTE_11

COMPUTE_12

COMPUTE_13

COMPUTE_20

CUDA 3.0 и выше.

Новый в версии 0.94.

COMPUTE_21

CUDA 3.2 и выше.

Новый в версии 0.94.

класс pycuda.driver.jit_fallback

CUDA 2.1 и новее.

PREFER_PTX

PREFER_BINARY

класс pycuda.driver.host_alloc_flags

Флаги, которые будут использоваться для выделения Pagelocked памяти хоста.

PORTABLE

DEVICEMAP

WRITECOMBINED

класс pycuda.driver.mem_host_register_flags

PORTABLE

DEVICEMAP

CUDA 4.0 и новее.

Новый в версии 2011.1.

класс pycuda.driver.limit

Пределы значений для Context.get_limit() и Context.set_limit().

CUDA 3.1 и новее.

Новый в версии 0.94.

STACK_SIZE

PRINTF_FIFO_SIZE

MALLOC_HEAP_SIZE

CUDA 3.2 и выше.

Относящиеся к графике константы

класс pycuda.driver.graphics_register_flags

NONE

READ_ONLY

WRITE_DISCARD

SURFACE_LDST

CUDA 4.0 и выше.

Новый в версии 2011.1

класс pycuda.driver.array_cubemap_face

POSITIVE_X NEGATIVE_X
POSITIVE_Y NEGATIVE_Y
POSITIVE_Z NEGATIVE_Z

CUDA 3.2 и выше.

Новый в версии 2011.1.

Устройства и Контексты

pycuda.driver.get_version()

Получает версию CUDA, с которой была скомпилирована PyCuda. Возвращает 3-кортежа(или кортеж из трех) целых чисел (major, minor, revision).

pycuda.driver.get_driver_version()

Получает версию CUDA драйвера поверх которого запущена PyCUDA. Возвращает целое число, в котором содержится номер версии.

pycuda.driver.init(flags=0)

Инициализация CUDA.

Предупреждение

Инициализацию нужно вызывать до любой другой функции в этом модуле.

Смотрите также pycuda.autoinit.

класс pycuda.driver.Device(число)

Дескриптор номера устройства CUDA. Смотрите также pycuda.autoinit.

static count()

Возвращает количество найденных карт(устройств) CUDA.

name()

Возвращает название карты CUDA.

compute_cabability()

Возвращает двухместных кортеж, показывающий версию вычислительной совместимости этого устройства.

total_memory()

Возвращает общее количество памяти на устройстве в байтах.

get_attribute(attr)

Возвращает (численное)
значения атрибута attr, которой может быть одним из значений device_attribute.

Все значения device_attribute можно также прямо читать как (в нижнем регистре) атрибуты самого объекта Device, например dev.clock_rate.

get_attributes()

Возвращает все атрибуты прибора в словоре(dict), с ключами из device_attribute.

make_context(flags=ctx_flags.SCHED_AUTO)

Сделайте контекст на этом устройстве, с флагами взятыми из значений ctx_flags.

Также делает заново созданный контекст - текущий контекст.

can_access_peer(dev)

CUDA 4.0 или новее.

Новый в версии 2011.1.

__hash__()

__eq__()

__ne__()

класс pycuda.driver.Context

Эквивалент процессам UNIX для вычислительных устройств. Создает экзампляры этого класса, используя Device.make_context(). Смотрите также pycuda.autoinit.

detach()

Уменьшает число ссылок на контекст. Если число ссылок станет нулем, контекст удалится.

push()

Делает себе активный контекст, выдавливая его на вершину стека контекста. Только CUDA 2.0 или выше.

static pop()

Убирает любой контекст из вершины стека контекста, деактивируя его. Только CUDA 2.0 или выше.

static get_device()

Убирает устройство, над которым работает текущий контекст.

static synchronize()

Ждет, пока все действия в текущем контексте прекращаются, затем передается.

static set_limit(limit, value)

Смотрите ограничения возможных значений предела.

CUDA 3.1 и выше.

Новый в версии 0.94.

static get_limit(limit)

Смотрите предел возможных значений предела.

CUDA 3.1 и выше.

Новый в версии 0.94.

static set_cache_config(cc)

Смотрите func_cache для возможных значения cc.

CUDA 3.2 и выше.

Новый в версии 0.94.

static get_cache_config()

Возвращает значение из func_cache.

CUDA 3.2 и выше.

Новый в версии 0.94.

get_api_version()

Возвращает целое число - версию API.

CUDA 3.2 и выше.

Новый в версии 0.94.

enable_peer_access(peer, flags=0)

CUDA 4.0 и выше.

Новый в версии 2011.1.

disable_peer_access(peer, flags=0)

CUDA 4.0 и выше.

Новый в версии 2011.1.

Параллелизм и Потоки

class pycuda.driver.Stream(flags=0)

Дескриптор для очереди операций, которые производятся по порядку.

synchronize()

Ждет, чтобы все активности в этом потоке прекратились, затем возвращается.

is_done()

Возвращает истину, если все операции в очереди завершены.

wait_for_event(evt)

Ставит в очередь ожидание для данного экземпляра события Event .

CUDA 3.2 и выше.

Новая в версии 2011.1.

class pycuda.driver.Event(flags=0)

Событие это временный ‘маркер’ в поток Stream, который позволяет взять время между двумя событиями - такими как время необходимое для выполнения ядра. Время события записывается когда поток Stream заканчивает все задачи, стоящие в очереди до вызова record().

Смотрите event_flags для значений параметров флагов.

record(stream=None)

Вставляет точку записи для самого себя(self) в поток Stream. Возвращает себя.

synchronize()

Ждите пока поток выполнения устройства достигнет этого события. Возвращает себя.

query()

Возвращает значение True, если поток выполниния устройства достиг этого события.

time_since(event)

Возвращает время в миллисекундах, которой прошло между собой(self) и событием. Используйте этот метод как end.time_since(start). Отметим, что этот метод не будет работать и завершится с ошибкой "invalid value", если одно из событий не будет до сих пор достигнуто. Используйте synchronize(), чтобы удостоверится, что это событие достигнуто.

time_till(event)

Возвращает время в миллисекундах, которое прошло между событием и собой(self). Используйте этот метод, как end.time_since(start). Отметим, что этот метод не будет работать и завершится с ошибкой "invalid value", если одно из событий не будет до сих пор достигнуто. Используйте synchronize(), чтобы удостоверится, что это событие достигнуто.

Память
Глобальная Память Устройства

pycuda.driver.mem_get_info()

Возвращает кортеж (free, total), показывающий свободную память и общее ее количество в текущем контексте, в байтах.

pycuda.driver.mem_alloc(bytes)

Возвращает объект DeviceAllocation, представляющий линейную часть памяти устройства.

pycuda.driver.to_device(buffer)

Выделеят достаточно памяти устройства в буфер, который приклеивается к интерфейсу буфера Python. Копирует контексты буфера на устройство. Возвращает объект DeviceAllocation вновь выделенную память.

pycuda.driver.from_device(devptr, shape, dtype, order="C")

Делает новый numpy.ndarray из данных на которые указывает devptr на GPU, интерпретируя их, как будто он имеют одну размерность (shape), тип данных (dtype) и порядок (order).

pycuda.driver.from_device_like(devptr, other_ary)

Создает новый numpy.ndarray из данных devptr на GPU, интерпретирую его так, как будто у него тот же размерность, тип данных и порядок как и у other_ary.

pycuda.driver.mem_alloc_pitch(width, height, access_size)

Выделяет линейную часть памяти устройства, по крайней мере длину байтов bytes_wide и высоту столбцов rows_high, к которым можно получить доступ, используя тип данных размера access_size в функции объединения.

Возвращает кортеж (dev_alloc, actual_pitch) передавая DeviceAllocation иthe текущую длину каждого столбца в байтах.

Класс pycuda.driver.DeviceAllocation

Объект представляющий выделение линейной памяти устройства. Когда этот объект удаляется, он ассоциируемая с ним память устройства освобождается.

Объекты этого типа может быть приведен в целое число для получения линейного индекса в памяти этого контекста.

free()

Освобождает память устройства, которая держится, теперь напротив, когда объект становится недостижимым. Любое его дальнейшее использование это ошибка, которая будет приводить к непредсказуемому(неопределенному) поведению.

Класс pycuda.driver.PointerHolderBase

Базовый класс, который облегчает приведение к указателю внутри PyCUDA. Это позволяет пользователю конструировать специальные типы указатели, которые можно выделить с помощью средств вне PyCUDA, но все еще нужно, чтобы были объекты управляющие RAII. Пользователю нужно поддерживать один метод для облегчения приведения указателей:

get_pointer()

Возвращается к указателю, инкапсулируемому в аргументе self.

Блокированная по страницам (Pagelocked) память хоста
Выделение блокировки по страницам

pycuda.driver.pagelocked_empty(shape, dtype, order="C", mem_flags=0)

Выделение у блокированного по страницам массива numpy.ndarray параметров shape, dtype и order.

mem_flags может принять одно из значений в host_alloc_flags. Он может быть только не нулевым в CUDA 2.2 и новее.

Чтобы понять другие параметры, пожалуйста сошлитесь на документацию numpy.

pycuda.driver.pagelocked_zeros(shape, dtype, order="C", mem_flags=0)

Как pagelocked_empty(), но инициализуется нулем.

pycuda.driver.pagelocked_empty_like(array, mem_flags=0)

pycuda.driver.pagelocked_zeros_like(array, mem_flags=0)

Экземпляры numpy.ndarray, вовращаетмые этими функциями, имеют базу атрибута, которая ссылается на тип объекта.

класс pycuda.driver.PagelockedHostAllocation

Наследуется от HostPointer.

Объект представляющий собой выделения блокированной по страницам(Pagelocked) памяти хоста. Когда объект уничтожается, ассоциированная с ним память освобождается.

free()

Освобождает память, которая сейчас держится, напротив, когда объекты становятся недостижимыми. Любое дальнейшее использование этого объекта (и ассоциированного массива numpy) - это ошибка, которая ведет к непредсказуемому(неопределенному поведению).

get_flags()

Возвращает битовое поле значений из host_alloc_flags.

Доступно только в CUDA 3.2 и новее.

Новая в версии 0.94.

Класс pycuda.driver.HostAllocation

Устаревшее имя PagelockedHostAllocation.

Выравненная Память Хоста

pycuda.driver.aligned_empty(shape, dtype, order="C", alignment=4096)

Выделяет numpy.ndarray с параметрами shape, dtype и order, и данными выравнеными по байтам выравнивания.

Для понимания других параметров, пожалуйста сошлитесь на документацию numpy.

Новая в версии 2011.1

pycuda.driver.aligned_zeros(shape, dtype, order="C", alignment=4096)

Как aligned_empty(), но с инициализацией нулем.

Новая в версии 2011.1.

pycuda.driver.aligned_empty_like(array, alignment=4096)

Новая в версии 2011.1.

pycuda.driver.aligned_zeros_like(array, alignment=4096)

Новая в версии 2011.1.

Экземпляры numpy.ndarray возвращаются этими функциями и имеют базу атрибута, которая ссылается на объект типа.

Класс pycuda.driver.AlignedHostAllocation

Наследуется от HostPointer.

Объект, представляющий выделение выравненной памяти хоста.

free()

Освобождает память, которая сейчас держится, вместо освобождения в то время, когда объекты становятся недостижимыми. Любое дальнейшие использование этого объекта (или его ассоциированный массив numpy) это ошибка, которая ведет к непредсказуемому поведению.

Post-Allocation Pagelocking
Блокировка страниц после выделения

pycuda.driver.register_host_memory(ary, flags=0)

Возвращает numpy.ndarray, который делится памятью с ary. Эта память будет постранично заблокированной, пока не вернется значение, что эта функция жива.

Возвращение базового атрибута массива содержит экземпляр RegisteredHostMemory, чьи базовые атрибуты напротив содержат ary.

CUDA 4.0 или новее.

Данные адреса ary и его размер должны быть выравнены по размеру страницы. Одним из способов для достижения этого является использование функции в выравненной памяти хоста.

Новая в версии 2011.1.

Класс pycuda.driver.RegisteredHostMemory

Наследуется от HostPointer.

CUDA 4.0 или новее.

Новая в версии 2011.1.

unregister()

Убирает блокировку страницы в памяти хоста, которую держит этот экземпляр.
Отметим, что он не освобождает эту память, а только освобождает от блокировки страницы.

base

Содержит объект Python из которого конструируется этот экземпляр.

Класс pycuda.driver.HostPointer

Представляет блокированный по страницам указатель хоста.

get_device_pointer()

Возвращает указатель устройства, показывающий адрес, которому эта область памяти соответствует в адресном пространстве этого устройства.

Доступно только в CUDA 2.2 и новее.

Массивы и Текстуры

класс pycuda.driver.ArrayDescriptor

width

height

format

Значение типа array_format.

num_channels

класс pycuda.driver.ArrayDescriptor3D

width

height

depth

format

Значение типа array_format. Только CUDA 2.0 и выше .

num_channels

класс pycuda.driver.Array(дескриптор)

2D или 3D блокировка памяти, к которой можно получить доступ только через текстурные ссылки.

Дескриптор может быть только типа ArrayDescriptor или ArrayDescriptor3D.

free()

Освобождает массив и память устройства в данный момент времени, вместо когда этот объект становится недостижимым. Любое дальнейшее использование этого объекта - это ошибка, которая будет приводить к непредсказуемому поведению.

get_descriptor()

Возвращает объект ArrayDescriptor для этого двумерного массива, похожий на тот объект, который использовался, чтобы его сделать.

get_descriptor_3d()

Возвращает объект ArrayDescriptor3D для этого трехмерного массива, похожий на тот объект, который использовался. чтобы его сделать. Только CUDA 2.0 и выше .

класс pycuda.driver.SurfaceReference

Замечание

Экземпляры этого класса можно создать только через Module.get_surfref().

CUDA 3.1 и выше.

Новый в версии 0.94.

set_array(array)

Связывает self массивом Array.

Столько, сколько этот массив остается связанным к ссылке на эту текстуру, он не будет освобождаться - эта текстура будет хранить ссылку на этот массив.

get_array()

Возвращается на массив Array, с которым связан объект self.

Замечание

Это будет отличный объект, который передается set_array(), но при сравнении он будет равным.

Класс pycuda.driver.TextureReference

Дескриптор привязки и линейной памяти, и массива Array к единице текстуры.

set_array(array)

Связывает self с массивом Array.

Столько, сколько массив остается связанным с этой текстурной ссылкой, он не будет освобожден - текстурная ссылка сохраняет ссылку на массив.

set_address(devptr, bytes, allow_offset=False)

Связывает self с куском линейной памяти, начиная c целочисленного адреса devptr, охватывающим ряд байтов. Благодаря требованиям к выравниванию, эффективный адрес связанной текстуры может отличаться от того адреса, которую запрашивается при помощи смещения. Этот метод возвращает смещение в байтах. Если значение allow_offset является False, ненулевое значение этого смещения приведет к исключению, которое выведется интерпретатором.

В отличие от объектов Array, не предоставляется поддержки для связывания линейной памяти с текстурными ссылками.

set_address_2d(devptr, descr, pitch)

Связывает self как двумерную текстуру с куском глобальной памяти в devptr. Отступ от-линии-к-линии в байтах задается шагом(pitch). Переменные width, height и format, переданные в ArrayDescriptor descr. set_format(), не нужны и не следует их вызывать, в дополнение к этому методу.

set_format(fmt, num_components)

Установите текстуру, чтобы получить fmt из array_format и channels из num_components.

set_address_mode(dim, am)

Установите режим адреса измерения dim на am, которое должно принять одно из значений address_mode.

set_flags(flags)

Устанавливает флаги комбинации значений TRSF_XXX.

get_array()

get_array()

Замечание

Это будет объект, отличный от того, что передавался в set_array(), но в сравнении он будет идентичным.

get_address_mode(dim)

get_filter_mode()

get_format()

Возвращает кортеж (fmt, num_components), где fmt - это тип array_format, и num_components - это число компонентов в его текстуре.

(Версий 2.0 и выше.)

get_flags()

pycuda.driver.TRSA_OVERRIDE_FORMAT

pycuda.driver.TRSF_READ_AS_INTEGER

pycuda.driver.TRSF_NORMALIZED_COORDINATES

pycuda.driver.TR_DEFAULT

pycuda.driver.matrix_to_array(matrix, order)

Обращает двумерный объект матрицы numpy.ndarray в массив Array. Аргумент его порядка может принимать значения “C” или “F”. Если он принимает значение "С", то тогда tex2D(x,y) соответствует(подходит по размеру) матрице matrix[y,x], и наоборот для “F”.

pycuda.driver.make_multichannel_2d_array(matrix, order)

Обращает 3-мерный объект матрицы numpy.ndarray в 2-мерный numpy.ndarray c многочисленными каналами.

В зависимости от порядка, размер матрицы интерпретируется как:

высота, ширина, число_каналов(height, width, num_channels) для порядка(order) == “C”,
число_каналов, ширина, высота(num_channels, width, height) для порядка(order) == “F”.

Замечание

Эта функция предполагает, что матрица была создана с порядком матрицы order. Если это не так, то скопированные данные будут вероятно не тем, что вы ожидаете.

Инициализация Памяти Устройства

pycuda.driver.memset_d8(dest, data, count)

pycuda.driver.memset_d16(dest, data, count)

pycuda.driver.memset_d32(dest, data, count)

Замечание

count - это число элементов, не байт.

pycuda.driver.memset_d2d8(dest, pitch, data, width, height)

pycuda.driver.memset_d2d16(dest, pitch, data, width, height)

pycuda.driver.memset_d2d32(dest, pitch, data, width, height)

Неструктурированные Перемещения Памяти

pycuda.driver.memcpy_htod(dest, src)

Копирует из буфера Python источник (src) на адрес указателя устройства (целое (int) или DeviceAllocation). Размер копии определяется размером его буфера.

pycuda.driver.memcpy_htod_async(dest, src, stream=None)

Копирует из буфера Python источник (src) на адрес указателя устройства (целое (int) или DeviceAllocation) асинхронно, опционально сериализован через поток. Размер копии определяется размером буфера.

У переменной src память должна быть заблокирована постранично, смотрите, например, pagelocked_empty().

Новый в версии 0.93.

pycuda.driver.memcpy_dtoh(dest, src)

Копирует из переменной источника указателя устройства src(целое (int) или DeviceAllocation) в переменную назначения dest буфера Python.

По желанию можно указать, чтобы она выполнялась асинхронно, сериализовано через поток. В этом случае, переменная назначения dest должна быть заблокирована по страницам.

pycuda.driver.memcpy_dtoh_async(dest, src, stream=None)

Копирует из переменной источника указателя устройства src(целое (int) или DeviceAllocation) в переменную назначения dest буфера Python асинхронно, опционально последовательно выполняется через поток. Размер этой копии определяется размером буфера.

dest должен быть заблокированной постранично памятью, смотрите например pagelocked_empty().

Новый в версии 0.93.

pycuda.driver.memcpy_dtod(dest, src, size)

pycuda.driver.memcpy_dtod_async(dest, src, size, stream=None)

CUDA 3.0 и выше.

Новый в версии 0.94.

pycuda.driver.memcpy_peer(dest, src, size, dest_context=None, src_context=None)

pycuda.driver.memcpy_peer_async(dest, src, size, dest_context=None, src_context=None, stream=None)

CUDA 4.0 и новее.

Новый в версии 2011.1.

pycuda.driver.memcpy_dtoa(ary, index, src, len)

pycuda.driver.memcpy_atod(dest, ary, index, len)

pycuda.driver.memcpy_htoa(ary, index, src)

pycuda.driver.memcpy_atoh(dest, ary, index)

pycuda.driver.memcpy_atoa(dest, dest_index, src, src_index, len)

Структурированная Передача Памяти

класс pycuda.driver.Memcpy2D

src_x_in_bytes

X смещение от адреса источника копии. (инициализуется нулем 0).

src_y

У смещение от адреса источника копии. (инициализуется нулем 0).

src_pitch

Размер ряда в байтах в источнике копии.

set_src_host(buffer)

Установить буфер, который должен быть объектом Python, наследуясь от интерфейса буфера так, чтобы он был источником копии.

set_src_array(array)

Устанавливает массив Array, чтобы он был источником копии.

set_src_device(devptr)

Устанавливает адрес устройства devptr (целое (int) или DeviceAllocation), как источник копии.

set_src_unified(buffer)

То же, что и set_src_host(), кроме того, что буфер тоже может соответствовать памяти устройства.

CUDA 4.0 и новее. Требует единой адресации.

Новый в версии 2011.1.

dst_x_in_bytes

X смещение от адреса назначения копии.( инициализуется нулем 0).

dst_y

Y смещение от адреса назначения копии.( инициализуется нулем 0).

dst_pitch

Размер ряда в байтах по адресу назначения копии.

set_dst_host(buffer)

Устанавливает буфер, который должен быть объектом Python соответствующим интерфейсу, так чтобы он был местом назначения копии.

set_dst_array(array)

Устанавливает массив Array так, чтобы он был местом назначения копи.

set_dst_device(devptr)

Устанавливает адрес devptr (целое int или DeviceAllocation) , как место назначения копии.

set_dst_unified(buffer)

То же, что и set_dst_host(), кроме того, что буфер может также соответствовать памяти устройства.

CUDA 4.0 и новее. Требует единой адресации.

Новый в версии 2011.1.

width_in_bytes

Число байт копии для каждого ряда в передаче.

height

Число строк для копирования.

__call__([aligned=True])

Производит копирование указанной памяти, ждя пока копирование закончится. Если она не выравнена (значение aligned ложное False), переносит смещение со стороны прибора для копий с устройства на устройства, что может привести к потере пропускной способности памяти.

__call__(stream)

Асинхронно выполняет копию памяти, которая последовательно расположена через поток stream. Любая память устройства, используемая в этой передаче должна быть заблокирована по страницам.

класс pycuda.driver.Memcpy3D

У Memcpy3D те же члены, что и у Memcpy2D, но вдобавок еще и все из следующих:

src_height

Игнорируется, когда источник массив Array. Может быть 0, если глубина Depth==1.

src_z

Смещение по Z от источника копии. (инициализуется нулем 0)

dst_height

Игнорируется, когда место назначения - это массив Array. Может быть 0, если глубина Depth==1.

dst_z

Смещение по Z от места назначения копии. (инициализуется нулем 0)

Глубина

Memcpy3D поддерживается в CUDA 2.0 и выше.

Класс pycuda.driver.Memcpy3DPeer

У Memcpy3DPeer те же члены, что и у Memcpy3D и, вдобавок, все следующие:

set_src_context(ctx)

set_dst_context(ctx)

CUDA 4.0 и новее.

Новый в версии 2011.1.

Код на Устройстве: Модули и Функции.

Класс pycuda.driver.Module

Указатель модулю CUBIN, загруженному на устройство. Его можно создать с помощью module_from_file() и module_from_buffer().

get_function(name)

Возвращает имя функции в модуле.

Предупреждение

Хотя вы и можете получить различные указатели на одну и ту же функцию, используя этот метод, все эти указатели распределяют те же состояния, установленные через методы set_XXX функции Function.
Это значит, что вы не можете получить два различных дискриптора к одной функции и подготовить их Function.prepare() двумя различными способами.

get_global(name)

Возвращает кортеж (device_ptr, size_in_bytes) передавая удреса устройств и размер глобальных имен.

Основным способом использования этого метода является нахождение адреса уже декларированных массивов __constant__, поэтому они могут быть заполнены хостом до вызова ядра.

get_texref(name)

Возвращает имя TextureReference из этого модуля.

get_surfref(name)

Возвращает имя SurfaceReference из этого модуля.

CUDA 3.1 и выше.

Новый в версии 0.94.

pycuda.driver.module_from_file(filename)

Создает модуль Module, загружая имя файла CUBIN файла.

pycuda.driver.module_from_buffer(buffer, options=[], message_handler=None)

Создает модуль, загружая модуль PTX или CUBIN из буфера, который должен поддерживать интерфейс буфера Python (Например, что делают str и numpy.ndarray.)
Параметры:

options – Список кортежей (jit_option, значения).
message_handler – Вызываемый, который вызывается с аргументами
(compile_success_bool, info_str, error_str), которые позволяют пользователя выводить предупреждение и сообщение об ошибке из компилятора PTX.

Загружает модули PTX, как значения опций не по умолчанию и message_handler доступны только в CUDA 2.1 и новее.

класс pycuda.driver.Function

Указатель на функцию __global__ в Модуле. Создается, используя Module.get_function().

__call__(arg1, ..., argn, block=block_size[, grid=(1, 1)[, stream=None[, shared=0[, texrefs=[][, time_kernel=False]]]]])

Запускает себя, с блоковым размером нити блока. Блок должен быть трехместным кортежем целых значений.

arg1 по argn - это позиционные аргументы Си, передаваемые ядру. Для подробностей смотрите param_set(). В особенности смотрите там предупреждения.

Грид определяется - как двуместный кортеж, размер блоков нитей, которые должны быть запущены - как двумерный грид. Поток, если определен - это сущность потока Stream, последовательно выполняющая аргументы ввода(какие они бы ни были), выполнение, и копирование аргументов вывода(опять же, какие они бы ни были). Опция shared показывает число байт, доступных в ядре через внешние __shared__ массивы. texrefs - это список сущностей TextureReference, к которому будет доступ у этой функции.

Функция возвращает или None или число секунд потраченных на выполнение ядра, в зависимости от того True ли значение time_kernel.

Это удобный интерфейс, который можно использовать ниже вместо методов param_*() и launch_*(). Более быстрым(но чуть менее удобным) способом вызова ядер, смотрите prepare() и prepared_call().

arg1 по argn разрешено объявление его следующими типами.

Подклассы numpy.number. Они имеют размер численных типов таких как numpy.uint32 или numpy.float32. Сущности DeviceAllocation, которые станут указателями устройство. DeviceAllocation сущности, который станет указателем устройства на выделенную память. Сущности подклассов ArgumentHandler. Они могут использоваться, чтобы автоматически передавать массивы numpy на и из устройства. Объекты поддерживающие интерфейс буфера Python. Эти куски байт будут скопированы в механизм дословной передачи пространства параметров.
Сущности типа GPUArray.

Предупреждение

Вы не можете передать значения родных целых int типов Python или float типов param_set. Хотя и нет недвусмысленного способа передачи размера этих целых чисел или с плавающей точкой, они сравниваются с сообщением TypeError.

Замечание

Этот метод может угадывать типы аргументов переданных ему, что может делать его в чем-то медленным. Для ядра, которое часто вызывается, это может быть неудобно. Для более быстрого (но немного менее удобного) способа вызова ядер, смотрите prepare() и prepared_call().

param_set_texref(texref)

Сделайте переменную texref класса TextureReference доступную для этой функции.

prepare(arg_types, block=None, shared=None, texrefs=[])

Приготовьте вызов этой функции с помощью:

Установления аргументов типов как arg_types. Предпологается, что arg_types итерируемо содержит символы типа, которые понимаются модулем module или объекты numpy.dtype.

(Кроме того, PyCUDA понимает ‘F’ и ‘D’ для чисел с плавающей точкой одинарной и двойной точности.)

Устанавливает размер блока нити для этой функции на блокирование.

Региструет текстурные ссылки texrefs для использования с этой функцией.Объекты TextureReference в texrefs, будут сохранены, и с чем бы эти ссылки не были связаны во время вызова, они будет доступны через соответствующие текстурные ссылки внутри ядра.

Возвращает себя self.

Предупреждение

Передает не равному блоку None устарело в версии 2011.1.

prepared_call(grid, block, *args)

Вызывает себя self используя launch_grid(), с args и размером грид grid и размером блока block. Предполагает, что функция prepare() вызывалась на себя self. Текстурные ссылки задаваемые prepare() установлены как параметры, тоже.

prepared_timed_call(grid, block, *args)

Вызывает себя используя launch_grid(), с аргументами args, размером грид grid и размером блока block. Предполагает, что функция prepare() вызывалась на себя self. Текстурная ссылка задаваемая prepare() установлена как параметры, также.

Возвращает нулевой массив 0-ary, вызываемый, который можно использовать для передачи запросов о времени GPU, израсходованным этим вызовом, в секундах. Однажды вызванный, этот вызываемый заблокируется до завершения вызова.

prepared_async_call(grid, block, stream, *args)

Вызывает себя используя launch_grid_async(), с аргументами, размером грид grid и размером блока block, последовательно преданными в поток pycuda.driver.Stream. Если поток None, делает то же, что и prepared_call().Предополагает, что функция prepare() вызывалась в методе self.Текстурные ссылки задаваемые prepare() установлены как параметры, также.

get_attribute(attr)

Возвращает один из атрибутов задаваемый значением Attr атрибута функции function_attribute.

Все значения атрибутов функции function_attribute, также можно напрямую читать как (lower-case(нижнего регистра)) аттрибуты самого объекта функции, например func.num_regs.

CUDA 2.2 и более новая.

Новый в версии 0.93.

set_cache_config(fc)

Для получения возможных значений fc смотрите func_cache.

CUDA 3.0(поздняя бета версия) и новее.

Новый в версии 0.94

local_size_bytes

Количество байт локальной памяти, которое используется этой функцией.

На CUDA 2.1 и ниже, это доступно только как часть функции SourceModule. Она замещает устаревшие теперь атрибуты lmem.

shared_size_bytes

Количество байт разделенной памяти используемых этой функцией.

На CUDA 2.1 и ниже, это доступно только как часть функции SourceModule. Она замещает устаревшие теперь атрибуты smem.

num_regs

Количество 32-битных регистров используемых этой функцией.

На CUDA 2.1 и ниже, это доступно только как часть функции SourceModule. Она замещает устаревшие теперь регистры атрибутов.

set_shared_size(bytes)

Для ядра устанавливает разделяемым(открытым) числом доступных байт из внешних __shared__ массивов.

Предупреждение

Запрещены в версий 2011.1

set_block_shape(x, y, z)

Устанавливает форму размера блока нитей для этой функции.

Предупреждение

Запрещены в версий 2011.1.

param_set(arg1, ... argn)

Устанавливает форму размера блока нитей для этой функции.

Предупреждение

Запрещены в версий 2011.1.

param_set_size(bytes)

Измеряет размер пространства параметра в байтах.

Предупреждение

Запрещены в версий 2011.1

param_seti(offset, value)

Устанавливает значением целое находящееся по адресу смещения в пространстве параметра значения.

Предупреждение

Устарели в версий 2011.1.

param_setf(offset, value)

Устанавливает число с плавающей точкой в смещении на значение в пространстве параметра.

Предупреждение

Устарели в версий 2011.1.

launch()

Запускает единственную нить блока метода self.

Предупреждение

Устарели в версий 2011.1.

launch_grid(width, height)

Запускает грид размера ширина*высота width*height блоков нитей параметра self.

Предупреждение

Устарели в версий 2011.1.

launch_grid_async(width, height, stream)

Запускает грид размера ширина*высота width*height блоков нитей параметра self, переданого в последовательность потоком Stream.

Предупреждение

Устарели в версий 2011.1.

класс pycuda.driver.ArgumentHandler(array)

класс pycuda.driver.In(array)

Наследуется от ArgumentHandler. Показывает, что массив буфера должен скопироваться в вычислительное устройство до вызова в ядро.

класс pycuda.driver.Out(array)

Наследуется от ArgumentHandler. Показывает, что массив буфера должен скопироваться с вычислетельного устройства, после вызова ядра.

Класс pycuda.driver.InOut(array)

Наследуется от ArgumentHandler. Показывает, что буферный массив должен быть скопирован с вычислетельного устройства, до вызова ядра и из него после.

Контроль Профайлера

CUDA 4.0 и новее.

pycuda.driver.initialize_profiler(config_file, output_file, output_mode)

output_mode - это один из атрибутов profiler_output_mode.

Новый в версий 2011.1.

pycuda.driver.start_profiler()

Новый в версий 2011.1.

pycuda.driver.stop()

Новый в версий 2011.1.

Just-in-time компиляция

pycuda.compiler.DEFAULT_NVCC_FLAGS

Новый в версии 2011.1.

Если никаких опций не передано для вызовов ниже, значение этой переменной типа списка напротив используется. Это может быть полезно для вставки необходимых флагов в компиляцию автоматически скомпированных ядер, таких, как те, что используются модулем pycuda.gpuarray.

Исходное значение этой переменной берется из переменной среды PYCUDA_DEFAULT_NVCC_FLAGS
(флаги по умолчанию компилятора nvcc).

Если вы измените эту переменную в своем коде, пожалуйста примите во внимание, что это переменная доступна глобально, и она может изменяться многими пакетами. Будьте внимательны при таких изменениях - вы рискуете поломать(испортить) код других людей.

Класс pycuda.compiler.SourceModule(source, nvcc="nvcc", options=None, keep=False, no_extern_c=False, arch=None, code=None, cache_dir=None)

Делает модуль Module из исходного CUDA кода. Предполагается, что компилятор nvcc, находится по адресу переменной окружения PATH, если нет определен такой путь, то компилятор nvcc от Nvidia прописан в переменной PATH, если никакого специфического пути не было указано и он вызывается со своими опциям для компиляции кода. Если переменная keep принимает True, директория вывода компилятора сохранится и строка, указывающая его местоположение в файловой системе выводится для целей дебаггина.

До тех пор пока переменная no_extern_c не принимает значение True, данный исходный код оборачивается в функции extern “C” { ... }, для предотвращения искажений имен C++.

arch(архитектура) и code(код) определяют, чтобы значения были переданы для опций -arch и -code в командной строке nvcc. Если параметр arch принимает значение None, его опциями по умолчанию будет текущая контекстная совместимость вычислительного устройства. Если значение code None, оно будет определено.

cache_dir предоставляет директорию, используемую для кеширования компилятора. У нее есть чувствительные настройки на каждого пользователя. Если ее установить на False, то кеширование отключится.

Этот класс представляет тот же публичный интерфейс, что и Module, но не наследуется от него.

Замечания по измениям: SourceModule убрали из pycuda.driver в pycuda.compiler в версии 0.93.

compile(source, nvcc="nvcc", options=None, keep=False,
no_extern_c=False, arch=None, code=None, cache_dir=None,
include_dirs=[])

Выполняет ту же компиляции, что и соответствующий конструктор SourceModule, но возвращает только результирующий cubin файл, как строку. В частности, не подгружает код в GPU.

Переведено на Нотабеноиде
http://notabenoid.org/book/20422/66942

Переводчики: wuffur, vapvap14

Настройки

Готово:

100.00% КП = 1.0