Как выполнять быстрые побитовые операции над скаляром с библиотекой `cupy` - PullRequest
0 голосов
/ 12 октября 2018

Я строю модель обучения с подкреплением на GPU, поэтому я использую chainer , который имеет cupy backend.cupy предназначен для дублирования numpy, за исключением того, что он работает на GPU.

Я задавал этот вопрос ранее о том, как сделать быстрое битовое смещение на скаляре в numpy, и ответ был прост: мне нужно сделать битовое смещение на фактическом numpy.uint64 объект, а не объект numpy.array.Было бы хорошо, если бы я мог перевести свои методы сдвига битов на cupy, чтобы получить те же ускорения.

Однако документация cupy требует, чтобы скаляры были на графическом процессоре, а не на процессоре ( source ).Это означает, что либо я ...

  1. представляю мой скаляр в виде массива, что поднимает мою первоначальную проблему в моем связанном вопросе выше, либо
  2. отправляет мое скалярное целое число в ЦП, сделайте мои вычисления и перенесите их обратно в графический процессор, что тоже медленно.

Если я хочу сделать сотни тысяч битовых сдвигов для скалярного значения, хотя это займет менее секунды в numpy, это займет слишком много времени в cupy. Как ускорить сдвиг битов скаляров в cupy?

...