다음을 통해 공유


Visual Studio Code를 사용하여 Q# 프로그램을 제출하는 방법

Visual Studio Code를 사용하여 Q# 프로그램을 만들고 실제 양자 하드웨어에 제출하는 방법을 알아봅니다. 양자 컴퓨팅 작업을 독립 실행형 Q# 프로그램으로 Azure Quantum에 제출하고, Q# 프로젝트에서 Python과 Q#을 결합하고, Jupyter Notebook을 실행할 수 있습니다.

Azure Quantum에 Q# 작업 제출

VS Code를 사용하여 Q# 프로그램을 실행, 디버그 및 Azure Quantum에 제출하는 방법을 알아봅니다.

필수 조건

설치 세부 정보는 VS Code에 QDK 설치를 참조 하세요.

Q# 샘플 프로그램 로드

  1. VS Code에서 새 텍스트 파일 파일을 > 선택하고 파일을 RandomNum.qs로 저장합니다.

  2. RandomNum.qs를 열고 입력sample한 다음 옵션 목록에서 임의 비트 샘플을 선택하고 파일을 저장합니다.

    파일에서 단어 샘플을 작성할 때 코드 샘플 목록을 보여 주는 Visual Studio Code의 Q# 파일 스크린샷

참고 항목

사용자 고유의 Q# 파일을 열 수도 있습니다. 이전 Q# 프로그램을 실행하고 오류가 발생하는 경우 테스트 및 디버깅을 참조 하세요.

Q# 프로그램 실행

  1. 기본 제공 시뮬레이터에서 로컬로 프로그램을 테스트하려면 진입점 작업 옆에 있는 명령 목록에서 실행을 클릭하거나 Ctrl+F5를 누릅니다. 디버그 콘솔에 출력이 표시됩니다.

  2. Azure Quantum에 제출하기 전에 프로그램을 디버그하려면 진입점 작업 옆에 있는 명령 목록에서 디버그를 클릭하거나 F5 키를 누릅니다. 상단에 있는 디버깅 컨트롤을 사용하여 코드를 프로시저 단위로 실행합니다. Q# 프로그램 디버깅에 대한 자세한 내용은 테스트 및 디버깅을 참조 하세요.

    실행 및 디버그 명령으로 코드 렌즈를 찾을 위치를 보여 주는 Visual Studio Code의 Q# 파일을 스크린샷으로 표시합니다.

빈도 히스토그램 시각화

빈도 히스토그램은 양자 프로그램을 여러 번 실행하여 얻은 결과 또는 "샷"의 분포를 나타냅니다. 히스토그램의 각 막대는 가능한 결과에 해당하며, 높이가 결과가 관찰되는 횟수를 나타냅니다. 빈도 히스토그램은 이러한 결과의 확률 분포를 시각화하는 데 도움이 됩니다.

  1. 보기 - 명령 팔레트를 선택하고 Q#: 파일을 실행하고 히스토그램 옵션을 표시해야 하는 "히스토그램"을 입력합니다.> 진입점 작업 옆에 있는 명령 목록에서 히스토그램 을 클릭할 수도 있습니다. Q# 히스토그램 창을 열려면 이 옵션을 선택합니다.

    히스토그램 명령으로 코드 렌즈를 찾을 수 있는 위치를 보여 주는 Visual Studio Code의 Q# 파일을 스크린샷으로 표시합니다.

  2. 프로그램을 실행하는 여러 (예: 100개의 샷)을 입력하고 Enter 키를 누릅니 . 히스토그램이 Q# 히스토그램 창에 표시됩니다.

  3. 왼쪽 위 설정 아이콘 을 클릭하여 옵션을 표시합니다.

    설정을 표시하는 방법을 보여 주는 Visual Studio Code의 Q# 히스토그램 창 스크린샷

  4. 막대를 클릭하여 해당 결과의 백분율표시합니다. 이 경우 0과 1의 두 가지 가능한 결과가 있으며 각 결과의 백분율은 50%에 가깝습니다.

    Visual Studio Code의 Q# 히스토그램 창을 스크린샷으로 표시합니다.

