QISKit 가이드
2017년 11월 시점의 기사이며 최신 내용이 아닙니다.
소개
IBM Q 정보
IBM 누마타 씨의 해설 기사에서와 같이 GUI로 양자 회로를 설계하여 Simulator or 실제 기계로 계산 가능
양자 컴퓨터로 1+1 계산 : 시뮬레이터에서 00,01끼리 더한 기사
양자 컴퓨터(실기)로 양자 푸리에 변환 : ibmqx2를 이용한 양자 푸리에 변환을 한 기사
QISKit
Github 튜토리얼 용 Jupyter, Python SDK, Swift SDK, JavaScript SDK, Python API, 사용자 가이드, openqasm 가이드 등이 있습니다
왜 공식은 영어와 일본어를 지원하며 Python SDK에서 매뉴얼
양자 컴퓨터에서 1+1 계산 [실장편] : Python SDK 구현 예제 기사
QISKit에 나온 OpenQASM이란 무엇인가, API와 SDK의 차이는 무엇인가에 대해서는 이하에서는 기술합니다.
OpenQASM
"Switch to Qasm Editor"를 클릭하면,
QASM으로 회로를 설계할 수 있습니다.
SDK
예를 들어 1+1 시뮬레이터 계산은 다음과 같이 계산할 수 있지만,
from qiskit import QuantumProgram
import json
def read_api():
f_api = open("../api_token.json", "r")
api_dic = json.load(f_api)
QX_TOKEN = api_dic["api"]
QX_URL = "https://quantumexperience.ng.bluemix.net/api"
return(QX_TOKEN, QX_URL)
class Q_Circuit():
_Name = "summation"
_Num_qr = 4
_Num_cr = 4
def summation():
qp = QuantumProgram()
token, url = read_api()
qp.set_api(token, url)
#Qbitの設定
qr = qp.create_quantum_register("qr", Q_Circuit._Num_qr)
cr = qp.create_classical_register("cr", Q_Circuit._Num_cr)
qc = qp.create_circuit(Q_Circuit._Name, [qr], [cr])
#回路部分
qc.h(qr[0])
qc.h(qr[1])
qc.ccx(qr[0], qr[1], qr[2])
qc.cx(qr[0], qr[3])
qc.cx(qr[1], qr[3])
qc.measure(qr, cr)
print(qp.get_qasm(Q_Circuit._Name)) #QASMコードの取得
result = qp.execute([Q_Circuit._Name], shots=1024) #計算の実行
print(result.get_data(Q_Circuit._Name))
if __name__ == '__main__':
summation()
print(qp.get_qasm(Q_Circuit._Name))
에서 얻을 수 있도록(듯이), 또 qiskit의 내용( Open Quantum Assembly Language , _ 쿠안츠 m시 r 쿠 t. py )을 보면 알 수 있듯이, 내부에서는 OPENQASM이 사용되고 있습니다.
(execute는 기본값이 backend="local_qasm_simulator")
API
API는 더 직접적으로 OpenQASM 자체를 설명하고 IBM Q로 보냅니다 (_쿠안츠 m레기s r. py).
1+1의 경우, 이전 OPENQASM을 이용하여 시뮬레이터에서,
from IBMQuantumExperience import IBMQuantumExperience
import json
def read_api():
f_api = open("../api_token.json", "r")
api_dic = json.load(f_api)
QX_TOKEN = api_dic["api"]
QX_URL = "https://quantumexperience.ng.bluemix.net/api"
return(QX_TOKEN, QX_URL)
def Qasm_Code():
qasm = """//OPENQASM 2.0
OPENQASM 2.0;
include "qelib1.inc";
qreg q[4];
creg c[4];
h q[0];
h q[1];
ccx q[0],q[1],q[2];
cx q[0],q[3];
cx q[1],q[3];
measure q[3] -> c[0];
measure q[2] -> c[1];
measure q[1] -> c[2];
measure q[0] -> c[3];
"""
return(qasm)
def main():
token, url = read_api()
IBMQ = IBMQuantumExperience(token)
qasm = Qasm_Code()
result = IBMQ.run_experiment(qasm, shots= 1024,name='api_test', timeout=60)
print(result.values() )
if __name__ == '__main__':
main()
로 계산을 실행할 수 있습니다. (run_experiment의 기본값은 backend='simulator',
참고 코드)
ibmqx4에 계산을 던지려면 run_experiment를 backend="ibmqx4"로 지정합니다.
(위의 회로 설계에서는 ibmqx4에서는 계산이 실행되지 않으므로 적절히 qasm을 변경해야합니다)
API를 통해 던진 계산은 IBM Q의 Composer 페이지의 Quantum Scores에 결과가 쌓여 버리는 것이 주의점입니다.
from qiskit import QuantumProgram
import json
def read_api():
f_api = open("../api_token.json", "r")
api_dic = json.load(f_api)
QX_TOKEN = api_dic["api"]
QX_URL = "https://quantumexperience.ng.bluemix.net/api"
return(QX_TOKEN, QX_URL)
class Q_Circuit():
_Name = "summation"
_Num_qr = 4
_Num_cr = 4
def summation():
qp = QuantumProgram()
token, url = read_api()
qp.set_api(token, url)
#Qbitの設定
qr = qp.create_quantum_register("qr", Q_Circuit._Num_qr)
cr = qp.create_classical_register("cr", Q_Circuit._Num_cr)
qc = qp.create_circuit(Q_Circuit._Name, [qr], [cr])
#回路部分
qc.h(qr[0])
qc.h(qr[1])
qc.ccx(qr[0], qr[1], qr[2])
qc.cx(qr[0], qr[3])
qc.cx(qr[1], qr[3])
qc.measure(qr, cr)
print(qp.get_qasm(Q_Circuit._Name)) #QASMコードの取得
result = qp.execute([Q_Circuit._Name], shots=1024) #計算の実行
print(result.get_data(Q_Circuit._Name))
if __name__ == '__main__':
summation()
API는 더 직접적으로 OpenQASM 자체를 설명하고 IBM Q로 보냅니다 (_쿠안츠 m레기s r. py).
1+1의 경우, 이전 OPENQASM을 이용하여 시뮬레이터에서,
from IBMQuantumExperience import IBMQuantumExperience
import json
def read_api():
f_api = open("../api_token.json", "r")
api_dic = json.load(f_api)
QX_TOKEN = api_dic["api"]
QX_URL = "https://quantumexperience.ng.bluemix.net/api"
return(QX_TOKEN, QX_URL)
def Qasm_Code():
qasm = """//OPENQASM 2.0
OPENQASM 2.0;
include "qelib1.inc";
qreg q[4];
creg c[4];
h q[0];
h q[1];
ccx q[0],q[1],q[2];
cx q[0],q[3];
cx q[1],q[3];
measure q[3] -> c[0];
measure q[2] -> c[1];
measure q[1] -> c[2];
measure q[0] -> c[3];
"""
return(qasm)
def main():
token, url = read_api()
IBMQ = IBMQuantumExperience(token)
qasm = Qasm_Code()
result = IBMQ.run_experiment(qasm, shots= 1024,name='api_test', timeout=60)
print(result.values() )
if __name__ == '__main__':
main()
로 계산을 실행할 수 있습니다. (run_experiment의 기본값은 backend='simulator',
참고 코드)
ibmqx4에 계산을 던지려면 run_experiment를 backend="ibmqx4"로 지정합니다.
(위의 회로 설계에서는 ibmqx4에서는 계산이 실행되지 않으므로 적절히 qasm을 변경해야합니다)
API를 통해 던진 계산은 IBM Q의 Composer 페이지의 Quantum Scores에 결과가 쌓여 버리는 것이 주의점입니다.
Reference
이 문제에 관하여(QISKit 가이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yjmtsmt/items/da4ff0740f4fb1902dce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)