def test_run_remote_simulator_compile(self): qjob = jobp.QuantumJob(self.qc, doCompile=True, backend='ibmqx_qasm_simulator') api = IBMQuantumExperience(self.QE_TOKEN, {"url": self.QE_URL}, verify=True) jobp.run_remote_backend(qjob.qobj, api)
def test_compile_job(self): """Test compilation as part of job""" qjob = jobp.QuantumJob(self.qasm_text, doCompile=True, backend='local_qasm_simulator') jp = jobp.JobProcessor([qjob], callback=None) jp.submit(silent=True)
def test_run_local_simulator_unitary(self): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) quantum_job = jobprocessor.QuantumJob( compiled_circuit, doCompile=False, backend='local_unitary_simulator') jobprocessor.run_local_simulator(quantum_job.qobj)
def test_init_job_processor(self): njobs = 5 job_list = [] for i in range(njobs): qjob = jobp.QuantumJob(self.qc, doCompile=False) job_list.append(qjob) jp = jobp.JobProcessor(job_list, callback=None)
def test_run_job_processor_local_parallel(self): def job_done_callback(results): try: self.log.info(pprint.pformat(results)) for result in results: self.assertTrue(result.get_status() == 'COMPLETED') except Exception as e: self.job_processor_exception = e finally: self.job_processor_finished = True njobs = 20 job_list = [] for i in range(njobs): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) quantum_job = jobprocessor.QuantumJob( compiled_circuit, backend='local_qasm_simulator') job_list.append(quantum_job) self.job_processor_finished = False self.job_processor_exception = None jp = jobprocessor.JobProcessor(job_list, max_workers=None, callback=job_done_callback) jp.submit(silent=True) while not self.job_processor_finished: # Wait until the job_done_callback is invoked and completed. pass if self.job_processor_exception: raise self.job_processor_exception
def test_mix_local_remote_jobs(self): """test mixing local and remote jobs Internally local jobs execute in seperate processes since they are CPU bound and remote jobs execute in seperate threads since they are I/O bound. The module gets results from potentially both kinds in one list. Test that this works. """ njobs = 6 job_list = [] basis = 'u1,u2,u3,cx' backend_type = ['local_qasm_simulator', 'ibmqx_qasm_simulator'] i = 0 for circuit in self.rqg.get_circuits(format='QuantumCircuit')[:njobs]: compiled_circuit = openquantumcompiler.compile(circuit.qasm()) backend = backend_type[i % len(backend_type)] self.log.info(backend) qjob = jobp.QuantumJob(compiled_circuit, backend=backend) job_list.append(qjob) i += 1 jp = jobp.JobProcessor(job_list, max_workers=None, token=self.QE_TOKEN, url=self.QE_URL, callback=None) jp.submit(silent=True)
def test_run_remote_simulator(self): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) qjob = jobp.QuantumJob(compiled_circuit, doCompile=False, backend='ibmqx_qasm_simulator') api = IBMQuantumExperience(self.QE_TOKEN, {"url": self.QE_URL}, verify=True) jobp.run_remote_backend(qjob.qobj, api)
def test_backend_not_found(self): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) job = jobprocessor.QuantumJob(compiled_circuit, backend='non_existing_backend') self.assertRaises(QISKitError, jobprocessor.JobProcessor, [job], callback=None, token=self.QE_TOKEN, url=self.QE_URL)
def test_run_job_processor_local(self): njobs = 5 job_list = [] for i in range(njobs): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) qjob = jobp.QuantumJob(compiled_circuit, backend='local_qasm_simulator', doCompile=False) job_list.append(qjob) jp = jobp.JobProcessor(job_list, callback=None) jp.submit(silent=True)
def test_random_local(self): """test randomly generated circuits on local_qasm_simulator""" njobs = 5 job_list = [] basis = 'u1,u2,u3,cx,id' backend = 'local_qasm_simulator' for circuit in self.rqg.get_circuits(format='QuantumCircuit')[:njobs]: compiled_circuit = openquantumcompiler.compile(circuit.qasm()) qjob = jobp.QuantumJob(compiled_circuit, backend=backend) job_list.append(qjob) jp = jobp.JobProcessor(job_list, max_workers=1, callback=None) jp.submit(silent=True)
def test_run_job_processor_online(self): njobs = 1 job_list = [] for i in range(njobs): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) qjob = jobp.QuantumJob(compiled_circuit, backend='ibmqx_qasm_simulator') job_list.append(qjob) jp = jobp.JobProcessor(job_list, token=self.QE_TOKEN, url=self.QE_URL, callback=None) jp.submit(silent=True)
def test_run_job_processor_local_parallel(self): njobs = 20 job_list = [] for i in range(njobs): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) qjob = jobp.QuantumJob(compiled_circuit, backend='local_qasm_simulator') job_list.append(qjob) def job_done_callback(results): self.log.info(pprint.pformat(results)) for result, _ in results: self.assertTrue(result['result'][0]['status'] == 'DONE') jp = jobp.JobProcessor(job_list, max_workers=None, callback=job_done_callback) jp.submit(silent=True)
def test_init_quantum_job_qobj(self): formatted_circuit = self.qasm_text qobj = { 'id': 'qobj_init', 'config': { 'max_credits': 3, 'shots': 1024, 'backend': 'local_qasm_simulator' }, 'circuits': [{ 'name': 'example', 'compiled_circuit': formatted_circuit, 'layout': None, 'seed': None }] } qjob = jobp.QuantumJob(qobj, preformatted=True)
def test_error_in_job(self): njobs = 5 job_list = [] for i in range(njobs): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) qjob = jobp.QuantumJob(compiled_circuit, backend='local_qasm_simulator') job_list.append(qjob) def job_done_callback(results): for result, _ in results: self.log.info(pprint.pformat(result)) self.assertTrue(result['status'] == 'ERROR') jp = jobp.JobProcessor(job_list, max_workers=None, callback=job_done_callback) tmp = jobp.run_local_simulator jobp.run_local_simulator = mock_run_local_simulator jp.submit(silent=True) jobp.run_local_simulator = tmp
def test_init_quantum_job(self): quantum_job = jobprocessor.QuantumJob(self.qc)
def test_run_local_simulator_compile(self): quantum_job = jobprocessor.QuantumJob(self.qasm_text, doCompile=True, backend='local_qasm_simulator') jobprocessor.run_local_simulator(quantum_job.qobj)
def testrun_local_simulator(self): compiled_circuit = openquantumcompiler.compile(self.qc.qasm()) qjob = jobp.QuantumJob(compiled_circuit, doCompile=False, backend='local_qasm_simulator') jobp.run_local_simulator(qjob.qobj)
def test_init_quantum_job(self): qjob = jobp.QuantumJob(self.qc)
def testrun_local_simulator_compile(self): qjob = jobp.QuantumJob(self.qasm_text, doCompile=True, backend='local_qasm_simulator') jobp.run_local_simulator(qjob.qobj)