양자 소프트웨어 (Quantum Software)
편집하기 (부분)
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
= 양자 컴파일러 (Quantum Compiler) = 양자 프로그램은 여러 단계의 변화를 거치며 하드웨어에 적합하게 변환되는데 이 과정에서 양자 컴파일러의 역할이 매우 중요하다. 양자 컴파일러는 주어진 양자 회로를 하드웨어가 지니는 자원 및 성능상의 조건을 만족시키면서 가장 효율적인 프로그램의 형태로 변환하는 것이다. 나아가 [[NISQ]]시대의 [[양자 컴퓨터]]가 지니는 복잡한 자원 제약 조건 및 불안정성 문제는 컴파일러를 이용한 최적화 기술의 중요성이 더욱 주목된다. 양자 하드웨어는 [[큐비트]] 기술에 따라 사용할 수 있는 게이트의 종류, 동시에 실행될 수 있는 [[게이트]]의 수, [[결어긋남|결어긋남(decoherence)]] 시간, [[양자 오류 정정|게이트 충실도]], 양자 오류 정정 부호(quantum error correction code)의 종류, 물리 큐비트의 연결성(connectivity) 및 개수 등 다양한 제약을 지니고 있다. 컴파일러는 각 하드웨어에 맞는 특성들을 반영하여 최종적으로 실제 하드웨어에서 동작할 수 있는 프로그램으로 변환해야 한다. 사용자는 고 수준 언어로 양자 프로그램을 작성한다. 일반적으로 양자 프로그램은 바로 실행 가능한 형태로 변환되는 것이 아니라, 중간 언어 표현으로 변환되어 필요한 최적화가 적용된 후 하드웨어 ISA 수준으로 변환하는 단계적 과정을 거친다. 각 단계에서는 잘 정의되어 있는 양자 프로그래밍 언어 혹은 중간 표현 간의 변환이 이루어진다. 단계를 내려갈수록 추상화 수준은 낮아지고 하드웨어의 특성이 드러난다. 이 때 컴파일러는 입력으로 받는 프로그램을 잘 분석한 뒤 같은 결과를 보이지만 보다 빠른 프로그램으로 변환한다. 나아가 컴파일러는 각 단계에서 드러난 하드웨어의 특성도 반영하여 프로그램 최적화를 수행해야 한다. 단계를 내려갈수록 하드웨어 독립적인 최적화보다 하드웨어를 고려한 최적화가 중요해진다. 이렇듯 중간 언어 표현도 여러 추상화 수준을 지닐 수 있으며 각 단계에서 요소 기술에 독립적인 최적화와 요소 기술을 고려한 최적화 기술이 적용된다. [[File:기술백서 전체수정 9.jpg|thumb|400px|컴파일러를 통한 양자 프로그램의 변환 과정. ]] 고전 컴파일러와 달리 양자 컴파일러가 지니는 특징은 자원 제약의 엄격함이다. 특히, NISQ 시대의 양자 컴퓨터는 자원 제약이 심하고 노이즈에 민감하여 이를 모두 고려하면서도 성능이 뛰어난 프로그램으로 변환하는 것이 쉽지 않다. 여러 기술이 접목될 수 있지만 일반적으로 양자 컴파일러가 지원해야 할 기술은 게이트 합성(gate synthesis), 큐비트 맵핑(qubit mapping) 및 게이트 스케줄링(gate scheduling) 세 가지로 볼 수 있다. 게이트 합성은 임의의 게이트를 양자 하드웨어가 지원하는 게이트로 변환하는 기술이며, 일반적으로 양자 하드웨어는 소수의 범용(universal) 게이트 집합만을 지원하며 이를 원시 게이트(primitive gates)라 한다. 임의의 양자 게이트는 유한한 개수의 원시 게이트들만 사용하여 높은 정밀도로 근사할 수 있으나, 정밀도가 높아질수록 사용되는 게이트의 수가 증가하여 소모되는 자원 및 시간이 증가한다. 높은 정밀도는 프로그램 작성자의 의도에 부합하는 반면 긴 실행 시간이 필요하므로 상충 관계에 있다. 특히, 근사 해야 할 게이트가 많을 경우 정밀도를 충분히 높도록 설정하여 근사로 인한 오류가 증폭되는 것을 방지할 필요가 있다. 컴파일러는 [[양자 회로]]를 분석하여 근사 오류로 인한 영향을 미미하게 하면서 높은 수준의 정밀도를 확보하기 위한 게이트 근사 기술이 필요한다. 큐비트 맵핑은 양자 회로에서 사용되는 논리 큐비트들을 실제 하드웨어 상의 물리 큐비트에 대응시키는 기술이다. 일반적으로 양자 오류 정정 부호 기술을 사용하기 위해 여러 개의 물리 큐비트가 하나의 논리 큐비트에 대응되도록 설계된다. 그 밖에도 물리 큐비트들간의 연결성 및 고전 레지스터와의 통신 채널 등의 제약으로 인해 큐비트 간의 자리를 바꾸든지 양자 전송 연산을 해야 할 경우가 발생할 수 있다. 양자 컴파일러는 임의의 고 수준 양자 회로를 원시 게이트와 물리 큐비트로 구성된 동일한 연산을 수행하는 회로로 변환해야 한다. 게이트 스케쥴링은 게이트 합성을 통해 변환된 원시 게이트들의 적용 순서를 효율적으로 결정하는 기술이다. 제어 신호의 전송 시간 및 간섭 현상, 동시에 사용될 수 있는 게이트 연산의 종류, 결어긋남(decoherence) 및 교정(calibration) 시간 등의 제약으로 인해 같은 양자 회로에 대해서도 게이트 연산의 적용 순서에 따라 성능상의 차이를 보인다. 양자 컴파일러는 양자 회로에 기술된 게이트들간의 의존성을 파악하고 이를 위배하지 않으면서 하드웨어의 성능을 끌어올리기 위한 최적화 기술을 지니고 있어야 한다.
요약:
한국양자정보학회 위키에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다(자세한 사항은
한국양자정보학회 위키:저작권
문서를 보세요).
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
계정 만들기
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보