마우스 스크롤 휠 또는 트랙 패드 제스처를 사용하여 히스토그램을 확대/축소할 수 있습니다. 확대하면 스크롤하는 동안 'Alt'를 눌러 차트를 이동하면 됩니다.

양자 회로 시각화

양자 회로 다이어그램은 양자 연산의 시각적 표현입니다. 양자 프로그램을 통해 큐비트의 흐름을 보여 줍니다. 여기에는 게이트 및 적용된 측정값이 포함됩니다. 자세한 내용은 Visual Studio Code의 Quantum 회로 다이어그램을 참조하세요.

  1. 보기 - 명령 팔레트를 선택하고 Q#: 회로 옵션을 표시해야 하는 "회로"를 입력합니다.> 진입점 작업 옆에 있는 명령 목록에서 회로 를 클릭할 수도 있습니다.

    코드 렌즈 회로 명령을 찾을 위치를 보여 주는 Visual Studio Code의 Q# 파일을 스크린샷으로 표시합니다.

  2. 회로가 Q# 회로 창에 표시됩니다. 회로 다이어그램은 |0⟩ 상태로 초기화된 하나의 큐비트 레지스터를 보여줍니다. 그런 다음, 하다마드 게이트 H가 큐비트에 적용되고 측정 연산이 이어지며 미터 기호로 표현됩니다. 자세한 내용은 Quantum 회로 규칙을 참조 하세요.

    임의 비트 작업에 대한 결과 회로 다이어그램을 보여 주는 Q# 회로 창 스크린샷

Azure Quantum에 연결하고 작업 제출

VS Code에서 직접 연결하고 작업을 제출할 수 있습니다. 이 예제에서는 Rigetti 시뮬레이터에 작업을 제출합니다.

  1. 보기 - 명령 팔레트를 선택하고 Q#을 입력합니다. Azure Quantum 작업 영역에 연결합니다.> Enter 키를 누릅니다.

  2. Azure 계정을 선택하고 프롬프트에 따라 기본 디렉터리, 구독 및 작업 영역에 연결합니다.

    참고 항목

    연결 문자열 있는 경우 연결 문자열을 선택하고 Azure Quantum 작업 영역에 해당하는 연결 문자열 붙여넣을 수 있습니다. 자세한 내용은 연결 문자열 사용하여 Quantum 작업 영역에 연결을 참조하세요.

  3. 연결되면 탐색기 창에서 Quantum 작업 영역을 확장합니다.

  4. 작업 영역을 확장하고 Rigetti 공급자를 확장합니다.

    참고 항목

    Azure Quantum에 연결하는 데 문제가 있는 경우 작업 영역 이름 옆에 경고 아이콘이 표시됩니다. 작업 영역 이름을 마우스로 가리키면 오류 정보가 표시됩니다.

  5. 로 rigetti.sim.qvm을 target선택합니다.

    Rigetti 시뮬레이터 target를 로 선택하는 방법을 보여 주는 Visual Studio Code의 스크린샷

  6. 이름 오른쪽에 있는 재생 아이콘을 target 선택하여 현재 Q# 프로그램 제출을 시작합니다. 팝업이 표시되면 QIR target 프로필 변경을 선택하고 계속합니다.

    Rigetti 시뮬레이터 target를 로 실행하는 방법을 보여 주는 Visual Studio Code의 스크린샷

  7. 작업을 식별하는 이름을 추가합니다.

  8. 샷 수 또는 프로그램이 실행되는 횟수를 추가합니다.

  9. 작업을 제출하려면 Enter 키를 누릅니다. 작업 상태가 화면 하단에 표시됩니다.

  10. 작업을 확장하고 작업을 마우스로 가리키면 작업 시간과 상태가 표시됩니다.

  11. 결과를 보려면 작업 이름 옆에 있는 클라우드 아이콘을 선택하여 작업 영역 스토리지에서 결과를 다운로드하고 VS Code에 표시합니다.

    양자 작업의 결과를 다운로드하고 보는 방법을 보여 주는 Visual Studio Code의 스크린샷

Azure Quantum에 Jupyter Notebooks 작업 제출

