Colaboratory에서 GPU를 사용한 양자 회로 시뮬레이션

소개



이번에는 양자 컴퓨터 자체에 대해서나 게이트 조작 등의 기본적인 부분은 쓰지 않습니다.
만약 양자 컴퓨터? 게이트? 라는 분은 이쪽을 참고해 주세요.

양자 컴퓨터와 양자 게이트와 나
게이트 형 양자 컴퓨터의 기본 지식

그리고 이번 코드는 여기에 있습니다. 실행하고 싶은 경우는 playground 모드로 열어 주세요. (연구실의 합숙용으로 간단하게 만든 것이므로, 코드는 더럽습니다...)

양자 컴퓨팅 시뮬레이터



최근에는 Qunasys 사Qulacs 등의 GPU에 의한 양자 컴퓨팅 시뮬레이션 툴 등이 있다. 원래 양자 컴퓨터는, 말하자면 초병렬 처리가 특기인 컴퓨터로, 그 시뮬레이션을 GPU에 시키자고 하는 것은 자연스러운 흐름이 되어 느껴집니다. 그래서 이번에는 Google 공동체을 사용하여 간단하게 시뮬레이션을 해보고 싶습니다.

환경



Google 공동체 (Google 계정이 있으면 누구나 무료로 사용할 수 있습니다)
이번에는 파이썬에서 gpu를 쉽게 사용할 수있는 CuPy이라는 모듈을 사용합니다.

준비


  • ファイル에서 Python3の新しいノートブック를 선택하여 새 노트북 만들기
  • ランタイム에서 ランタイムのタイプを変更를 선택하고 ハードウェアアクセラレータGPU로 설정합니다.  

  • 실험



    이번에는 2 양자 비트, 10 양자 비트의 회로로 실험을 수행합니다.
    우선 초기 상태를 $\mid{0}\rangle^{\otimes{n}}$로 합니다.

    2 양자 비트의 양자 얽힘



    회로도에서 말하면 이런 느낌. (그림은 IBMQExperience의 Composer)
    아래는 실행 시간이고 위는 최종 상태입니다.

    CPU


    GPU


    그건 GPU가 더 느립니다 ...
    그럼 10 양자 비트에서는 어떻습니까?

    10 양자 비트에서 양자 푸리에 변환



    회로도는 커져 버리므로 생략합니다 (colab의 노트북에는 qiskit로 출력한 것이 있습니다.)
    게이트의 연속으로 구현됩니다. (자세한 내용은 양자 푸리에 변환(Quantum Fourier Transform)이란?)

    CPU


    GPU


    무려 약 20배나 빨라졌습니다! 그렇다면 어느 정도라면 GPU를 사용하면 유리한가, 이번은 양자 푸리에 변환으로 검증해 보겠습니다.  
    다음과 같은 결과가 되었습니다.



    이를 보면 8 양자 비트를 경계로 실행 시간의 차이가 크게 열려있는 것을 알 수 있습니다.

    요약



    이번에는 gpu를 이용한 cupy에 의한 양자 회로의 시뮬레이션을 실시해 갔습니다. 앞서 언급했듯이 양자 컴퓨터는 매우 병렬 처리를 잘하는 컴퓨터입니다. 현재 시뮬레이션 할 수있는 양자 비트의 수는 약 40 ~ 50 정도로되어 있지만, 어쩌면 이것이 더 커져 갈지도 모릅니다.

    실수 등 있으면 지적하실 수 있으면 다행입니다!

    참고



    【초속으로 무료 GPU 사용】 TensorFow(Keras)/PyTorch/Chainer 환경 구축 on Colaboratory
    제어 게이트를 만드는 방법

    좋은 웹페이지 즐겨찾기