Готовый перевод 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
Настройки
Готово:
