VF2 컴파일러 패스 객체
QkVF2LayoutConfiguration
typedef struct QkVF2LayoutConfiguration QkVF2LayoutConfigurationVF2 레이아웃의 구성이 통과되었습니다. 이는 시간이 지남에 따라 API 변경을 허용하기 위한 캡슐화된 구성입니다. 아래 생성자 및 세터를 사용하여 이를 생성하고 변경할 수 있습니다.
qk_vf2_layout_configuration_new
QkVF2LayoutConfiguration *qk_vf2_layout_configuration_new(void)
VF2 패스에 대해 모든 것을 완전히 무제한으로 실행하는 새 구성을 생성하십시오.
작업 완료 시 반환값을 사용하여 메모리를 qk_vf2_layout_configuration_free 해제하십시오.
리턴
구성 정보에 대한 포인터.
qk_vf2_layout_configuration_free
void qk_vf2_layout_configuration_free(QkVF2LayoutConfiguration *config)
객체를 QkVf2LayoutConfiguration 해제하십시오.
안전
가 비어 있지 않은 포인터이지만 유효하고 정렬된 QkVF2LayoutConfiguration 객체를 가리키지 않을 경우 동작이 config 정의되지 않습니다.
매개변수
- config – 구성에 대한 포인터.
qk_vf2_layout_configuration_set_call_limit
void qk_vf2_layout_configuration_set_call_limit(QkVF2LayoutConfiguration *config, int64_t before, int64_t after)
VF2 알고리즘이 첫 번째 일치 항목을 찾기 전후로 매핑을 확장하려는 시도를 제한합니다.
VF2 알고리즘은 수행한 단계 수를 추적하며, 한계에 도달하면 종료됩니다. 첫 번째 일치 항목이 발견된 후, 단계 수는 재설정되지 않은 채로 한계값이 "이전" 한계값에서 "이후" 한계값으로 전환됩니다.
안전
가 유효하고 정렬된, null이 아닌 QkVF2LayoutConfiguration포인터가 아닐 경우 config 동작은 정의되지 않습니다.
매개변수
- config – 업데이트할 구성.
- before – 첫 번째 일치 항목이 발견되기 전에 허용할 시도 횟수. 부정 수로 설정하면 경계가 없습니다.
- 첫 번째 일치 항목(있는 경우)이 발견된 후 허용할 시도 횟수. 부정 수로 설정하면 경계가 없습니다.
qk_vf2_layout_configuration_set_time_limit
void qk_vf2_layout_configuration_set_time_limit(QkVF2LayoutConfiguration *config, double limit)
VF2 검색의 실행 시간을 제한하십시오.
이는 하드 리미트가 아닙니다. 개선된 레이아웃이 발견될 때만 확인됩니다. 이 옵션을 사용하면 패스가 비결정적이 됩니다. 대신 qk_vf2_layout_configuration_set_call_limit 사용하는 것이 일반적으로 권장됩니다.
안전
가 유효하고 정렬된, null이 아닌 QkVF2LayoutConfiguration포인터가 아닐 경우 config 동작은 정의되지 않습니다.
매개변수
- config – 업데이트할 구성.
- 제한 – 허용할 시간(초). 제한 없이 실행하려면 양수가 아닌 값으로 설정하십시오.
qk_vf2_layout_configuration_set_max_trials
void qk_vf2_layout_configuration_set_max_trials(QkVF2LayoutConfiguration *config, uint64_t limit)
완료된 개선 사항의 총 개수를 제한하십시오.
VF2 의 검색 트리는 점수에 따라 QkTarget실시간으로 전정되므로, 이 제한은 특히 강력하지 않습니다. 더 엄격한 상한에 대해서는 를 qk_vf2_layout_configuration_set_call_limit 참조하십시오.
안전
가 유효하고 정렬된, null이 아닌 QkVF2LayoutConfiguration포인터가 아닐 경우 config 동작은 정의되지 않습니다.
매개변수
- config – 업데이트할 구성.
- 제한 – 종료하기 전에 허용할 완전한 레이아웃의 수. 0으로 설정하면 제한 없이 실행됩니다.
qk_vf2_layout_configuration_set_shuffle_seed
void qk_vf2_layout_configuration_set_shuffle_seed(QkVF2LayoutConfiguration *config, uint64_t seed)
주어진 시드 값으로 입력 그래프의 노드 셔플링을 활성화합니다.
이는 효과적으로 VF2 의 일치 순서를 수정하게 되며, 이론적으로 이는 유한 검색 공간이 노드 인덱스에 기반하여 편향되지 않음을 의미합니다. 실제 실행 시 Qiskit은 "평균" 모드(초기 레이아웃 탐색에 해당)에서는 VF2++ 의 순서 개선 기법을 사용하며, "정확" 모드에서는 신분 매핑(identity mapping)에서 시작합니다. 이 두 가지 정렬 휴리스틱은 일반적으로 무작위화보다 주어진 문제에 대한 결과를 찾을 가능성이 훨씬 더 높습니다.
이 함수가 호출되지 않으면 노드 셔플링이 수행되지 않습니다.
안전
가 유효하고 정렬된, null이 아닌 QkVF2LayoutConfiguration포인터가 아닐 경우 config 동작은 정의되지 않습니다.
매개변수
- config – 업데이트할 구성.
- seed – 활성화된 셔플링에 사용할 시드.
qk_vf2_layout_configuration_set_score_initial
void qk_vf2_layout_configuration_set_score_initial(QkVF2LayoutConfiguration *config, bool score_initial)
상호작용 그래프의 초기 "사소한" 레이아웃을 적극적으로 채점할지 여부.
일반적으로 하드웨어로 이미 하위 변환된 회로를 개선하기 위해 VF2 패스를 사용하는 경우, 점수 기반 트리밍을 위한 true 기준선을 설정하기 위해 이 옵션을 설정해야 합니다. 그렇지 않다면, (기본값 false )으로 두어 아무런 영향도 미치지 않을 가능성이 높은 계산을 피할 수 있습니다.
안전
가 유효하고 정렬된, null이 아닌 VF2LayoutConfiguration포인터가 아닐 경우 config 동작은 정의되지 않습니다.
매개변수
- config – 업데이트할 구성.
- score_initial – 초기 단순 레이아웃을 즉시 점수화할지 여부.
QkVF2LayoutResult
typedef struct QkVF2LayoutResult QkVF2LayoutResult해당 qk_transpiler_pass_standalone_vf2_layout 함수를 실행하면 분석 결과를 객체 QkVF2LayoutResult 형태로 반환합니다. 이 객체는 트랜스파일러 패스의 결과, 패스가 레이아웃을 찾을 수 있었는지 여부, 그리고 패스가 선택한 레이아웃이 무엇인지를 포함합니다.
함수
qk_vf2_layout_result_has_match
bool qk_vf2_layout_result_has_match(const QkVF2LayoutResult *layout)
결과가 발견되었는지 확인하십시오.
값에는 true "사소한" 레이아웃을 시도하도록 지정된 구성이 최상으로 판정된 상황(따라서 적절한 경우 보조 큐비트 확장을 제외하면 큐비트 재라벨링이 필요하지 않음)이 포함됩니다. 명시적 재매핑이 저장되었는지 여부를 확인하려면 qk_vf2_layout_result_has_improvement 참조하십시오.
안전
가 유효한 null이 아닌 포인터가 아닐 QkVF2LayoutResult layout 경우 동작은 정의되지 않습니다.
매개변수
- 레이아웃 – 레이아웃에 대한 포인터
리턴
true VF2-based 레이아웃 패스가 일치하는 항목을 찾은 경우.
qk_vf2_layout_result_has_improvement
bool qk_vf2_layout_result_has_improvement(const QkVF2LayoutResult *layout)
결과가 단순한 레이아웃에 비해 개선되었는지 확인하십시오.
안전
가 유효한 null이 아닌 포인터가 아닐 QkVF2LayoutResult layout 경우 동작은 정의되지 않습니다.
매개변수
- 레이아웃 – 레이아웃에 대한 포인터
리턴
true VF2-based 레이아웃 패스가 개선된 일치를 발견한 경우.
qk_vf2_layout_result_map_virtual_qubit
uint32_t qk_vf2_layout_result_map_virtual_qubit(const QkVF2LayoutResult *layout, uint32_t qubit)
주어진 가상 큐비트에 대한 물리적 큐비트를 얻으십시오
안전
행동은 다음의 경우 정의되지 layout 않습니다: - 유효하고 null이 아닌 결과 QkVF2LayoutResult 포함 포인터가 아닐 경우, 또는 - 큐비트가 초기 회로에 대한 범위를 벗어날 경우.
매개변수
- 레이아웃 – 레이아웃에 대한 포인터
- qubit – 물리적 큐비트를 얻기 위한 가상 큐비트
리턴
지정된 가상 큐비트가 매핑하는 물리적 큐비트