3 ms·
Here's a Tulio example. Tulip also provides source to source derivatives. Both KA and Tulio work in the CPU with the same code using Tullio, OffsetArrays # A
by dklend122 6y ago
Here's a Tulio example. Tulip also provides source to source derivatives. Both KA and Tulio work in the CPU with the same code
using Tullio, OffsetArrays
# A convolution with cyclic indices
mat = zeros(10,10,1); mat[2,2] = 101; mat[10,10] = 1;
@tullio kern[i,j] := 1/(1+i^2+j^2) (i in -3:3, j in -3:3)
@tullio out[x,y,c] := begin
xi = mod(x+i, axes(mat,1)) # xi = ... means that it won't be summed,
yj = mod(y+j, axes(mat,2))
@inbounds trunc(Int, mat[xi, yj, c] * kern[i,j]) # and disables automatic @inbounds,
end (x in 1:10, y in 1:10) # and prevents range of x from being inferred.
It's mostly just math!