Я строю модель обучения с подкреплением на GPU, поэтому я использую chainer , который имеет cupy backend.cupy
предназначен для дублирования numpy
, за исключением того, что он работает на GPU.
Я задавал этот вопрос ранее о том, как сделать быстрое битовое смещение на скаляре в numpy
, и ответ был прост: мне нужно сделать битовое смещение на фактическом numpy.uint64
объект, а не объект numpy.array
.Было бы хорошо, если бы я мог перевести свои методы сдвига битов на cupy
, чтобы получить те же ускорения.
Однако документация cupy
требует, чтобы скаляры были на графическом процессоре, а не на процессоре ( source ).Это означает, что либо я ...
- представляю мой скаляр в виде массива, что поднимает мою первоначальную проблему в моем связанном вопросе выше, либо
- отправляет мое скалярное целое число в ЦП, сделайте мои вычисления и перенесите их обратно в графический процессор, что тоже медленно.
Если я хочу сделать сотни тысяч битовых сдвигов для скалярного значения, хотя это займет менее секунды в numpy
, это займет слишком много времени в cupy
. Как ускорить сдвиг битов скаляров в cupy
?