VS Code를 사용하여 Q# Jupyter Notebook을 실행, 디버그 및 Azure Quantum에 제출하는 방법을 알아봅니다. 이 문서의 단계는 Azure Quantum 포털의 로컬 Jupyter 서버 또는 Notebook에 있는 Jupyter Notebook에도 적용됩니다.

필수 조건

설치 세부 정보는 VS Code에 QDK 설치를 참조 하세요.

  • Azure 구독의 Azure Quantum 작업 영역입니다. 작업 영역을 만들려면 Azure Quantum 작업 영역 만들기를 참조하세요.

  • Python 및 Pip가 설치된 Python 환경

  • Azure Quantum Development Kit, PythonJupyter 확장이 설치된 VS Code

  • Azure Quantum qsharp, qsharp-widgets패키지 azure-quantumipykernel 패키지.

    python -m pip install --upgrade qsharp qsharp-widgets azure-quantum ipykernel
    

로컬 시뮬레이터에서 프로그램 실행 및 테스트

  1. VS Code에서 명령 팔레트 보기를 > 선택하고 만들기: 새 Jupyter Notebook을 선택합니다.

  2. 오른쪽 위에서 VS Code는 Notebook에 대해 선택된 Python 및 가상 Python 환경의 버전을 검색하고 표시합니다. 여러 Python 환경이 있는 경우 오른쪽 위에 있는 커널 선택기를 사용하여 커널을 선택해야 할 수 있습니다. 환경이 검색되지 않은 경우 VS Code의 Jupyter Notebook에서 설정 정보를 참조하세요.

  3. Notebook의 첫 번째 셀에서 다음 Python 코드를 실행하여 필요한 모듈을 가져옵니다.

    import qsharp
    import azure.quantum
    
    • 모듈은 qsharp 셀에 %%qsharp 직접 Q# 코드를 입력할 수 있는 매직 명령을 활성화합니다.
    • 이 모듈은 azure-quantum Azure Quantum 작업 영역에 대한 연결을 제공합니다.

    참고 항목

    Jupyter Python 커널 ipykernel 이 검색되지 않으면 VS Code에서 설치하라는 메시지를 표시합니다.

  4. 다른 셀을 추가하고 사용자가 지정한 임의 비트 수를 반환하는 이 Q# 코드를 입력합니다.

    참고 항목

    매직 명령을 %%qsharp입력하는 즉시 Notebook 셀의 형식이 Python에서 Q#으로 변경됩니다.

    %%qsharp
    
    operation Random() : Result {
        use q = Qubit();
        H(q);
        let result = M(q);
        Reset(q);
        return result
    }
    
    operation RandomNBits(N: Int): Result[] {
        mutable results = [];
        for i in 0 .. N - 1 {
            let r = Random();
            set results += [r];
        }
        return results
    }
    
  5. 작업을 테스트하려면 Notebook에 eval 이전에 정의된 Q# 작업을 호출할 수 있는 메서드를 사용할 수 있습니다.

    qsharp.eval("RandomNBits(4)")
    
    [Zero, One, One, Zero]
    
  6. 로컬 시뮬레이터에 프로그램을 실행하려면 이 메서드를 run 사용합니다. shots프로그램을 실행할 횟수 또는 횟수를 지정하고 시뮬레이터는 결과를 Python 목록으로 반환합니다.

    qsharp.run("RandomNBits(4)", shots=10)
    
    [[One, One, One, One],
    [Zero, Zero, One, Zero],
    [One, Zero, Zero, One],
    [Zero, One, Zero, Zero],
    [One, Zero, One, One],
    [One, Zero, One, Zero],
    [One, One, One, Zero],
    [One, One, One, One],
    [Zero, Zero, Zero, One],
    [One, Zero, Zero, One]]
    

양자 회로 시각화

패키지를 사용하여 양자 회로를 시각화할 qsharp-widgets 수 있습니다. 이 패키지는 양자 회로 다이어그램을 SVG 이미지로 렌더링하는 위젯을 제공합니다. 자세한 내용은 Jupyter Notebook을 사용하는 양자 회로 다이어그램을 참조 하세요.

