리소스 추정기를 사용하여 실행 중인 대규모 프로그램을 최적화하는 방법
이 문서에서는 Azure Quantum 리소스 추정기를 사용하여 대규모 Q# 프로그램을 실행할 때 실행 시간을 최적화하는 방법을 알아봅니다.
리소스 추정기를 실행하는 방법에 대한 자세한 내용은 리소스 추정기를 실행하는 다양한 방법을 참조 하세요.
필수 조건
- 최신 버전의 Visual Studio Code 또는 웹에서 VS Code를 엽니다.
- 최신 버전의 Quantum Development Kit 확장은. 설치 세부 정보는 QDK 확장설정을 참조하세요.
VS Code에서 Python을 사용하려면 다음도 필요합니다.
최신 버전의 Python 및 VS Code용 Jupyter 확장을 설치합니다.
최신 Azure Quantum
qsharp
패키지입니다.python -m pip install --upgrade qsharp
Q# 프로그램을 사용하여 수동 캐싱
자원 예측 작업에 리소스 예측 작업을 제출하면 양자 프로그램이 완전히 평가되어 리소스 예측값을 추출합니다. 여러 번 호출되는 작업의 리소스 Q# 를 예측하려는 경우(예: 반복이 많은 루프에서) 리소스 예측 작업의 실행에 시간이 오래 걸릴 수 있습니다. 긴 실행 시간을 줄이는 한 가지 방법은 작업을 한 번 실행하고, 비용을 계산 및 캐시하고, 후속 호출 시 데이터를 사용하는 것입니다. 이 기술은 수동 캐싱이라고 합니다.
리소스 추정기는 target 수동 캐싱을 수행하는 두 Q# 가지 함수를 지원합니다. BeginEstimateCaching(name: String, variant: Int): Bool
EndEstimateCaching(): 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
에 대해 수집된 데이터는 짝수 값에만 다시 사용되며 홀수 값c
c
에도 동일하게 적용됩니다.
참고 항목
리소스 예측 도구로 작업하는 동안 문제가 발생하는 경우 문제 해결 페이지를 확인하거나 문의하세요AzureQuantumInfo@microsoft.com.
관련 콘텐츠
- 리소스 추정기 결과를 검색합니다.
- 리소스 추정기를 실행하는 다양한 방법
- 리소스 추정기target 매개 변수 사용자 지정