Commit 2303e53d authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Added adder circuit example for dm-sim and random circuit for TNQVM



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 2a74ae2c
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
/*
 * quantum ripple-carry adder
 * Cuccaro et al, quant-ph/0410184
 */
// Install DM-SIM plugin: 
// qcor -install-plugin https://github.com/ORNL-QCI/DM-Sim.git
// Using DM-Sim:
// qcor -linker g++ -qrt nisq adder.qasm -shots 1024 -qpu dm-sim[gpus:1]
// Note: on a login node, GPU-GPU comm is disabled, hence can only run with 1 GPU.

// Multi-GPU on compute node: e.g, see the bsub example:
OPENQASM 3;

gate ccx a,b,c
{
  h c;
  cx b,c; tdg c;
  cx a,c; t c;
  cx b,c; tdg c;
  cx a,c; t b; t c; h c;
  cx a,b; t a; tdg b;
  cx a,b;
}

gate majority a, b, c {
  cx c, b;
  cx c, a;
  ccx a, b, c;
}

gate unmaj a, b, c {
  ccx a, b, c;
  cx c, a;
  cx a, b;
}

qubit cin;
qubit a[4];
qubit b[4];
qubit cout;
bit ans[5];
// Input values:
uint[4] a_in = 1;  
uint[4] b_in = 15; 

for i in [0:4] {  
  if (bool(a_in[i])) {
    x a[i];
  }
  if (bool(b_in[i])) {
    x b[i];
  }
}
// add a to b, storing result in b
majority cin, b[0], a[0];

for i in [0: 3] { 
  majority a[i], b[i + 1], a[i + 1]; 
}

cx a[3], cout;

for i in [2: -1: -1] { 
  unmaj a[i], b[i+1], a[i+1]; 
}
unmaj cin, b[0], a[0];

measure b[0:3] -> ans[0:3];
measure cout[0] -> ans[4];
 No newline at end of file
+26 −0
Original line number Diff line number Diff line
OPENQASM 3;
include "stdgates.inc";

const n_qubits = 50;
const n_layers = 12;
qubit q[n_qubits];

// Compile: qcor random_circuit.qasm
// Run by: mpiexec -n <N> ./a.out -qrt nisq -qpu tnqvm -qpu-config tnqvm.ini 

// Loop over layers
float[64] theta = 1.234;
for i in [0:n_layers] {
    // Single qubit layers:
    for j in [0:n_qubits] {
        rx(theta) q[j];
    }

    // For demonstration purposes, just change the 
    // angle in each layer by adding 1.0.
    theta += 1.0;
    // Entanglement layers:
    for j in [0:n_qubits - 1] {
        cx q[j], q[j+1];
    }
}
+11 −0
Original line number Diff line number Diff line
#!/bin/bash
#BSUB -P <PROJECT_ID>
#BSUB -W 1
#BSUB -nnodes 1
#BSUB -o out_cc.txt -e err_cc.txt

module load python/3.8.10 gcc/9.3.0 cuda/11.4.0 openblas/0.3.15-omp

## "--smpiargs=-gpu" is for enabling GPU-Direct RDMA
## 4 GPUs
jsrun -n4 -a1 -g1 -c1 --smpiargs="-gpu" ./a.out
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
tnqvm-visitor=exatn:float
exatn-buffer-size-gb=2
bitstring=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
 No newline at end of file