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:

python setup.py install

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

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="QuimbBackend", 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.1.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

qibotn-0.0.1-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qibotn-0.0.1.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for qibotn-0.0.1.tar.gz
Algorithm Hash digest
SHA256 e7f06187ff3571c3f0e99537c39b89fd85e3ab0bea76dcdf6a713921fd1fdbc8
MD5 cf799c686d7657fbe15a68197c5bf48f
BLAKE2b-256 dba30aaa53810810c3de0408be2ee7a4e894aaf45e9716c36960504c0ed26816

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qibotn-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for qibotn-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 890dc01e7e343a41c67b08c6c721914ace461f14d2e5050aeaa6db882d7582de
MD5 7d36434312817bfcc0b36a130a5e4d6e
BLAKE2b-256 bc7aa2fbe05389b82cbc43d112228172db3a9277a652262034ac0e2400781356

See more details on using hashes here.

Supported by

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