91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

狀態(tài)向量模擬和cuStateVec庫的介紹

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-08 14:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

量子計(jì)算渴望為某些類型的經(jīng)典難題提供更強(qiáng)大的計(jì)算能力和更快的結(jié)果。量子電路模擬對于理解量子計(jì)算和量子算法的發(fā)展至關(guān)重要。在量子電路中,量子器件由 N 量子位組成,通過對量子位應(yīng)用一系列量子門和測量來執(zhí)行計(jì)算。

從數(shù)學(xué)上來說, N 量子比特系統(tǒng)的量子態(tài)可以描述為一個(gè)復(fù)雜的 2 N – 維向量。在經(jīng)典計(jì)算機(jī)上模擬量子電路最直觀的方法是狀態(tài)向量模擬,它將這個(gè)向量與其 2 N 復(fù)雜值直接存儲在內(nèi)存中。該電路通過將向量乘以一系列矩陣來執(zhí)行,這些矩陣對應(yīng)于構(gòu)成該電路的門序列。

然而,隨著狀態(tài)向量的維數(shù)隨著量子位的數(shù)量呈指數(shù)增長,完整描述狀態(tài)的內(nèi)存需求將這種方法限制在 30 – 50 量子位的電路中?;趶埩烤W(wǎng)絡(luò)的替代方法可以模擬更多的量子位,但通常在能夠有效模擬的電路的深度和復(fù)雜性方面受到限制。

NVIDIA cuQuantum SDK 具有用于狀態(tài)向量和張量網(wǎng)絡(luò)方法的庫。在本文中,我們將重點(diǎn)介紹狀態(tài)向量模擬和 cuStateVec 庫。有關(guān)張量網(wǎng)絡(luò)方法庫的更多信息,請參閱 利用 NVIDIA cuTensorNet 進(jìn)行量子電路模擬 。

cuStateVec 圖書館

cuStateVec 庫提供了單個(gè) GPU 原語來加速狀態(tài)向量模擬。由于狀態(tài)向量方法是模擬量子電路的基礎(chǔ),大多數(shù)量子計(jì)算框架和庫都包含自己的狀態(tài)向量模擬器。為了便于與這些現(xiàn)有模擬器集成, cuStateVec 提供了一套 API ,以涵蓋常見用例:

測量

門應(yīng)用

期望值

采樣器

狀態(tài)向量運(yùn)動

測量

一個(gè)量子位可以存在于兩個(gè)態(tài)|0》和|1》的疊加中。當(dāng)進(jìn)行測量時(shí),其中一個(gè)值被概率選擇和觀察,另一個(gè)值崩潰。 cuStateVec 測量 API 模擬量子位測量,并支持基于 Z 基產(chǎn)品的測量用例和批量單量子位測量。

門應(yīng)用

量子電路有量子邏輯門來修改和準(zhǔn)備量子態(tài),以觀察理想的結(jié)果。量子邏輯門用酉矩陣表示。 cuStateVec gate 應(yīng)用程序 API 提供了將量子邏輯門應(yīng)用于某些矩陣類型的功能,包括:

稠密的

斜線的

廣義置換

泡利矩陣的矩陣指數(shù)

期望值

在量子力學(xué)中,計(jì)算算符和量子態(tài)的期望值。對于量子電路,我們還計(jì)算了給定電路和量子態(tài)的期望值。 cuStateVec 有一個(gè) API ,可以用較小的內(nèi)存占用計(jì)算期望值。

采樣器

狀態(tài)向量模擬在數(shù)值上將量子態(tài)保留在狀態(tài)向量中。通過計(jì)算每個(gè)狀態(tài)向量元素的概率,您可以有效地多次模擬多個(gè)量子位的測量,而不會破壞量子態(tài)。 cuStateVec sampler API 以較小的內(nèi)存占用在 GPU 上執(zhí)行采樣。

狀態(tài)向量運(yùn)動

將狀態(tài)向量放置在 GPU 上,以加速 GPU 的模擬。要在 CPU 上分析模擬結(jié)果,請將生成的狀態(tài)向量復(fù)制到 CPU 。 cuStateVec 提供訪問器 API 來代表用戶執(zhí)行此操作。在復(fù)制過程中,狀態(tài)向量元素的順序可以被重新安排,這樣你就可以將量子位重新排序?yàn)樗璧牧孔游豁樞颉?/p>

谷歌 Cirq / qsim 和 NVIDIA cuStateVec

