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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7f06187ff3571c3f0e99537c39b89fd85e3ab0bea76dcdf6a713921fd1fdbc8 |
|
MD5 | cf799c686d7657fbe15a68197c5bf48f |
|
BLAKE2b-256 | dba30aaa53810810c3de0408be2ee7a4e894aaf45e9716c36960504c0ed26816 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 890dc01e7e343a41c67b08c6c721914ace461f14d2e5050aeaa6db882d7582de |
|
MD5 | 7d36434312817bfcc0b36a130a5e4d6e |
|
BLAKE2b-256 | bc7aa2fbe05389b82cbc43d112228172db3a9277a652262034ac0e2400781356 |