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.