회로를 시각화하려면 다음 코드를 새 셀에 추가합니다.

from qsharp_widgets import Circuit

Circuit(qsharp.circuit("RandomNBits(4)"))

Q# 작업의 회로를 시각화하는 방법을 보여 주는 Jupyter Notebook의 스크린샷

자세한 내용은 Quantum 회로 규칙을 참조 하세요.

기본 프로필을 사용하여 작업 컴파일

로컬 양자 시뮬레이터에서 프로그램을 실행하는 경우 모든 유형의 Q# 프로그램을 제출할 수 있습니다. 그러나 Azure Quantum 하드웨어 targets 는 모든 Q# 프로그램을 실행하는 데 필요한 전체 기능을 아직 지원하지 않습니다. Q# 프로그램을 컴파일하고 Azure Quantum에 제출하려면 프로필을 설정 target 하여 하드웨어에서 지원하는 기능을 target Q#에 알려야 합니다. 현재 기본 프로필입니다. 자세한 내용은 Azure Quantum의 프로필 형식을 참조 하세요.

Q# 인터프리터를 다시 초기화하고 기본 프로필을 사용하여 프로그램을 컴파일하려면 다음을 수행합니다.

  1. 이 메서드를 init 사용하여 프로필을 설정합니다.

    qsharp.init(target_profile=qsharp.TargetProfile.Base)
    
  2. 인터프리터를 다시 초기화했기 때문에 새 프로필을 사용하여 코드를 다시 실행해야 합니다.

    %%qsharp
    
    operation Random() : Result {
        use q = Qubit();
        H(q);
        let result = M(q);
        Reset(q);
        return result
    }
    
    operation RandomNBits(N: Int): Result[] {
        mutable results = [];
        for i in 0 .. N - 1 {
            let r = Random();
            set results += [r];
        }
        return results
    }
    
  3. 다음으로, 메서드를 compile 사용하여 프로그램의 진입점인 작업 또는 함수를 지정합니다. 이렇게 하면 코드를 QIR 형식으로 컴파일한 다음, 양자 하드웨어에 제출할 수 있습니다.

    MyProgram = qsharp.compile("RandomNBits(4)")
    

Azure Quantum에 연결하고 작업 제출

이제 프로그램을 올바른 형식으로 컴파일했으므로 Azure Quantum에 연결할 개체를 만듭니 azure.quantum.Workspace 다. 연결하려면 Azure Quantum 작업 영역의 리소스 ID를 사용합니다. 리소스 ID 및 위치는 Azure Portal의 작업 영역 개요 페이지에서 복사할 수 있습니다.

  1. 새 셀에서 Azure Quantum 작업 영역에서 리소스 ID 및 위치를 입력합니다.

    MyWorkspace = azure.quantum.Workspace(
        resource_id = "MyResourceID",
        location = "MyLocation"
    )
    
  2. 이 메서드를 get_targets 사용하여 작업 영역에서 사용 가능한 하드웨어 targets 를 확인합니다.

    MyTargets = MyWorkspace.get_targets()
    print("This workspace's targets:")
    MyTargets
    
  3. 다음을 선택합니다.rigetti.sim.qvmtarget

    MyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
    
  4. 마지막으로, 메서드를 submit 사용하여 매개 변수를 사용하여 프로그램을 제출하고 결과를 표시합니다.

    job = MyTarget.submit(MyProgram, "MyQuantumJob", shots=100)
    job.get_results()
    
    {'[0, 1, 1, 1]': 0.08,
     '[1, 1, 0, 0]': 0.1,
     '[0, 0, 1, 0]': 0.04,
     '[0, 1, 0, 0]': 0.05,
     '[1, 0, 1, 0]': 0.05,
     '[1, 0, 0, 0]': 0.07,
     '[0, 1, 0, 1]': 0.07,
     '[1, 0, 1, 1]': 0.07,
     '[0, 0, 0, 0]': 0.08,
     '[1, 1, 1, 0]': 0.05,
     '[0, 0, 0, 1]': 0.1,
     '[0, 0, 1, 1]': 0.04,
     '[0, 1, 1, 0]': 0.09,
     '[1, 0, 0, 1]': 0.04,
     '[1, 1, 1, 1]': 0.05,
     '[1, 1, 0, 1]': 0.02}
    
  5. 작업의 모든 속성은 다음과 같이 액세스할 수 있습니다 job.details.

    print(job.details)
    print("\nJob name:", job.details.name)
    print("Job status:", job.details.status)
    print("Job ID:", job.details.id)
    
    {'additional_properties': {'isCancelling': False}, 'id': '0150202e-9638-11ee-be2f-b16153380354', 'name': 'MyQuantumJob', 'provider_id': 'rigetti'...}
    Job name: MyQuantumJob
    Job status: Succeeded
    Job ID: 0150202e-9638-11ee-be2f-b16153380354
    

