Skip to main content
IBM Quantum Platform

VF2 컴파일러 패스 객체


QkVF2LayoutConfiguration

typedef struct QkVF2LayoutConfiguration QkVF2LayoutConfiguration

VF2 레이아웃의 구성이 통과되었습니다. 이는 시간이 지남에 따라 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 – 물리적 큐비트를 얻기 위한 가상 큐비트

리턴

지정된 가상 큐비트가 매핑하는 물리적 큐비트

qk_vf2_layout_result_free

void qk_vf2_layout_result_free(QkVF2LayoutResult *layout)

객체를 QkVF2LayoutResult 해제하십시오

QkCircuit *qc = qk_circuit_new(1, 0);
안전

가 유효한 null이 아닌 포인터가 아닐 QkVF2Layout layout 경우 동작은 정의되지 않습니다.

매개변수

  • 레이아웃 – 해제할 레이아웃에 대한 포인터
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.