JuliaGaussianProcesses / KernelFunctions.jl

Julia package for kernel functions for machine learning
https://juliagaussianprocesses.github.io/KernelFunctions.jl/stable/
MIT License
266 stars 32 forks source link

[WIP] Use Tullio for pairwise distances #385

Closed theogf closed 3 years ago

theogf commented 3 years ago

Summary We have a long-time problem for binary operations like DotProduct not satisfying the requirements of the Distances.jl framework (not a proper metric). Additionally, Distances.jl is very incompatible with GPU operations (see JuliaStats/Distances.jl#143 and JuliaStats/Distances.jl#137). Using Tullio.jl should solve both these problems. Some quick benchmarks shows that Tullio is both faster and more GPU-able than Distances.jl

There is a longer discussion about this PR in #380 This should also close #98 and replace #194

Proposed changes

What alternatives have you considered? Dropping Distances.jl operations anyway but without Tullio but Tullio shows it's faster.

Breaking changes

theogf commented 3 years ago

Ah... Ups I think I did not branch from master....

theogf commented 3 years ago

Blessed be git cherry-pick