추가 작업 세부 정보

Python 패키지에는 azure.quantum 더 자세한 작업 데이터를 표시하는 추가 메서드가 포함되어 있습니다.

  • job.get_results_histogram(): 이 메서드는 각 고유 측정값에 대한 결과 및 샷 횟수의 사전을 반환합니다. 예를 들어 이전 작업의 결과는 다음과 같습니다.

    print(job.get_results_histogram()) 
    
    {   
        '[0, 1, 1, 1]' : {'Outcome' : [0, 1, 1, 1], 'Count' : 8},  
        '[1, 1, 0, 0]' : {'Outcome' : [1, 1, 0, 0], 'Count' : 10},
        '[0, 0, 1, 0]' : {'Outcome' : [0, 0, 1, 0], 'Count' : 4},
        '[0, 1, 0, 0]' : {'Outcome' : [0, 1, 0, 0], 'Count' : 5},
        '[1, 0, 1, 0]' : {'Outcome' : [1, 0, 1, 0], 'Count' : 5},  
        '[1, 0, 0, 0]' : {'Outcome' : [1, 0, 0, 0], 'Count' : 7},
        '[0, 1, 0, 1]' : {'Outcome' : [0, 1, 0, 1], 'Count' : 7},
        '[1, 0, 1, 1]' : {'Outcome' : [1, 0, 1, 1], 'Count' : 7},
        '[0, 0, 0, 0]' : {'Outcome' : [0, 0, 0, 0], 'Count' : 8},  
        '[1, 1, 1, 0]' : {'Outcome' : [1, 1, 1, 0], 'Count' : 5},
        '[0, 0, 0, 1]' : {'Outcome' : [0, 0, 0, 1], 'Count' : 10},
        '[0, 0, 1, 1]' : {'Outcome' : [0, 0, 1, 1], 'Count' : 4},
        '[0, 1, 1, 0]' : {'Outcome' : [0, 1, 1, 0], 'Count' : 9},  
        '[1, 0, 0, 1]' : {'Outcome' : [1, 0, 0, 1], 'Count' : 4},
        '[1, 1, 1, 1]' : {'Outcome' : [1, 1, 1, 1], 'Count' : 5},
        '[1, 1, 0, 1]' : {'Outcome' : [1, 1, 0, 1], 'Count' : 2}
    }
    
  • job.get_results_shots() : 이 메서드는 각 샷 결과의 목록을 반환합니다. 예를 들어 이전 작업의 결과는 다음과 같습니다.

    print(job.get_results_shots()) 
    
    [ [0, 1, 1, 1], [1, 0, 1, 1], [0, 0, 1, 1], [1, 1, 0, 1], [1, 0, 0, 0], [1, 0, 1, 1], [1, 1, 0, 1], ...]
    

Q# 작업을 사용하여 Python을 Azure Quantum에 제출

VS Code를 사용하여 Q# 작업을 호출하는 Python 프로그램을 작성하고, Python 명령 또는 Azure CLI를 사용하여 Azure에 연결하고, 작업을 제출하는 방법을 알아봅니다.

필수 조건

설치 세부 정보는 VS Code에 QDK 설치를 참조 하세요.

Q# 작업 만들기 및 가져오기

