Page 1 of 1

Warum ist Torch.fft.rfft(x) schneller als Torch.fft.rfft(x, out=y)?

Posted: 08 Jan 2025, 08:36
by Guest
Bei der Verwendung der Funktion Torch.fft.rfft von PyTorch habe ich festgestellt, dass die Angabe eines Ausgabetensors mithilfe des Parameters out langsamer ist, als die Ausgabe intern von PyTorch verwalten zu lassen. Hier ist ein einfacher Benchmark:

Code: Select all

input_len = 2_000_000
x = torch.rand(input_len)
y = torch.zeros(input_len // 2 + 1, dtype=torch.complex64)

Code: Select all

%%timeit
torch.fft.rfft(x)
# 7.45 ms ± 54.4 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Code: Select all

%%timeit
torch.fft.rfft(x, out=y)
# 9.6 ms ± 70.1 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Warum ist die Version ohne den out-Parameter schneller? Sollte die Angabe des Ausgabetensors nicht die Speicherzuweisung vermeiden und somit effizienter sein?
Jeder Einblick in dieses Verhalten wäre sehr dankbar.