다음을 통해 공유


리소스 추정기를 사용하여 실행 중인 대규모 프로그램을 최적화하는 방법

이 문서에서는 Azure Quantum 리소스 추정기를 사용하여 대규모 Q# 프로그램을 실행할 때 실행 시간을 최적화하는 방법을 알아봅니다.

리소스 추정기를 실행하는 방법에 대한 자세한 내용은 리소스 추정기를 실행하는 다양한 방법을 참조 하세요.

필수 조건

VS Code에서 Python을 사용하려면 다음도 필요합니다.

  • 최신 버전의 PythonVS Code용 Jupyter 확장을 설치합니다.

  • 최신 Azure Quantum qsharp 패키지입니다.

    python -m pip install --upgrade qsharp 
    

Q# 프로그램을 사용하여 수동 캐싱

자원 예측 작업에 리소스 예측 작업을 제출하면 양자 프로그램이 완전히 평가되어 리소스 예측값을 추출합니다. 여러 번 호출되는 작업의 리소스 Q# 를 예측하려는 경우(예: 반복이 많은 루프에서) 리소스 예측 작업의 실행에 시간이 오래 걸릴 수 있습니다. 긴 실행 시간을 줄이는 한 가지 방법은 작업을 한 번 실행하고, 비용을 계산 및 캐시하고, 후속 호출 시 데이터를 사용하는 것입니다. 이 기술은 수동 캐싱이라고 합니다.

리소스 추정기는 target 수동 캐싱을 수행하는 두 Q# 가지 함수를 지원합니다. BeginEstimateCaching(name: String, variant: Int): BoolEndEstimateCaching(): Unit BeginEstimateCaching 함수는 비용을 캐시하려는 코드 조각의 고유한 이름인 입력 name 과 동일한 조각에 대한 다양한 비용 변형을 구분하는 정 variant 수로 사용됩니다.

참고 항목

두 가지 특수 작업 BeginEstimateCaching 이며 EndEstimateCaching 리소스 예측 도구에 대한 기본 작업입니다. 다른 실행 targets에서 지원되지 않습니다.

예를 들어 반복에서 여러 번 호출 ExpensiveOperation 되는 작업이 있다고 가정 Q# 해 보겠습니다. 캐싱을 사용하여 예상 시간을 줄일 수 있습니다.

operation ExpensiveOperation(c: Int, b : Bool): Unit {
    if BeginEstimateCaching("MyNamespace.ExpensiveOperation", SingleVariant()) {
        // Code block to be cached
        EndEstimateCaching();
    }
}

반복적으로 BeginEstimateCaching 사용되는 경우 ExpensiveOperation 매번 호출됩니다. BeginEstimateCaching 처음으로 호출되면 비용 데이터의 누적을 반환 true 하고 시작합니다. 이렇게 하면 코드가 비용이 많이 드는 코드 조각의 실행을 계속합니다. 호출될 때 EndEstimateCaching 비용 데이터는 향후 사용을 위해 저장되며 프로그램의 전체 비용에 통합됩니다.

두 번째 시간(이후)이라고 하는 경우 ExpensiveOperation Resource Estimator는 저장된(캐시된) 비용 데이터를 찾아 프로그램의 전체 비용에 통합하고 반환합니다 false. 이로 인해 비용이 많이 드는 코드 조각을 건너뛰므로 리소스 추정기가 프로그램을 더 빠르게 실행합니다. EndEstimateCaching 는 조건의 끝에 배치되어야 하며, 묶 BeginEstimateCaching-EndEstimateCaching 인 영역은 중첩될 수 있습니다.

SingleVariant() 는 첫 번째 실행에서 수집된 비용 데이터를 코드 조각의 모든 후속 실행에서 다시 사용할 수 있음을 나타냅니다. 항상 그렇지는 않을 수도 있습니다. 예를 들어 코드에 'c' 변수의 홀수 값과 짝수 값에 대한 다른 비용이 있는 경우 다음 값을 제공할 variant 수 있습니다.

operation ExpensiveOperation(c: Int, b : Bool): Unit {
    if BeginEstimateCaching("MyNamespace.ExpensiveOperation", c % 2) {
        // Some code
        EndEstimateCaching();
    }
}

이 경우 캐시는 홀수 값과 짝수 값에 c대해 다릅니다. 즉, 짝수 값 c 에 대해 수집된 데이터는 짝수 값에만 다시 사용되며 홀수 값cc에도 동일하게 적용됩니다.

참고 항목

리소스 예측 도구로 작업하는 동안 문제가 발생하는 경우 문제 해결 페이지를 확인하거나 문의하세요AzureQuantumInfo@microsoft.com.