Package: torch-scatter
PyTorch ScatterDocumentationThis package consists of a small extension library of highly optimized sparse update (scatter and segment) operations for the use inPyTorch, which are missing in the main package.
Scatter and segment operations can be roughly described as reduce operations based on a given "group-index" tensor.
Segment operations require the "group-index" tensor to be sorted, whereas scatter operations are not subject to these requirements.The package consists of the following operations with reduction types"sum"|"mean"|"min"|"max":scatterbased on arbitrary indicessegment_coobased on sorted indicessegment_csrbased on compressed indices via pointersIn addition, we provide the followingcomposite functionswhich make use ofscatter_*operations under the hood:scatter_std,scatter_logsumexp,scatter_softmaxandscatter_log_softmax.All included operations are broadcastable, work on varying data types, are implemented both for CPU and GPU with corresponding backward implementations, and are fully traceable.InstallationAnacondaUpdate:You can now installpytorch-scatterviaAnacondafor all major OS/PyTorch/CUDA combinations 🤗
Given that you havepytorch >= 1.8.0installed, simply runconda install pytorch-scatter -c pygBinariesWe alternatively provide pip wheels for all major OS/PyTorch/CUDA combinations, seehere.PyTorch 2.1To install the binaries for PyTorch 2.1.0, simply runpip install torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+${CUDA}.htmlwhere${CUDA}should be replaced by eithercpu,cu118, orcu121depending on your PyTorch installation.cpucu118cu121Linux✅✅✅Windows✅✅✅macOS✅PyTorch 2.0To install the binaries for PyTorch 2.0.0, simply runpip install torch-scatter -f https://data.pyg.org/whl/torch-2.0.0+${CUDA}.htmlwhere${CUDA}should be replaced by eithercpu,cu117, orcu118depending on your PyTorch installation.cpucu117cu118Linux✅✅✅Windows✅✅✅macOS✅Note:Binaries of older versions are also provided for PyTorch 1.4.0, PyTorch 1.5.0, PyTorch 1.6.0, PyTorch 1.7.0/1.7.1, PyTorch 1.8.0/1.8.1, PyTorch 1.9.0, PyTorch 1.10.0/1.10.1/1.10.2, PyTorch 1.11.0, PyTorch 1.12.0/1.12.1 and PyTorch 1.13.0/1.13.1 (following the same procedure).
For older versions, you need to explicitly specify the latest supported version number or install viapip install --no-indexin order to prevent a manual installation from source.
You can look up the latest supported version numberhere.From sourceEnsure that at least PyTorch 1.4.0 is installed and verify thatcuda/binandcuda/includeare in your$PATHand$CPATHrespectively,e.g.:$ python -c "import torch; print(torch.__version__)"
>>> 1.4.0

$ echo $PATH
>>> /usr/local/cuda/bin:...

$ echo $CPATH
>>> /usr/local/cuda/include:...Then run:pip install torch-scatterWhen running in a docker container without NVIDIA driver, PyTorch needs to evaluate the compute capabilities and may fail.
In this case, ensure that the compute capabilities are set viaTORCH_CUDA_ARCH_LIST,e.g.:export TORCH_CUDA_ARCH_LIST = "6.0 6.1 7.2+PTX 7.5+PTX"Exampleimporttorchfromtorch_scatterimportscatter_maxsrc=torch.tensor([[2,0,1,4,3],[0,2,1,3,4]])index=torch.tensor([[4,5,4,2,3],[0,0,2,2,1]])out,argmax=scatter_max(src,index,dim=-1)print(out)
tensor([[0, 0, 4, 3, 2, 0],
        [2, 4, 3, 0, 0, 0]])

print(argmax)
tensor([[5, 5, 3, 4, 0, 1]
        [1, 4, 3, 5, 5, 5]])Running testspytestC++ APItorch-scatteralso offers a C++ API that contains C++ equivalent of python models.
For this, we need to addTorchLibto the-DCMAKE_PREFIX_PATH(e.g., it may exists in{CONDA}/lib/python{X.X}/site-packages/torchif installed viaconda):mkdir build
cd build
# Add -DWITH_CUDA=on support for CUDA support
cmake -DCMAKE_PREFIX_PATH="..." ..
make
make install