양자 소프트웨어 (Quantum Software)
편집하기 (부분)
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
= 고전 양자 시뮬레이션 (Classical Quantum Simulation) = 하드웨어 개발에 있어서 시뮬레이션은 설계 변경의 유연성을 확보하고 하드웨어를 검증하기 위한 핵심 요소이다. 고전 컴퓨터는 기 개발된 고전 컴퓨터를 사용하여 복잡한 시뮬레이션 과정을 거쳐 성능을 분석하고 개선하는 피드백의 과정을 거쳐 빠르게 성장할 수 있었다. 적어도 가까운 미래에는 [[양자 컴퓨터]]도 마찬가지의 과정을 거쳐 개발될 것은 자명하다. NISQ 시대의 양자 컴퓨터가 지니는 불안정성에 비추어볼 때 시스템 검증의 역할을 할 고전 시뮬레이션 기술은 더욱 중요한 의미를 지니며, 더불어 고전 양자 시뮬레이터는 노이즈를 고려한 시뮬레이션도 지원해야 한다. 나아가 양자 시스템을 효율적으로 시뮬레이션하는 것은 현대 과학 계산 분야에서도 매우 중요하다. 고전 양자 시뮬레이터는 임의의 양자 컴퓨터를 추상화하는 가상 양자 컴퓨터로 볼 수 있으며, 양자 컴퓨터 개발의 속도를 높이고 양자 컴퓨팅 생태계를 확장하기 위해서는 효율적인 고전 양자 시뮬레이션 기술이 절실하다. 고전 컴퓨터를 통한 효율적인 양자 시스템 시뮬레이션 알고리듬이 존재하는지에 대해서는 알려진 바가 없다. 현재 사용되는 무차별 대입(brute-force) 시뮬레이션 방법은 지수적으로 증가하는 공간 및 시간 복잡도를 지닌다는 점에서 한계가 있다. 현재 세계 최고 성능의 슈퍼 컴퓨터를 이용한 고전 시뮬레이션의 크기는 50큐비트 전후의 시스템에 머물고 있다. 당연하게도 노이즈를 고려한 시뮬레이션은 메모리 사용량과 실행 시간이 증가한다. 이를 극복하기 위한 연구가 진행되고 있지만 중요한 돌파구는 찾아지지 않고 있다. 다만 가용한 고전 컴퓨팅 자원의 효율을 높이거나, 특정 조건하에서의 양자 시스템에 대한 시뮬레이션 성능을 높이는 두 가지 방향에서 연구가 진행되고 있다. 대규모 클러스터를 사용하여 고전 컴퓨팅의 성능을 극한으로 올리면 시뮬레이션 가능한 양자 프로그램의 크기가 커진다. 특히 양자 회로 시뮬레이션은 쉽게 병렬 처리할 수 있기 때문에(embarrassingly parallel) 대규모 클러스터 상에서 병렬 처리하여 부족한 연산 자원 및 메모리 자원을 확보하여 실제 실행 시간을 줄이고 보다 큰 시스템을 시뮬레이션 할 수 있다. 그러나 시뮬레이션 알고리듬의 복잡도가 개선되는 것은 아니기 때문에 확장성(scalability)에 한계가 있다. 현재 50 큐비트 전후가 그 한계점으로 전망되고 있으나, 컴퓨팅 기술의 발전 속도에 따라 더 증가할 수 있을 것으로 보인다.<ref name=Pednault>E. Pednault, J. A. Gunnels, G. Nannicini, L. Horesh & R. Wisnieff, Leveraging secondary storage to simulate deep 54-qubit sycamore circuits, [https://arxiv.org/abs/1910.09534 arXiv:1910.09534] (2019).</ref> 클러스터를 이용한 시뮬레이션 성능의 병목 지점은 노드 간의 통신에 있다. 게이트가 적용되는 위치에 따라 매 게이트 연산마다 통신이 발생할 수 있기 때문이다. 대부분의 클러스터 시뮬레이션 기술은 이러한 통신 병목을 해소하는 것을 목표로 한다.<ref name=Markov>I. L. Markov & Y. Shi, Simulating quantum computation by contracting tensor networks, SIAM Journal on Computing <b>38</b>, 963 (2008). doi:[https://doi.org/10.1137/050644756 10.1137/050644756].</ref><ref name=Pednault2017 /> 대표적으로 IBM은 양자 회로를 텐서 네트워크(tensor network)로 표현하고 텐서 축소(tensor contraction) 연산을 이용해 부분 회로로 분할하여 하나의 노드 안에서 통신 없이 시뮬레이션 할 수 있는 크기로 줄인다.<ref name=Pednault2017>E. Pednault ''et al.'', Breaking the 49-qubit barrier in the simulation of quantum circuits, [https://arxiv.org/abs/1710.05867 arXiv:1710.05867] (2017).</ref> 부분 회로에 대한 시뮬레이션 결과를 마친 노드들은 최종적으로 [[양자 얽힘]]을 표현하기 위하여 통신을 통해 다시 정규화된 상태로 연산을 이어나간다. 텐서 네트워크 표현은 일반적으로 사용될 수 있지만 양자 회로 분할을 통해 클러스터 상에서 불필요한 통신을 줄이는 데 중요한 기술이다. 임의의 양자 프로그램을 시뮬레이션하는 것이 아닌 특정 조건을 만족시키는 프로그램의 경우 보다 효율적인 시뮬레이션 알고리듬을 사용할 수 있다.<ref name=Aaronson /><ref name=Perez-Garcia>D. Perez-Garcia, F. Verstraete, M. M. Wolf & J. I. Cirac, Matrix product state representations, [https://arxiv.org/abs/quant-ph/0608197 arXiv:quant-ph/0608197] (2006).</ref> 대표적으로는 클리포드(Clifford) 게이트 집합으로 구성된 이른바 “stabilizer” 회로에 대한 다항 시간 시뮬레이션 알고리듬 기술이 개발되어 있다.<ref name=Aaronson>S. Aaronson & D. Gottesman, Improved simulation of stabilizer circuits, Physical Review A <b>70</b>, 052328 (2004). doi:[https://doi.org/10.1103/PhysRevA.70.052328 10.1103/PhysRevA.70.052328].</ref> 클리포드 게이트 집합은 범용 게이트 집합은 아니라는 점에서 한계가 있지만, Shor 오류 정정 부호 등 특정 [[양자 오류 정정]] 부호의 경우 클리포드 게이트 집합으로만 구성할 수 있다는 점에 착안하여 대규모 QECC(quantum error correcting code) 연구에 활용된다. 양자 얽힘의 정도가 낮은 회로에 대해서도 효율적인 시뮬레이션 알고리듬이 개발되었다. 양자 얽힘의 정도가 낮은 경우 슈미트 분해(Schmidt decomposition)를 이용하여 시스템의 상태를 행렬 곱 상태(Matrix product state, MPS)로 표현하면 불필요한 연산 및 공간을 줄여서 효율적으로 시뮬레이션 할 수 있다.<ref name=Perez-Garcia /> 이외에도 MPS는 양자 시스템을 기술하기 위한 새로운 형식(formalism)으로 대두되고 있다. {|class="wikitable" |+style="caption-side:bottom; text-align: left;"|고전 양자 시뮬레이션 기술. !width="12%"| !width="31%"| 무제약 시뮬레이션 !width="23%"| 제약적 시뮬레이션 !width="32%"| 제약적 시뮬레이션 |- | | 대규모 클러스터 사용 | Stabilizer 회로 | Matrix product state |- | 성능 | 가용한 노드의 개수에 비례함 | 다항 시간 | 다항 시간 |- | 비고 | 확장성을 갖지 않음 | 사용할 수 있는 게이트 집합이 제약되어 있음 | 양자 얽힘의 정도가 낮아야 함 |}
요약:
한국양자정보학회 위키에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다(자세한 사항은
한국양자정보학회 위키:저작권
문서를 보세요).
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
계정 만들기
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보