宣布NVIDIA CuStEVEEC 文庫集成的第一個(gè)項(xiàng)目是 Google’s qsim ,一個(gè)優(yōu)化的模擬器,用于他們的量子計(jì)算框架, Cirq 。 Google Quantum 人工智能團(tuán)隊(duì)通過一個(gè)新的基于 cuStateVec 的 GPU 模擬后端擴(kuò)展了 qsim ,以補(bǔ)充他們的 CPU 和 CUDA 模擬引擎。

使用 cuStateVec 為 Cirq 和 qsim 構(gòu)建說明

要通過 Cirq 啟用 cuStateVec ,請從源代碼編譯 qsim ,并安裝 qsimcirq Python 包提供的 Cirq 綁定。

# Prerequisite:
# Download cuQuantum Beta2 from https://developer.nvidia.com/cuquantum-downloads # Extract cuQuantum Beta2 archive and set the path to CUQUANTUM_ROOT
$ tar -xf cuquantum-linux-x86_64-0.1.0.30-archive.tar.xz
$ export CUQUANTUM_ROOT=`pwd`/cuquantum-linux-x86_64-0.1.0.30-archive
$ ln -sf $CUQUANTUM_ROOT/lib $CUQUANTUM_ROOT/lib64
# Clone qsim repository from github and checkout v0.11.1 branch
$ git clone https://github.com/quantumlib/qsim.git
$ git checkout v0.11.1
# Build and install qsimcirq with cuStateVec
$ pip install .
# Install cirq
$ pip install cirq

在本例中,我們運(yùn)行一個(gè)電路,創(chuàng)建格林伯格 – 霍恩 – 齊林格( GHZ )狀態(tài),并對實(shí)驗(yàn)結(jié)果進(jìn)行采樣。以下 Python 腳本通過調(diào)用三個(gè)不同的模擬器來獲取|0…00>|1…11>中的振幅:

  • Cirq 內(nèi)置模擬器
  • 基于 CPU 的模擬器共享
  • 使用 cuStateVec 加速拆分

我們啟用了兩個(gè)基于 CIRQS 和 77YC 的 CPU 插槽,這兩個(gè)插槽分別用于基于 CPU 的 CPU 模擬器。對于 cuStateVec 加速模擬,我們使用單個(gè) A100 GPU 。

import cirq
import qsimcirq
n_qubits = 32
qubits = cirq.LineQubit.range(n_qubits)
circuit = cirq.Circuit()
circuit.append(cirq.H(qubits[0]))
circuit.append(cirq.CNOT(qubits[idx], qubits[idx + 1]) \ for idx in range(n_qubits - 1))
# Cirqs = cirq.sim.Simulator()
result = s.compute_amplitudes(circuit, [0, 2**n_qubits-1])
print(f'cirq.sim : {result}')
# qsim(CPU)
options = qsimcirq.QSimOptions(max_fused_gate_size=4, cpu_threads=512)
s = qsimcirq.QSimSimulator(options)
result = s.compute_amplitudes(circuit, [0, 2**n_qubits-1])
print(f'qsim(CPU) : {result}')
# qsim(cuStateVec)
options = qsimcirq.QSimOptions(use_gpu=True, max_fused_gate_size=4, gpu_mode=1)
s = qsimcirq.QSimSimulator(options)
result = s.compute_amplitudes(circuit, [0, 2**n_qubits-1])
print(f'cuStateVec: {result}')

以下控制臺輸出顯示,通過使用 CPU SIMD 指令和 OpenMP 進(jìn)行優(yōu)化, qsim 的 CPU 版本比 Cirq 的模擬器快 5.1x 。通過使用 cuStateVec 版本,模擬速度進(jìn)一步加快,比 Cirq 的模擬器快 30.04 倍,比 qsim 的 CPU 版本快 5.9 倍。

cirq.sim : [0.70710677+0.j 0.70710677+0.j], 87.51 s
qsim(CPU) : [(0.7071067690849304+0j), (0.7071067690849304+0j)], 17.04 s
cuStateVec: [(0.7071067690849304+0j), (0.7071067690849304+0j)], 2.88 s

績效結(jié)果

下圖顯示了一些常用電路的門應(yīng)用的初步性能結(jié)果。所有量子位計(jì)數(shù)的模擬都會加速。然而,隨著量子位數(shù)量的增加,模擬速度顯著加快,對于最大的電路,模擬速度大約是 10-20 倍。這種性能為探索更大量子電路的開發(fā)和評估提供了機(jī)會。

