common.title
Home

Account

Sign in
Sign up

Service


Company

Overview
Service overview
Terms of service

Privacy policy

Contact
common.title

GPU量子コンピュータシミュレータcuQuantum / cuTensorNet 1,000量子ビットRY+CX回路のベンチマーク / NVIDIA V100, A100, T4

Yuichiro Minato

2023/01/16 06:34

1

近年の量子コンピュータはNISQといってエラーがあり、あまり深い回路ができません。一方で量子ビットは増え続けていますので、今回は浅い回路で量子ビットの多い計算をGPUの量子コンピュータシミュレータcuQuantumに搭載されている最新のcuTensorNetで実行してみます。


cuTensorNetはこれまでの量子コンピュータのシミュレータとは異なり特殊な実装となっています。ちょっと実装が複雑になり時間が取れなかったので作った量子回路の単一振幅といって、特定の量子ビットのビット列の振幅を求める計算をします。実際には量子回路をきちんと計算しています。


実装は特殊ですので、blueqatSDKを改造して行いました。


from sympy.matrices.determinant import S
from blueqat import Circuit
import numpy

N = 1000 c = Circuit(N)

#loop1 for i in range(N):   c.ry(np.random.rand())[i]

for i in range(0, N-1, 2):   c.cx[i, i+1]

for i in range(N):   c.ry(np.random.rand())[i]

for i in range(1, N-1, 2):   c.cx[i, i+1]

for i in range(N):   c.ry(np.random.rand())[i]

#loop2 for i in range(N):   c.ry(np.random.rand())[i]

for i in range(0, N-1, 2):   c.cx[i, i+1]

for i in range(N):   c.ry(np.random.rand())[i]

for i in range(1, N-1, 2):   c.cx[i, i+1]

for i in range(N):   c.ry(np.random.rand())[i]

#loop3 for i in range(N):   c.ry(np.random.rand())[i]

for i in range(0, N-1, 2):   c.cx[i, i+1]

for i in range(N):   c.ry(np.random.rand())[i]

for i in range(1, N-1, 2):   c.cx[i, i+1]

for i in range(N):   c.ry(np.random.rand())[i]

import time

start = time.time() c.run(backend="cuTN" + str(a)) print(time.time() - start)


1000量子ビット用意し、RY - CX - RY -CX - RY を交互に実行する回路を3ループ実行しました。早速ベンチマークです。


Google Colab T4

104.98933839797974


Google Colab A100

98.27982020378113


blueqat cloud V100

251.73760056495667


やっぱりなんかT4が速いんですよね。。。泣

© 2023, blueqat Inc. All rights reserved