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

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

Post 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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post