Skip to main content

PyTorch Scatter

PyPI Version Testing Status Linting Status Docs Status Code Coverage


Documentation

This package consists of a small extension library of highly optimized sparse update (scatter and segment) operations for the use in PyTorch, 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":

In addition, we provide the following composite functions which make use of scatter_* operations under the hood: scatter_std, scatter_logsumexp, scatter_softmax and scatter_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.

Installation

Anaconda

Update: You can now install pytorch-scatter via Anaconda for all major OS/PyTorch/CUDA combinations 🤗 Given that you have pytorch >= 1.8.0 installed, simply run

conda install pytorch-scatter -c pyg

Binaries

We alternatively provide pip wheels for all major OS/PyTorch/CUDA combinations, see here.

PyTorch 2.4

To install the binaries for PyTorch 2.4.0, simply run

pip install torch-scatter -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html

where ${CUDA} should be replaced by either cpu, cu118, cu121, or cu124 depending on your PyTorch installation.

cpu cu118 cu121 cu124
Linux
Windows
macOS

PyTorch 2.3

To install the binaries for PyTorch 2.3.0, simply run

pip install torch-scatter -f https://data.pyg.org/whl/torch-2.3.0+${CUDA}.html

where ${CUDA} should be replaced by either cpu, cu118, or cu121 depending on your PyTorch installation.

cpu cu118 cu121
Linux
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, PyTorch 1.13.0/1.13.1, PyTorch 2.0.0/2.0.1, PyTorch 2.1.0/2.1.1/2.1.2, and PyTorch 2.2.0/2.2.1/2.2.2 (following the same procedure). For older versions, you need to explicitly specify the latest supported version number or install via pip install --no-index in order to prevent a manual installation from source. You can look up the latest supported version number here.

From source

Ensure that at least PyTorch 1.4.0 is installed and verify that cuda/bin and cuda/include are in your $PATH and $CPATH respectively, 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-scatter

When 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 via TORCH_CUDA_ARCH_LIST, e.g.:

export TORCH_CUDA_ARCH_LIST = "6.0 6.1 7.2+PTX 7.5+PTX"

Example

import torch
from torch_scatter import scatter_max

src = 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 tests

pytest

C++ API

torch-scatter also offers a C++ API that contains C++ equivalent of python models. For this, we need to add TorchLib to the -DCMAKE_PREFIX_PATH (e.g., it may exists in {CONDA}/lib/python{X.X}/site-packages/torch if installed via conda):

mkdir build
cd build
# Add -DWITH_CUDA=on support for CUDA support
cmake -DCMAKE_PREFIX_PATH="..." ..
make
make install

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

torch_scatter_rocm-2.1.2.post6-cp314-cp314-manylinux_2_32_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.32+ x86-64

torch_scatter_rocm-2.1.2.post6-cp313-cp313-manylinux_2_32_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.32+ x86-64

torch_scatter_rocm-2.1.2.post6-cp312-cp312-manylinux_2_32_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.32+ x86-64

torch_scatter_rocm-2.1.2.post6-cp311-cp311-manylinux_2_32_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.32+ x86-64

torch_scatter_rocm-2.1.2.post6-cp310-cp310-manylinux_2_32_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.32+ x86-64

File details

Details for the file torch_scatter_rocm-2.1.2.post6-cp314-cp314-manylinux_2_32_x86_64.whl.

File metadata

File hashes

Hashes for torch_scatter_rocm-2.1.2.post6-cp314-cp314-manylinux_2_32_x86_64.whl
Algorithm Hash digest
SHA256 f52e12efab0cce986a244913f77847de9ecde5e71cce741722de77de4c43f23d
MD5 c252ae3cc57afdc6114f96cc04812fb3
BLAKE2b-256 a3902da13dc19b444dbe6ee0482f71873ca7f9dd2409b28905358c2f1046913b

See more details on using hashes here.

File details

Details for the file torch_scatter_rocm-2.1.2.post6-cp313-cp313-manylinux_2_32_x86_64.whl.

File metadata

File hashes

Hashes for torch_scatter_rocm-2.1.2.post6-cp313-cp313-manylinux_2_32_x86_64.whl
Algorithm Hash digest
SHA256 6944ccef788e75289f41ae37a5c5a79e0531d0e39ae8f21b4dc40e2bc3d73344
MD5 a162aac2a6a9d94a4fbb8af95aa96c6d
BLAKE2b-256 99cf10a041fc367a468989c3012428d7a54be733ca7350952d231624559c62d9

See more details on using hashes here.

File details

Details for the file torch_scatter_rocm-2.1.2.post6-cp312-cp312-manylinux_2_32_x86_64.whl.

File metadata

File hashes

Hashes for torch_scatter_rocm-2.1.2.post6-cp312-cp312-manylinux_2_32_x86_64.whl
Algorithm Hash digest
SHA256 502921ae6ec45e651db70002369aa0cfeea7ec1a8cfcc59c307ae0df7b25eb2b
MD5 28c69eb40271a3a8edd3e82e78b97cc4
BLAKE2b-256 8a56c27e4bef714459efc73866d536fe60718036d331e4bb2805b89069b36bc2

See more details on using hashes here.

File details

Details for the file torch_scatter_rocm-2.1.2.post6-cp311-cp311-manylinux_2_32_x86_64.whl.

File metadata

File hashes

Hashes for torch_scatter_rocm-2.1.2.post6-cp311-cp311-manylinux_2_32_x86_64.whl
Algorithm Hash digest
SHA256 ed6d05c928a44ec8c5ef34bba0df88d80f73dfc5f46b0772eced18450870e533
MD5 577087aabce8854780d0e2a3b3534189
BLAKE2b-256 d8260655a88c36fade5d97bb17a8a0ddffd50a30e9ab4f1da30379bc321c7dfe

See more details on using hashes here.

File details

Details for the file torch_scatter_rocm-2.1.2.post6-cp310-cp310-manylinux_2_32_x86_64.whl.

File metadata

File hashes

Hashes for torch_scatter_rocm-2.1.2.post6-cp310-cp310-manylinux_2_32_x86_64.whl
Algorithm Hash digest
SHA256 d3ba0149d8658480d10f3b7745c26bc3714965a699b1ad1226483b2fb9df1a4d
MD5 f3c9581eefc11ad55b3abbbf24177fc4
BLAKE2b-256 ab489def61e819abb33f97263d1cd1d6b6fa79353cf9ca7021c1c9332b705562

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.1.2.post6 This release

5 files

2.1.2.post5

5 files

2.1.2.post4

5 files

2.1.2.post3

5 files

2.1.2.post2

5 files

2.1.2.post1

5 files

2.1.2

5 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page