A100 與 64 核 CPU 上的 Cirq / qsim + cuStateVec

圖 1 。與 64 核 EPYC 7742 CPU 上的 Cirq / qsim 相比,在單個(gè) NVIDIA A100 GPU 上使用 cuStateVec 的流行量子電路的模擬性能

相對于 EPYC 7742 中的 64 個(gè) CPU 內(nèi)核,一個(gè) NVIDIA A100 上的 VQE 加速

圖 2 。與 64 核 EPYC 7742 CPU 上的 Cirq / qsim 相比,在單個(gè) NVIDIA A100 GPU 上使用 cuStateVec 的多個(gè)不同分子的變分量子本征解算器加速

多 GPU 狀態(tài)向量仿真

狀態(tài)向量模擬也非常適合在多個(gè) GPU 上執(zhí)行。大多數(shù)門應(yīng)用是一種完全并行的操作,通過拆分狀態(tài)向量并將其分布在多個(gè) GPU 上來加速。

在大約 30 個(gè)量子位之外,多 GPU 模擬是不可避免的。這是因?yàn)橐粋€(gè)狀態(tài)向量無法適應(yīng)單個(gè) GPU 的內(nèi)存,因?yàn)樗拇笮‰S著附加的量子位呈指數(shù)增長。

當(dāng)多個(gè) GPU 在一個(gè)模擬中協(xié)同工作時(shí),每個(gè) GPU 可以將一個(gè)門并行應(yīng)用于其狀態(tài)向量部分。在大多數(shù)情況下,每個(gè) GPU 只需要本地?cái)?shù)據(jù)來更新狀態(tài)向量,每個(gè) GPU 都可以獨(dú)立應(yīng)用門。

然而,根據(jù)門作用于哪個(gè)模擬量子位, GPU 有時(shí)可能需要存儲在不同 GPU 中的部分狀態(tài)向量來執(zhí)行更新。在這種情況下, GPU 必須交換大部分狀態(tài)向量。這些部分的大小通常為數(shù)百兆字節(jié)或幾千兆字節(jié)。因此,多 GPU 狀態(tài)向量模擬對 GPU 互連的帶寬非常敏感。

DGX A100 完全符合這些要求,八款 NVIDIA A100 GPU 使用 NVLink 提供 600GB / s 的 GPU 到 GPU 直接帶寬。我們選擇了三種 30-32 量子位的常見量子計(jì)算算法,在 DGX A100 上用 cuStateVec 對 Cirq / qsim 進(jìn)行基準(zhǔn)測試:

量子傅里葉變換( QFT )

肖爾算法

梧桐至上電路

與單次 GPU 運(yùn)行相比,在八次 GPU 運(yùn)行中,所有基準(zhǔn)測試都顯示出 4.5 – 7 倍加速之間良好的強(qiáng)縮放行為。

圖 3 。 DGX A100 上流行電路狀態(tài)向量模擬的多重 GPU 縮放

圖 4 。流行量子電路模擬的加速比。在 DGX A100 上測量了 GPU 模擬的性能,并與 EPYC 7742 的兩個(gè)插座的性能進(jìn)行了比較。

與兩個(gè) 64 核 CPU 上的模擬時(shí)間相比, DGX-A100 在 50-90 倍之間提供了令人印象深刻的整體速度提升。

總結(jié)

NVIDIA CuQuin SDK 中的 CuStEVEVEC 庫旨在加速 GPU 上的量子電路的狀態(tài)向量模擬器。谷歌針對 Cirq qsim 的模擬器是首批采用該庫的模擬器之一,該庫對現(xiàn)有程序的 GPU 加速使 Cirq 用戶受益。隨后將集成到更多量子電路框架,包括 IBM 的 Qiskit 軟件。

我們也在擴(kuò)大規(guī)模。基于 cuStateVec 的多 GPU 模擬的初步結(jié)果顯示,關(guān)鍵量子算法的加速比為 50 – 90 倍。我們希望 cuStateVec 成為開創(chuàng)量子計(jì)算新領(lǐng)域的寶貴工具。

關(guān)于作者

