Skip to content

Commit

Permalink
dfttest2.py: implement automatic backend selection
Browse files Browse the repository at this point in the history
  • Loading branch information
WolframRhodium committed Aug 20, 2022
1 parent fa5fada commit 9a336f6
Showing 1 changed file with 35 additions and 20 deletions.
55 changes: 35 additions & 20 deletions dfttest2.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.1.1"
__version__ = "0.2.0"

from dataclasses import dataclass
import math
Expand Down Expand Up @@ -430,6 +430,21 @@ def DFTTest2(
raise TypeError("unknown backend")


def select_backend(
backend: typing.Optional[backendT],
sbsize: int,
tbsize: int
) -> backendT:

if backend is not None:
return backend

if sbsize == 16 and tbsize in [1, 3, 5, 7]:
return Backend.NVRTC()
else:
return Backend.cuFFT()


def to_func(
data: typing.Optional[typing.Sequence[float]],
norm: typing.Callable[[float], float],
Expand Down Expand Up @@ -481,7 +496,7 @@ def DFTTest(
sst: typing.Optional[typing.Sequence[float]] = None,
ssystem: typing.Literal[0, 1] = 0,
planes: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
backend: backendT = Backend.cuFFT()
backend: typing.Optional[backendT] = None
) -> vs.VideoNode:

if (
Expand Down Expand Up @@ -548,22 +563,22 @@ def norm(x: float) -> float:
_sigma = sigma

return DFTTest2(
clip=clip,
ftype=ftype,
sigma=_sigma,
sigma2=sigma2,
pmin=pmin,
pmax=pmax,
sbsize=sbsize,
sosize=sosize,
tbsize=tbsize,
swin=swin,
twin=twin,
sbeta=sbeta,
tbeta=tbeta,
zmean=zmean,
f0beta=f0beta,
ssystem=ssystem,
planes=planes,
backend=backend
clip = clip,
ftype = ftype,
sigma = _sigma,
sigma2 = sigma2,
pmin = pmin,
pmax = pmax,
sbsize = sbsize,
sosize = sosize,
tbsize = tbsize,
swin = swin,
twin = twin,
sbeta = sbeta,
tbeta = tbeta,
zmean = zmean,
f0beta = f0beta,
ssystem = ssystem,
planes = planes,
backend = select_backend(backend, sbsize, tbsize)
)

0 comments on commit 9a336f6

Please sign in to comment.