qsharp 패키지를 사용하면 Q# 파일에 함수 및 작업을 저장하고 Python 코드에서 함수 및 작업을 호출할 수 있는 Q# 프로젝트를 만들 수 있습니다. 이는 입력 매개 변수를 사용하는 프로그램을 시작해야 하는 경우에 특히 유용합니다.

  1. 단계에 따라 Q# 프로젝트를 만듭니다.

  2. 새 텍스트 파일을 열고 사용자가 지정한 임의 비트 수를 반환하는 다음 Q# 코드를 추가하고 프로젝트의 /src 디렉터리에 파일을 다음과 같이 Source.qs저장합니다.

    
        operation Random() : Result {
        use q = Qubit();
        H(q);
        let result = M(q);
        Reset(q);
        return result
    }
    
    operation RandomNBits(N: Int): Result[] {
        mutable results = [];
        for i in 0 .. N - 1 {
            let r = Random();
            set results += [r];
        }
        return results
    }
    
  3. 프로젝트 루트 폴더( qsharp.json 파일 사용)에서 다른 파일을 열고 다른 파일로 randomNum.py저장합니다.

  4. 다음 코드를 추가하여 모듈을 qsharp azure.quantum 가져옵니다.

    import qsharp
    import azure.quantum
    
  5. 다음으로, Q# 프로젝트 루트 폴더를 정의하는 코드를 추가하고 로컬 시뮬레이터에서 target 작업을 테스트합니다. 작업은 네임스페이스로 <호출됩니다.<>operation_name()>이고, 이 경우 반환할 임의 비트 수를 전달합니다.

    참고 항목

    네임스페이스가 지정되지 Source.qs않으므로 컴파일러는 파일 이름을 기본 네임스페이스 Source.RandomNBits()로 사용합니다. 자세한 내용은 프로젝트 및 암시적 네임스페이스를 참조 하세요.

    qsharp.init(project_root = '../MyProjectRootFolder')
    print(qsharp.eval("Source.RandomNBits(4)"))
    
    [Zero, One, One, Zero]
    
  6. 추가 shots 매개 변수를 전달하고 Python 목록에서 결과를 반환하는 메서드를 사용하여 작업을 run 테스트할 수도 있습니다. 에서 randomNum.py이전 인쇄 문을 다음으로 바꿉니다.

    result = qsharp.run("Source.RandomNBits(4)", shots=10)
    for x in result:
        print(x)
    
    [[One, One, One, One],
    [Zero, Zero, One, Zero],
    [One, Zero, Zero, One],
    [Zero, One, Zero, Zero],
    [One, Zero, One, One],
    [One, Zero, One, Zero],
    [One, One, One, Zero],
    [One, One, One, One],
    [Zero, Zero, Zero, One],
    [One, Zero, Zero, One]]
    

기본 프로필을 사용하여 작업 컴파일

로컬 양자 시뮬레이터에서 프로그램을 실행하는 경우 모든 유형의 Q# 프로그램을 제출할 수 있습니다. 그러나 Azure Quantum 하드웨어 targets 는 모든 Q# 프로그램을 실행하는 데 필요한 전체 기능을 아직 지원하지 않습니다. Q# 프로그램을 컴파일하고 Azure Quantum에 제출하려면 프로필을 설정 target 하여 하드웨어에서 target 지원하는 기능을 Q#에 알려야 합니다. 현재는 해당 또는 Adpative_RI 프로필입니다Base. 자세한 내용은 Azure Quantum의 프로필 형식을 참조 하세요.

참고 항목

VS Code의 Q# 전용 프로그램의 경우 VS Code는 Base 프로필을 자동으로 설정합니다.

  1. 이 메서드를 init 사용하여 프로필을 설정합니다.

    qsharp.init(project_root = '../MyProjectRootFolder', target_profile=qsharp.TargetProfile.Base)
    

    참고 항목

    qsharp 상태를 다시 초기화하기 때문에 컴파일러가 작업을 찾을 RandomNBits 위치를 알 수 있도록 매개 변수를 다시 설정 project_root 해야 합니다. 이전 절차의 5단계에서도 이 작업을 수행할 수 있습니다.

  2. 그런 다음, 메서드를 compile 사용하여 프로그램의 진입점인 작업 또는 함수를 지정합니다. 그러면 컴파일된 프로그램을 양자 하드웨어에 제출할 수 있습니다.

    MyProgram = qsharp.compile("Source.RandomNBits(4)")
    

