Installation ============ TensorMesh runs on Linux, macOS, and Windows. The only hard requirements are **Python ≥ 3.10** and **PyTorch ≥ 2.0**; everything else (NumPy, SciPy, meshio, ``torch-sla``, ...) is pulled in automatically by ``pip``. If you plan to use the GPU backend, install a CUDA-enabled PyTorch build *before* installing TensorMesh — follow the official `PyTorch installation selector `_ for the right command on your platform / CUDA version. Install via PyPI ---------------- The recommended way to install TensorMesh is from PyPI: .. code-block:: bash pip install tensormesh-fem # CPU only pip install "tensormesh-fem[gpu]" # + CUDA sparse solvers (CuPy + cuDSS) Use the second form if you have an NVIDIA GPU and want the CUDA sparse-solver backends — the ``[gpu]`` extra pulls in both CuPy and cuDSS through ``torch-sla``. The quotes are needed because ``[...]`` is a shell glob character; see `Sparse solvers and GPU acceleration`_ for the per-backend breakdown if you only want one of CuPy or cuDSS. Either form pulls in all required dependencies, including `torch-sla `_, the differentiable sparse linear algebra library that powers TensorMesh's solvers. The base ``pip install tensormesh-fem`` installs only the **CPU** sparse stack (SciPy / native PyTorch); see `Sparse solvers and GPU acceleration`_ below for the full extras matrix (``[cupy]`` / ``[cudss]`` / ``[gpu]``) and how to verify which backends are usable on your machine. Install from source ------------------- For development work, or to get the latest unreleased changes, clone the repository and install in editable mode: .. code-block:: bash git clone https://github.com/camlab-ethz/TensorMesh.git cd TensorMesh pip install -e . The ``-e`` (editable) flag means edits to the source tree are picked up without reinstalling. To install with the test dependencies as well: .. code-block:: bash pip install -e ".[test]" Sparse solvers and GPU acceleration ----------------------------------- The sparse linear-algebra layer that powers TensorMesh's solvers lives in a standalone library, `torch-sla `_, so that it can evolve independently and serve other projects. ``torch-sla`` is a **hard, import-time** dependency — :mod:`tensormesh.sparse` will not import without it — and is the canonical entry point for both CPU and GPU sparse solves. All current and future solver work lands in ``torch-sla`` first; we recommend keeping it up to date. The base ``tensormesh-fem`` wheel only pulls the **CPU** stack (SciPy / native PyTorch). To enable a GPU backend, install one of the mirrored extras: .. list-table:: :header-rows: 1 :widths: 30 25 45 * - Install command - Adds backend - When to pick this * - ``pip install tensormesh-fem`` - CPU only - Default; no GPU sparse solves. * - ``pip install "tensormesh-fem[cupy]"`` - CuPy (CUDA) - Iterative GPU solvers (CG / GMRES / …) + CuPy SuperLU. * - ``pip install "tensormesh-fem[cudss]"`` - cuDSS (CUDA) - Fastest GPU direct solver (LU / Cholesky / LDLT). * - ``pip install "tensormesh-fem[gpu]"`` - Both - Convenience extra — installs ``torch-sla[all]``. These mirror the upstream ``torch-sla`` extras (``[cupy]`` / ``[cudss]`` / ``[all]``) — installing ``tensormesh-fem[gpu]`` is exactly equivalent to ``pip install tensormesh-fem torch-sla[all]``, just spelled in one step. Inspect what's installed ~~~~~~~~~~~~~~~~~~~~~~~~ After installing, you can see which backends are usable on the current machine — and a one-line install hint for any that are not: .. code-block:: python >>> import torch_sla >>> torch_sla.show_backends() torch-sla backend status (CUDA: available) scipy [CPU] available eigen [CPU] not available — JIT-compiled C++ extension (requires a C++ compiler) pytorch [CPU/CUDA] available cupy [CUDA] not available — pip install torch-sla[cupy] cudss [CUDA] not available — pip install torch-sla[cudss] See :doc:`/user_guide/linear_solvers` for the full backend / method matrix and how to pick a non-default backend at solve time. Other extras ~~~~~~~~~~~~ A couple of smaller extras for optional functionality: .. list-table:: :header-rows: 1 :widths: 28 72 * - Extra - Install command * - Plotly for example notebooks - ``pip install "tensormesh-fem[example]"`` * - Test suite (pytest, pytest-cov) - ``pip install "tensormesh-fem[test]"`` Two further packages are commonly useful but are *not* declared as extras — install them directly when needed: .. code-block:: bash pip install gmsh # external mesh generation / .msh I/O pip install pyvista # interactive 3D visualization Next steps ---------- Once installed, head to :doc:`verify_install` to run a smoke test, or jump straight into :doc:`quickstart` for a 2D Poisson walkthrough.