Готовый перевод PyCUDA documentation / Документация PyCUDA: Built-in Utilities http://documen.tician.de/pycuda/util.html

Встроенные Утилиты

Автоматическая Инициализация

Модуль pycuda.autoinit, когда импортируется, автоматически производит все необходимые шаги, чтобы CUDA была готова для представления вычислительным ядрам. Он использует функцию pycuda.tools.make_default_context(), чтобы создать вычислительный контекст.

Экземпляр pycuda.driver.Device, который использовался для автоматической инициализации.

Сконструированный по умолчанию экземпляр pycuda.driver.Context на устройстве. Этот контекст создается с помощью вызова pycuda.tools.make_default_context().

Выбор устройства

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

Если установлена переменная окружения CUDA_DEVICE, то его целочисленное значение используется как номер устройства.
Если файл .cuda-device находится в директории пользователя, целое значение его содержимого используется как номер устройства.
В противном случае, ко всем доступным CUDA устройствам пытаются циклически получить доступ циклически.

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

Устарело. Используйте make_default_context().

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

Если переменная среды CUDA_DEVICE установлена, ее целочисленное значение используется как номер устройства.
Если файл .cuda-device существует в директории home пользователя, то целое значение его содержимого используется как указатель устройства.
В другом случае, то что находится по умолчанию используется как указатель устройства.

Кэширование Ядра

Этот декоратор кеширует результат декорированной функции, если следующее происходит в том же pycuda.driver.Context. Это полезно для кеширования ядер.

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

Тестирование

Эта функция, предназначенная для использования с py.test, отметит функцию func тегом “cuda” и удостоверится, что у нее есть контекст CUDA доступный при вызове.

Метаданные устройства и занятие

Предоставляет доступ для дополнительной информации на устройство затем доступной через атрибут pycuda.driver.Device.get_attribute(). Если dev принимает значение None, его значение по умолчанию устройства возвращается pycuda.driver.Context.get_device().

Число нитей, которые участвуют в сгруппированных, одновременных доступах к разделяемой памяти.

Расстояние между базовыми адресами глобальной памяти, которые позволяют получить доступ размером со слово word_size байт, чтобы объединится.

Округляет число байт к следующей границы выравнивания, как это дано в align_bytes().

Возвращает self.align_bytes(word_size)/word_size, проверяя, что на выходе разделения не остается остатка.

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

Округляет размер к правильному числу каналов текстур.

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

thread - числа нитей
shared memory - использования байт shared_mem
register - использования registers, 32-битных регистров

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

Чем ограничена tb_per_mp. Один из параметров "device", "warps", "regs", "smem".

Сколько деформаций(warps) выполняется на каждом мультипроцессоре.

Число с плавающей точкой между 0 и 1 показывающее сколько способностей(ресурсов), используемых для мультипроцессорного планирования занято этим ядром.

Пулы памяти

Функции pycuda.driver.mem_alloc() и pycuda.driver.pagelocked_empty() могут потреблять довольно большое количество процессорного времени, если их вызывать очень часто. Например код, написанный на pycuda.gpuarray.GPUArray легко можно запустить таким образом потому, что свежая область памяти выделяется для каждого промежуточного результата. Пулы памяти - это средство от этой проблемы, основанное на наблюдении, что часто много блоковых выделений имеют тот же размер, что и ранее используемые.

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

Пул памяти основанный на устройстве

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

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

Возвращает размер выделенной памяти в байтах.

класс pycuda.tools.DeviceMemoryPool

Пул памяти для линейной памяти устройства, как она выделяется с использованием pycuda.driver.mem_alloc().(смотрите пулы памяти)

Число неиспользуемых блоков, которые держит этот пул.

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

Возвращает PooledDeviceAllocation size в байтах.

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

Дает памяти инструкцию, чтобы она немедленно начинает освобождать память и возвращать ее вам, вместо того, чтобы держать для будущих выделений. Неявно вызывает free_held(). Это полезно использовать для очистки, когда пул памяти выпадает из области использования.

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

класс pycuda.tools.PooledHostAllocation

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

Явно возвращает память, которая держится аргументом self ассоциированному пулу памяти.

Возвращает размер выделенной памяти в байтах.

класс pycuda.tools.PageLockedAllocator(flags=0)

Определяет набор используемых флагов pycuda.driver.host_alloc_flags и ассоциированный с ним PageLockedMemoryPool.

класс pycuda.tools.PageLockedMemoryPool(allocator=PageLockedAllocator())

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

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

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

Возвращает инициализированный значением ("empty") numpy.ndarray с заданными параметрами shape (форма), dtype, и order. Этот массив возвратится назад с помощью PooledHostAllocation, которую можно найти как атрибут .base массива.

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

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

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

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

Настройки

Готово:

59.59% КП = 1.0

Непереведённые фрагменты будут пропущены.