예제 #1
0
    def test_generic(self):

        qpu = xacc.getAccelerator('tnqvm')
        buffer = qpu.createBuffer('q', 4)

        @xacc.qpu(accelerator=qpu)
        def entangle(buffer):
            H(0)
            CNOT(0, 1)
            Measure(0, 0)
            Measure(1, 1)

        xacc.Initialize()

        entangle(buffer)
        self.assertEqual(entangle.nParameters(), 0)
        self.assertEqual(entangle.getFunction().toString(), 'H q0\nCNOT q0,q1\nMeasure q0\nMeasure q1\n')
예제 #2
0
import xacc

xacc.Initialize()

# Get access to D-Wave QPU and
# allocate some qubits
dwave = xacc.getAccelerator('dwave')
qubits = dwave.createBuffer('q')


# Define the function we'd like to
# off-load to the QPU, here
# we're using a the QMI low-level language
@xacc.qpu(accelerator=dwave)
def f(buffer, h, j):
    qmi(0, 0, h)
    qmi(1, 1, h)
    qmi(0, 1, j)


# Execute on D-Wave
f(qubits, 1., 2.)

# Print the buffer, this displays
# solutions and energies
print(qubits)

xacc.Finalize()
예제 #3
0
파일: d3.py 프로젝트: zpparks314/xacc-vqe
import xacc
import xaccvqe
from xaccvqe import PauliOperator

xacc.Initialize(['--compiler','quil'])

ibm = xacc.getAccelerator('local-ibm')
tnqvm = xacc.getAccelerator('tnqvm')
rigetti = xacc.getAccelerator('rigetti')

#buffer = ibm.createBuffer('q', 2)
buffer = tnqvm.createBuffer('q', 2)

h2 = PauliOperator(5.906709445) + \
        PauliOperator({0:'X',1:'X'}, -2.1433) + \
        PauliOperator({0:'Y',1:'Y'}, -2.1433) + \
        PauliOperator({0:'Z'}, .21829) + \
        PauliOperator({1:'Z'}, -6.125)

h3 = h2 + PauliOperator(9.625) + \
    PauliOperator({1:'X',2:'X'}, -3.913119) + \
    PauliOperator({1:'Y',2:'Y'}, -3.913119) + \
    PauliOperator({2:'Z'}, -9.625)


@xaccvqe.qpu.vqe(accelerator=tnqvm, observable=h3)
def ansatz(buffer, t0, t1):
    X(0)
    Ry(t0, 2)
    CNOT(2, 0)
    Ry(t1, 1)
예제 #4
0
   0.0906437679061661 1 1 2 1 0 0 3 0
   0.3317360224302783 1 1 2 1 2 0 1 0
   0.0906437679061661 1 1 3 1 1 0 3 0
   0.3317360224302783 1 1 3 1 3 0 1 0
   0.3317360224302783 2 1 0 1 0 0 2 0
   0.0906437679061661 2 1 0 1 2 0 0 0
   0.3317360224302783 2 1 1 1 1 0 2 0
   0.0906437679061661 2 1 1 1 3 0 0 0
   -0.4759344611440753 2 1 2 0
   0.0906437679061661 2 1 3 1 1 0 0 0
   0.3486989747346679 2 1 3 1 3 0 2 0
   0.3317360224302783 3 1 0 1 0 0 3 0
   0.0906437679061661 3 1 0 1 2 0 1 0
   0.3317360224302783 3 1 1 1 1 0 3 0
   0.0906437679061661 3 1 1 1 3 0 1 0
   0.0906437679061661 3 1 2 1 0 0 1 0
   0.3486989747346679 3 1 2 1 2 0 3 0
   -0.4759344611440753 3 1 3 0
}"""
        op = vqe.compile(src)
        buffer = xacc.getAccelerator('tnqvm').createBuffer('q',4)

        self.assertAlmostEqual(vqe.execute(op, buffer, **{'task':'vqe', 'n-electrons':2}).energy, -1.13727, places=5)
		
				
if __name__ == '__main__':
    xacc.Initialize(['--itensor-svd-cutoff','1e-16'])
    if xacc.hasAccelerator('tnqvm'):
       unittest.main() 
    xacc.Finalize()