Skip to main content

A tensor-network translation module for Qibo

Project description

Qibotn

The tensor network translation module for Qibo to support large-scale simulation of quantum circuits and acceleration.

Supported Computation

Tensor Network Types:

  • Tensornet (TN)
  • Matrix Product States (MPS)

Tensor Network contractions to:

  • dense vectors
  • expecation values of given Pauli string

The supported HPC configurations are:

  • single-node CPU
  • single-node GPU or GPUs
  • multi-node multi-GPU with Message Passing Interface (MPI)
  • multi-node multi-GPU with NVIDIA Collective Communications Library (NCCL)

Currently, the supported tensor network libraries are:

  • cuQuantum, an NVIDIA SDK of optimized libraries and tools for accelerating quantum computing workflows.
  • quimb, an easy but fast python library for ‘quantum information many-body’ calculations, focusing primarily on tensor networks.

Installation

To get started:

pip install qibotn

to install the tools and dependencies. A few extras are provided, check pyproject.toml in case you need them.

Contribute

To contribute, please install using poetry:

git clone https://github.com/qiboteam/qibotn.git
cd qibotn
poetry install

Sample Codes

Single-Node Example

The code below shows an example of how to activate the Cuquantum TensorNetwork backend of Qibo.

import numpy as np
from qibo import Circuit, gates
import qibo

# Below shows how to set the computation_settings
# Note that for MPS_enabled and expectation_enabled parameters the accepted inputs are boolean or a dictionary with the format shown below.
# If computation_settings is not specified, the default setting is used in which all booleans will be False.
# This will trigger the dense vector computation of the tensornet.

computation_settings = {
    "MPI_enabled": False,
    "MPS_enabled": {
        "qr_method": False,
        "svd_method": {
            "partition": "UV",
            "abs_cutoff": 1e-12,
        },
    },
    "NCCL_enabled": False,
    "expectation_enabled": False,
}


qibo.set_backend(
    backend="qibotn", platform="cutensornet", runcard=computation_settings
)  # cuQuantum
# qibo.set_backend(backend="qibotn", platform="qutensornet", runcard=computation_settings) #quimb


# Construct the circuit
c = Circuit(2)
# Add some gates
c.add(gates.H(0))
c.add(gates.H(1))

# Execute the circuit and obtain the final state
result = c()

print(result.state())

Other examples of setting the computation_settings

# Expectation computation with specific Pauli String pattern
computation_settings = {
    "MPI_enabled": False,
    "MPS_enabled": False,
    "NCCL_enabled": False,
    "expectation_enabled": {
        "pauli_string_pattern": "IXZ",
    },
}

# Dense vector computation using multi node through MPI
computation_settings = {
    "MPI_enabled": True,
    "MPS_enabled": False,
    "NCCL_enabled": False,
    "expectation_enabled": False,
}

Multi-Node Example

Multi-node is enabled by setting either the MPI or NCCL enabled flag to True in the computation settings. Below shows the script to launch on 2 nodes with 2 GPUs each. $node_list contains the IP of the nodes assigned.

mpirun -n 4 -hostfile $node_list python test.py

Project details


Download files

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

Source Distribution

qibotn-0.0.3.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

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

qibotn-0.0.3-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file qibotn-0.0.3.tar.gz.

File metadata

  • Download URL: qibotn-0.0.3.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for qibotn-0.0.3.tar.gz
Algorithm Hash digest
SHA256 3bc8896d36d2da5ed99bdba743f93fd69c57fa8f893861cdaa26abfa6f7aef05
MD5 f5a3e0830f3024006598e7a882b413cb
BLAKE2b-256 6fb63c6c332a809b38b1a89e4e05d94490acaf444e5573ae8a890ea7b3e1dd6c

See more details on using hashes here.

File details

Details for the file qibotn-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: qibotn-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for qibotn-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9c0cb4ffa77795eabc360108f0d7712f685cc75ab96753e699ee9ef7adf23bab
MD5 c5e9d05d603cb39557afe4fd5f48c1a1
BLAKE2b-256 74d7b289095819a5ba4072c58adc0fdf129f3fffb77cef4623189c9a8f05c502

See more details on using hashes here.

Supported by

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