Вы можете использовать факел только для вычислений.
import torch
# optimization by passing device argument, tensor is created on gpu and hence move operation is saved
# convert to float to use with logsumexp
a = torch.randint(0,10, (128,20), device="cuda").float()
result = torch.logsumexp(a, dim=1)/ 2.
Ответы на некоторые ваши вопросы:
Может ли приведенный выше код ускорить вычисления?
Это зависит.Если у вас слишком много умножения матриц, использование gpu может ускорить процесс.
Нужно ли преобразовывать все значения в torch.tensor, например, из var в torch.tensor (var) .cuda () и из np.log (np.pi * var) в torch.tensor?
Да
Нужно ли мне преобразовывать все тензоры в gpu самостоятельно, особенно для некоторой промежуточной переменной?
ТолькоКонечные переменные необходимо преобразовать, промежуточная переменная будет размещена на устройстве, на котором выполняются операции.Например: если a
и b
на gpu, то в результате операции c=a+b
, c также будет на gpu.