Azure Quantum에 연결하고 작업 제출

Azure Quantum에 연결하고 Python에서 만든 Workspace 개체를 사용하여 작업을 제출하거나 Azure CLI를 사용하여 작업을 연결하고 제출할 수 있습니다. Azure CLI를 사용하려면 컴파일된 프로그램을 텍스트 파일로 저장하고 CLI 명령을 사용하여 해당 파일을 제출해야 합니다.

이제 프로그램을 올바른 형식으로 컴파일했으므로 Azure Quantum에 연결할 개체를 만듭니 azure.quantum.Workspace 다. 연결하려면 Azure Quantum 작업 영역의 리소스 ID를 사용합니다. 리소스 ID 및 위치는 Azure Portal의 작업 영역 개요 페이지에서 복사할 수 있습니다.

  1. 다음 코드를 randomNum.py추가하여 Azure Quantum 작업 영역에서 리소스 ID 및 위치를 채웁니다.

    workspace = azure.quantum.Workspace(
        resource_id = "MyResourceID",
        location = "MyLocation"
    )
    
  2. 이 메서드를 get_targets 사용하여 작업 영역에서 사용 가능한 하드웨어 targets 를 표시합니다.

    MyTargets = workspace.get_targets()
    print("This workspace's targets:")
    for x in MyTargets:
        print(x)
    
  3. 다음을 선택합니다.rigetti.sim.qvmtarget

    MyTarget = workspace.get_targets("rigetti.sim.qvm")
    
  4. 마지막으로, 메서드를 submit 사용하여 매개 변수를 사용하여 프로그램을 제출합니다. 작업 결과는 Python 사전으로 반환됩니다.

    job = MyTarget.submit(MyProgram, "MyPythonJob", shots=100)
    results = job.get_results()
    print("\nResults: ", results)
    
  5. 값만 추출하고 표시하려면 다음을 수행합니다.

    for x in results:
        print(x)
    
    [0, 0, 0, 0]
    0.3
    [1, 0, 0, 0]
    0.1
    [1, 1, 1, 1]
    0.3
    [0, 1, 1, 1]
    0.3
    
  6. 작업의 모든 속성은 다음과 같이 액세스할 수 있습니다 job.details.

    print(job.details)
    print("\nJob name:", job.details.name)
    print("Job status:", job.details.status)
    print("Job ID:", job.details.id)
    
    {'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...}
    Job name: MyPythonJob
    Job status: Succeeded
    Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f
    

추가 작업 세부 정보

Python 패키지에는 azure.quantum 더 자세한 작업 데이터를 표시하는 추가 메서드가 포함되어 있습니다.

  • job.get_results_histogram(): 이 메서드는 각 고유 측정값에 대한 결과 및 샷 횟수의 사전을 반환합니다. 예를 들어 이전 작업의 결과는 다음과 같습니다.

    results = job.get_results_histogram()
    for x in results.items():
        print(x)
    
    {   
        '[0, 0, 0, 0]' : {'Outcome' : [0, 0, 0, 0], 'Count' : 30},  
        '[1, 0, 0, 0]' : {'Outcome' : [1, 0, 0, 0], 'Count' : 10},
        '[1, 1, 1, 1]' : {'Outcome' : [1, 1, 1, 1], 'Count' : 30},
        '[0, 1, 1, 1]' : {'Outcome' : [0, 1, 1, 1], 'Count' : 30}
    }
    
  • job.get_results_shots() : 이 메서드는 각 샷 결과의 목록을 반환합니다. 예를 들어 이전 작업의 결과는 다음과 같습니다.

    print(job.get_results_shots()) 
    
    [ [0, 0, 0, 0], [1, 1, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1], [1, 0, 0, 0], [0, 1, 1, 1], [0, 0, 0, 0], ...]