#include #include #include #include int trilinear_forward( torch::Tensor lut, torch::Tensor image, torch::Tensor output, int lut_dim, int shift, float binsize, int width, int height, int batch ) { return lut.is_cuda( ) ? trilinear_forward_cuda( lut, image, output, lut_dim, shift, binsize, width, height, batch ) : trilinear_forward_cpu( lut, image, output, lut_dim, shift, binsize, width, height, batch ); } int trilinear_backward( torch::Tensor image, torch::Tensor image_grad, torch::Tensor lut_grad, int lut_dim, int shift, float binsize, int width, int height, int batch ) { return image.is_cuda( ) ? trilinear_backward_cuda( image, image_grad, lut_grad, lut_dim, shift, binsize, width, height, batch ) : trilinear_backward_cpu( image, image_grad, lut_grad, lut_dim, shift, binsize, width, height, batch ); } int quadrilinear4d_forward(torch::Tensor lut, torch::Tensor image, torch::Tensor output, int lut_dim, int shift, float binsize, int width, int height, int batch) { return image.is_cuda( ) ? quadrilinear4d_forward_cuda( lut, image, output, lut_dim, shift, binsize, width, height, batch ) : quadrilinear4d_forward( lut, image, output, lut_dim, shift, binsize, width, height, batch ); } int quadrilinear4d_backward( torch::Tensor image, torch::Tensor image_grad, torch::Tensor lut, torch::Tensor lut_grad, int lut_dim, int shift, float binsize, int width, int height, int batch ) { return image.is_cuda() ? quadrilinear4d_backward_cuda(image, image_grad, lut, lut_grad, lut_dim, shift, binsize, width, height, batch) : quadrilinear4d_backward(image, image_grad, lut, lut_grad, lut_dim, shift, binsize, width, height, batch); } PYBIND11_MODULE( TORCH_EXTENSION_NAME, m ) { m.def( "trilinear_forward", &trilinear_forward, "trilinear forward" ); m.def( "trilinear_backward", &trilinear_backward, "trilinear_backward" ); m.def("quadrilinear4d_forward", &quadrilinear4d_forward, "quadrilinear4d_forward"); m.def( "quadrilinear4d_backward", &quadrilinear4d_backward, "quadrilinear4d_backward"); }