Shinya Morino 是NVIDIA 高級解決方案架構(gòu)師,隸屬于NVIDIA 人工智能技術(shù)中心( NVAITC )。他已經(jīng)在 NVAITC 中原型化了一個(gè) GPU 加速狀態(tài)向量模擬器,并正在利用他的知識推動 cuStateVec 的開發(fā)。新亞擁有日本東京大學(xué)的工程學(xué)博士學(xué)位。

Andreas Hehn 是NVIDIA 的開發(fā)技術(shù)工程師。他幫助客戶使用 GPU 加速他們的科學(xué)工作流程,重點(diǎn)關(guān)注基因組學(xué)、高能物理實(shí)驗(yàn)和量子計(jì)算。安德烈亞斯擁有瑞士蘇黎世 ETH 的物理學(xué)博士學(xué)位,他在那里從事大規(guī)模凝聚態(tài)物理模擬。

Leo Fang 是NVIDIA 的高級工程師,專注于 HPC 、量子計(jì)算和 Python 軟件。 2017 年,他在杜克大學(xué)獲得物理學(xué)博士學(xué)位。在加入 NVIDIA 之前,他是布魯克海文國家實(shí)驗(yàn)室計(jì)算科學(xué)倡議的助理計(jì)算科學(xué)家。他也是許多開源項(xiàng)目的定期貢獻(xiàn)者,包括 CuPy 、 mpi4py 、 conda forge 和 Python 數(shù)據(jù) API 標(biāo)準(zhǔn)聯(lián)盟。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5606

    瀏覽量

    109856
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    5206

    瀏覽量

    135586
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2391

    瀏覽量

    66848
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    炎核開源開放平臺上架推出OpenSparseBlas高性能稀疏計(jì)算

    在科學(xué)計(jì)算與工程仿真領(lǐng)域,高效處理大規(guī)模稀疏矩陣運(yùn)算是提升整體計(jì)算效能的關(guān)鍵。為此,我們在炎核開源開放平臺上架推出 OpenSparseBlas——一個(gè)專為稀疏矩陣/向量計(jì)算而打造的高性能稀疏計(jì)算
    的頭像 發(fā)表于 12-15 15:18 ?713次閱讀

    用哪吒D1開發(fā)板體驗(yàn)riscv向量底層編程

    1.前言 2.機(jī)器模式處理器狀態(tài)寄存器(MSTATUS) 3.編譯選項(xiàng)支持V擴(kuò)展 4.RISCV向量計(jì)算的原理 5.通過實(shí)例分析RISCV V擴(kuò)展的運(yùn)作機(jī)制 6.RVV使用體驗(yàn) 1.前言
    發(fā)表于 10-29 06:21

    Vector向量指令集簡介(一)

    RV32V將數(shù)據(jù)寄存器和長度與向量寄存器關(guān)聯(lián)而不是指令操作碼。程序在執(zhí)行V指令之前會用數(shù)據(jù)類型和數(shù)據(jù)寬度來標(biāo)記向量寄存器,因?yàn)槊總€(gè)V指令通常有8個(gè)整數(shù)版本和三個(gè)浮點(diǎn)版本。 這個(gè)編碼一共5位,低
    發(fā)表于 10-23 08:28

    Vector向量指令集簡介(三)

    首先是vl寄存器,這個(gè)寄存器保存一個(gè)無符號數(shù),位寬為XLEN,表示向量指令的結(jié)果將要更新的元素的數(shù)量。這個(gè)寄存器通過vset{i}vl{i}指令來更新 vlenb寄存器是一個(gè)只讀的寄存器,它記錄
    發(fā)表于 10-23 06:23

    Vector向量指令集簡介(二)

    上次我們講vtype講到一般,今天把剩下的部分給講完。 Vma和vta表示的是向量尾部不可知與向量掩碼不可知的設(shè)置位。 這兩個(gè)位的值,都是在設(shè)置為0的時(shí)候表示未受干擾,設(shè)置為1的時(shí)候表示
    發(fā)表于 10-23 06:05

    Vector向量指令集簡介(四)

    前面講的都是狀態(tài)寄存器的概念介紹,今天開始講解Vector向量指令的指令格式。 對于load/store兩類指令,它們都是對內(nèi)存直接操作的指令。 比較值得說的是,rs1的值索引的是內(nèi)存的基地
    發(fā)表于 10-22 06:06

    使用MATLAB的支持向量機(jī)解決方案

    支持向量機(jī) (SVM) 是一種有監(jiān)督機(jī)器學(xué)習(xí)算法,它能找到分離兩個(gè)類的數(shù)據(jù)點(diǎn)的最佳超平面。
    的頭像 發(fā)表于 10-21 15:00 ?665次閱讀
    使用MATLAB的支持<b class='flag-5'>向量</b>機(jī)解決方案

    在中斷向量表中,數(shù)字較小的中斷向量能否以 larg 中斷中斷向量

    在中斷向量表中,數(shù)字較小的中斷向量能否以 larg 中斷中斷向量
    發(fā)表于 08-21 08:17

    milvus向量數(shù)據(jù)的主要特性和應(yīng)用場景

    Milvus 是一個(gè)開源的向量數(shù)據(jù),專門為處理和分析大規(guī)模向量數(shù)據(jù)而設(shè)計(jì)。它適用于需要高效存儲、檢索和管理向量數(shù)據(jù)的應(yīng)用場景,如機(jī)器學(xué)習(xí)、人工智能、計(jì)算機(jī)視覺和自然語言處理等。
    的頭像 發(fā)表于 07-04 11:36 ?1114次閱讀
    milvus<b class='flag-5'>向量</b>數(shù)據(jù)<b class='flag-5'>庫</b>的主要特性和應(yīng)用場景

    AD封裝安裝教程

    電子發(fā)燒友網(wǎng)站提供《AD封裝安裝教程.pdf》資料免費(fèi)下載
    發(fā)表于 06-19 15:35 ?3次下載

    RISC-V架構(gòu)下的編譯器自動向量

    進(jìn)迭時(shí)空專注于研發(fā)基于RISC-V的高性能新AICPU,對于充分發(fā)揮CPU核的性能而言,編譯器是不可或缺的一環(huán),而在AI時(shí)代,毫無疑問向量算力將發(fā)揮越來越重要的作用。進(jìn)迭時(shí)空非常重視RISC-V
    的頭像 發(fā)表于 06-06 16:59 ?1263次閱讀
    RISC-V架構(gòu)下的編譯器自動<b class='flag-5'>向量</b>化

    數(shù)字地與模擬地的區(qū)別及原理介紹

    一、基本概念 1. 模擬地(AGND) 定義:模擬地是模擬電路的電位參考點(diǎn),用于連接模擬信號電路(如運(yùn)算放大器、濾波器、傳感器信號調(diào)理電路等)的接地端。 信號特性:
    的頭像 發(fā)表于 05-25 15:44 ?3416次閱讀

    Redis 8 向量搜索實(shí)測:輕松擴(kuò)展至 10 億向量

    艾體寶Redis 8 向量搜索實(shí)測輕松支持 10 億向量,仍保持低延遲與高吞吐。中位延遲僅200毫秒,90%精確度;處理50并發(fā)搜索請求中位延遲僅1.3秒,95%精確度。
    的頭像 發(fā)表于 05-13 14:00 ?784次閱讀
    Redis 8 <b class='flag-5'>向量</b>搜索實(shí)測:輕松擴(kuò)展至 10 億<b class='flag-5'>向量</b>

    概倫電子先進(jìn)參數(shù)化單元開發(fā)平臺PCellLab介紹

    模擬電路設(shè)計(jì)中,參數(shù)化單元(PCeIl)作為PDK(半導(dǎo)體工藝設(shè)計(jì)套件)的重要組件已成為整個(gè)設(shè)計(jì)流程中必不可少的一部分。隨著半導(dǎo)體工藝快速發(fā)展,先進(jìn)半導(dǎo)體器件結(jié)構(gòu)日益復(fù)雜使得PCell的開發(fā)過程更具挑戰(zhàn)性。
    的頭像 發(fā)表于 04-16 09:40 ?1430次閱讀
    概倫電子先進(jìn)參數(shù)化單元<b class='flag-5'>庫</b>開發(fā)平臺PCellLab<b class='flag-5'>介紹</b>

    案例 基于CFD仿真的潛航器不同航行狀態(tài)下阻力特性模擬與評估

    suboff潛艇作為一種常見的水下航行器模型,曾在國際上被各大海洋強(qiáng)國進(jìn)行充分的實(shí)驗(yàn)與數(shù)值模擬研究,本文以suboff模型對水下航行器阻力計(jì)算展開介紹。
    的頭像 發(fā)表于 04-11 11:36 ?986次閱讀
    案例  基于CFD仿真的潛航器不同航行<b class='flag-5'>狀態(tài)</b>下阻力特性<b class='flag-5'>模擬</b>與評估