#pytorch
#pytorch
Вопрос:
Недавно, когда я проводил сравнительный анализ операции «matmul» в Pytorch, и я понял, что умножение с фиксированной точкой (когда dytpe равно int) происходит намного медленнее, это выглядит нелогичным.
n = 128 m = 1024 p = 512
t = []
ring_size=(2 ** 64)
for split in np.arange(2,64,2):
mm = m // split
a = torch.randint(-(ring_size // 2), (ring_size - 1) // 2, (n, mm), dtype=torch.int64)
b = torch.randint(-(ring_size // 2), (ring_size - 1) // 2, (mm, p), dtype=torch.int64)
init_time = time.time()
c = getattr(torch, 'matmul')(a, b)
t.append(time.time() - init_time)
plt.plot(t)
n = 128 m = 1024 p = 512
t = []
for split in np.arange(2,64,2):
mm = m // split
a = torch.tensor(np.random.normal(loc=100, scale=100, size=(n,mm)))
b = torch.tensor(np.random.normal(loc=100, scale=100, size=(mm,p)))
init_time = time.time()
c = getattr(torch, 'matmul')(a, b)
t.append(time.time() - init_time) plt.plot(t)
Комментарии:
1.
int64
имеет 64 бита.float
имеет 32…2. при сравнении с int32, float все еще на порядок быстрее…………..