tankya2 d852fd89e9 Update
2024-02-15 12:09:35 +08:00
2024-02-15 12:09:35 +08:00
2023-02-23 12:11:18 +08:00
2022-06-23 03:59:55 +00:00
2023-02-07 10:28:53 +01:00
2024-02-15 12:09:35 +08:00

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

To get started, python setup.py install to install the tools and dependencies.

Computation Supported

  • Tensornet (TN)

    • TN contraction to dense vector
    • TN contraction to dense vector with Message Passing Interface (MPI)
    • TN contraction to dense vector with NCCL
    • TN contraction to expectation of given Pauli string
    • TN contraction to expectation of given Pauli string with Message Passing Interface (MPI)
    • TN contraction to expectation of given Pauli string with NCCL
  • Matrix Product State (MPS)

    • MPS contraction to dense vector

Sample Codes

Single Node

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 3 ways of setting 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
}

# computation_settings = {
#    'MPI_enabled': False,
#    'MPS_enabled': False,
#    'NCCL_enabled': False,
#    'expectation_enabled': {
#        'pauli_string_pattern': "IXZ"
# }

# computation_settings = {
#     'MPI_enabled': False,
#     'MPS_enabled': True,
#     'NCCL_enabled': False,
#     'expectation_enabled': False
# }

qibo.set_backend(backend="qibotn", runcard=computation_settings)

# 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())
```

Multi-Node

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
```
Description
No description provided
Readme 1.7 MiB
Languages
Python 98.6%
Nix 1.4%