knitr::opts_chunk$set(echo = TRUE)
When you use torchexport
to help with the infrastructure necessary in creating torch
extensions, you implement and annotate just a single function, in a single file. What happens, though, is that a lot of other files get updated, as well. In case you just have to know what these are and what is their purpose, this short piece of documentation is for you.
The table below illustrates what got generated when an example function, sparse_ptr2ind()
, was added to the torchsparse
package. The package in question enables the use of PyTorch extension, PyTorch-Sparse, from R torch
.
The only file modified manually was csrc/src/torchsparse.cpp
in csrc/src/torchsparse.cpp
. There, we find the function that actually calls into PyTorch-Sparse (its C++ code, that is). At the bottom we have the function, rcpp_sparse_ptr2ind()
, an R user would call. In-between, a lot is going on. In Rcpp as well as torchsparse
's C++ layer, issues of type conversion, memory management, and exception handling have to be taken care of.
| Domain | Signature | Types | file | purpose | |--------------|----------------------|--------------|--------------|---------------| | PyTorch-Sparse | | | | | | torchsparse cpp | torch::Tensor sparse_ptr2ind (torch::Tensor ptr, int64_t E) {...} | torch::Tensor -> torch::Tensor | csrc/src/torchsparse.cpp | call into PyTorch-Sparse | | torchsparse cpp | TORCHSPARSE_API void* _sparse_ptr2ind (void* ptr, int64_t E) {...} | void* -> torch::Tensor -> call \^ -> void* | csrc/src/exports.cpp | type conversions; memory management; exception handling (cpp) | | torchsparse Rcpp | inline void* sparse_ptr2ind (void* ptr, int64_t E) {...} | void* -> call \^ -> void* | csrc/include/torchsparse/exports.h | type conversions; memory management; exception handling (Rcpp) | | torchsparse Rcpp | torch::Tensor rcpp_sparse_ptr2ind (torch::Tensor ptr, int64_t E) {...} | torch::Tensor -> void* - call \^ -> torch::Tensor | src/exports.cpp | interface R -> pytorch_sparse | | torchsparse R | rcpp_sparse_ptr2ind \<- function(ptr, E) {} | torch_tensor -> call into Rcpp-> torch::Tensor | R/RcppExports.R | user-interfacing R function |
In case you'd like more details, feel free to look into the files referred and see what the functions are doing :-).
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.