Computing tensor network state marginal distribution tensor#

The following code example illustrates how to define a tensor network state and then compute the tensor network state marginal distribution tensor. The full code can be found in the NVIDIA/cuQuantum repository (here).

Headers and error handling#

Define the tensor network state and the desired marginal distribution tensor#

Let’s define a tensor network state corresponding to a 16-qubit quantum circuit and request the marginal distribution tensor for qubits 0 and 1.

Initialize the cuTensorNet library handle#

Define quantum gates on GPU#

Allocate the marginal distribution tensor on GPU#

Here we allocate the marginal distribution tensor, that is, the reduced density matrix for qubits 0 and 1 on GPU.

Allocate the scratch buffer on GPU#

Create a pure tensor network state#

Now let’s create a pure tensor network state for a 16-qubit quantum circuit.

Apply quantum gates#

Let’s construct the GHZ quantum circuit by applying the corresponding quantum gates.

Create the marginal distribution object#

Once the quantum circuit has been constructed, let’s create the marginal distribution object that will compute the marginal distribution tensor (reduced density matrix) for qubits 0 and 1.

Configure the marginal distribution object#

Now we can configure the marginal distribution object by setting the number of hyper-samples to be used by the tensor network contraction path finder.

Prepare the computation of the marginal distribution tensor#

Let’s create a workspace descriptor and prepare the computation of the marginal distribution tensor.

Set up the workspace#

Now we can set up the required workspace buffer.

Compute the marginal distribution tensor#

Once everything has been set up, we compute the requested marginal distribution tensor (reduced density matrix) for qubits 0 and 1, copy it back to Host memory, and print it.

Free resources#