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

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

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

如何用個人電腦打造量子模擬器?

dKBf_eetop_1 ? 來源:未知 ? 作者:胡薇 ? 2018-08-30 15:20 ? 次閱讀

1 量子計算機與量子編程

1.1 量子計算機

所謂量子計算即利用量子力學(xué)現(xiàn)象來進(jìn)行計算,例如量子疊加和量子糾纏。量子計算機是一種執(zhí)行量子計算的設(shè)備。

1.2 量子編程語言

量子編程是一種能夠在量子計算機上運行的指令序列,稱為量子程序。量子編程語言有助于使用高級結(jié)構(gòu)來表達(dá)量子算法。

1.3 量子編程語言種類

量子編程語言包括命令式量子編程語言、函數(shù)式量子編程語言和多范式量子編程語言三類。命令式量子編程語言有 QCL、Quantum pseudocode、Q|SI>、Q language、qGCL、QMASM;函數(shù)式量子編程語言有 QFC 和 QPL、QML、LIQUi|>、Quantum lambda calculi、Quipper;而下面我們要介紹的 Q# 就屬于多范式量子編程語言。

2 搭建量子編程環(huán)境

量子計算機真正可以使用還有較長一段時間,目前還沒有成熟的量子編程環(huán)境和編譯工具,微軟算是在該領(lǐng)域發(fā)力比較早的公司。在本月11日發(fā)布了一個量子開發(fā)工具包的免費預(yù)覽版,本文將介紹使用微軟量子開發(fā)工具包(Microsoft Quantum Development Kit,簡稱為 QDK)在 Visual Studio 中進(jìn)行 Q# 量子編程。

2.1 量子開發(fā)工具包介紹

在今天9月下旬的 Ignite 大會上,微軟將量子計算列為三大關(guān)鍵技術(shù)之一(另外兩項為人工智能和虛擬現(xiàn)實),這三項關(guān)鍵技術(shù)將會改變我們所知道的科技行業(yè)。該公司還宣布計劃在今年晚些時候發(fā)布量子計算機的新編程語言。

2017年即將結(jié)束,微軟也如期推出了免費的 Quantum 開發(fā)套件預(yù)覽版,該套件包括量子計算模擬器,Q# 編程語言(發(fā)音為“Q Sharp”)以及其他資源。

微軟量子開發(fā)工具包預(yù)覽版提供了一個完整的開發(fā)和仿真環(huán)境,其中包含了以下組件:Q# 語言和編譯器、Q# 標(biāo)準(zhǔn)庫、本地量子機模擬器、量子計算機跟蹤模擬器、Visual Studio 擴展。

微軟也正在制作一套全面的開發(fā)文檔,以及庫和示例程序,為人們提供所需要的背景知識,了解量子系統(tǒng)的獨特之處,比如量子隱形傳態(tài)。

2.1.1 Q# 量子編程語言

微軟對Q#的描述稱之為“一種用于表達(dá)量子算法領(lǐng)域?qū)S镁幊陶Z言”。它被用于編寫在一個附屬量子處理器上執(zhí)行的子程序,在一個經(jīng)典主機程序和計算機的控制下。

借助 Visual Studio 的強大功能,將來使用 Q# 進(jìn)行量子編程操縱量子比特,就像使用 C#、F# 或 C++ 等語言開發(fā)傳統(tǒng)經(jīng)典應(yīng)用程序一樣簡單。

2.1.2 量子模擬器

使用作為套件一部分的量子模擬器,您可以在筆記本電腦上模擬一個約30個邏輯量子位的量子計算機。所以,你不需要依賴于某個遠(yuǎn)程服務(wù)器。如果您愿意推出邊界并模擬40多個邏輯量子位,則可以使用基于Azure的模擬器。

模擬器不僅可以運行量子程序,甚至可以在 Visual Studio 中測試和調(diào)試你的量子程序,比如設(shè)置斷點、單步調(diào)試、變量跟蹤等。

使用該開發(fā)工具包的優(yōu)點在于,當(dāng)我們插入量子硬件時,這個代碼不需要改變。這點其實和我們使用 iOS 模擬器或 Android 模擬器開發(fā)移動應(yīng)用程序是一樣的,模擬器屏蔽了底層硬件實現(xiàn)的差異。

先決條件:1. 使用該量子開發(fā)工具包,需要使用最新版本的 Visual Studio 2017。2. 目前該模擬器只能運行在64位的 Windows 系統(tǒng)上。3. 需要使用支持高級向量擴展(AVX)指令集的 CPU。

當(dāng)你運行程序報類似System.DllNotFoundException:“無法加載 DLL“Microsoft.Quantum.Simulator.Runtime.dll”: 異常來自 HRESULT:0xC000001D?!钡漠惓r,可能就是因為你的 CPU 不支持 AVX 指令集,請考慮換一臺電腦吧!

(按照微軟的說法,Intel 2011年第一季度以及之后出貨的 CPU 支持 AVX 功能)。你可以使用CPU-Z之類的工具自行檢測。如下圖所示說明你的 CPU 支持 AVX 指令集:

2.2 下載并安裝 Visual Studio

如果你還沒有安裝 Visual Studio 集成開發(fā)環(huán)境,請先下載Visual Studio 2017并進(jìn)行安裝。注意在安裝時,在“工作負(fù)載”選項卡下選中“通用 Windows 平臺開發(fā)”和“.NET 桌面開發(fā)”兩個復(fù)選框。

2.3 下載并安裝量子開發(fā)工具包

2.3.1 方式一:在 Visual Studio 市場下載

2.3.1.1 下載

在 Visual Studio Marketplace 市場下載量子開發(fā)工具包,它是一個 Visual Studio 擴展包,名稱為 QsharpVSIX.vsix,非常小,只有1MB左右大小。該量子開發(fā)工具包為 Q# 編程語言開發(fā)量子算法提供支持。

如果你希望收到工具包或開發(fā)資源的更新消息,可以點擊試用Quantum開發(fā)套件,在線填寫一份表格。內(nèi)容包括姓名、郵箱、電話和公司信息等,工具包或開發(fā)資源一旦有更新,會將最新消息發(fā)送到你的填寫的郵箱。(注意:填寫信息后在試用頁面點擊下載,國內(nèi)網(wǎng)絡(luò)是乎不會跳轉(zhuǎn)到上述下載頁面)。

2.3.1.2 安裝

找到下載的 QsharpVSIX.vsix 文件雙擊運行,等待片刻即可安裝完成。

2.3.2 方式二:Visual Studio 擴展和更新

如果知道擴展的名稱或關(guān)鍵字,使用這種方式安裝是最簡單快捷的,只需要搜索相應(yīng)關(guān)鍵字找到想要的擴展,點擊即可下載和安裝。

2.3.2.1 下載

打開 Visual Studio 2017,選擇“工具(T)”->“擴展和更新(U)…”,在彈出的擴展和更新窗口中選擇“聯(lián)機”菜單,在右側(cè)搜索框中輸入 “Quantum” 并回車,點擊 “Microsoft Quantum Development Kit” 中的“下載(D)”會彈出對話框進(jìn)行下載。搜索下載 QDK 擴展如下圖所示:

2.3.2.2 安裝

等待下載完成后,關(guān)閉所有 Visual Studio 窗口后將自動執(zhí)行開始安裝。

2.4 驗證安裝

如果不出意外,安裝成功后,新建項目時會看到多出3個模板,分別為:Q# Application、Q# Library 和 Q# Test Project。如下圖所示:

同時在 Visual Studio 中,選擇“幫助(H)”->“關(guān)于 Microsoft Visual Studio” 也可以看到 “Microsoft Quantum Development Kit - 0 and 1” 的字樣。如下圖所示:

3 第一個量子程序

你可以到 GitHub 上克隆微軟的Microsoft Quantum Developer Kit Samples and Libraries示例項目,然后直接運行驗證安裝并查看效果。這里我們從新建項目開始,手動編寫一些代碼,對量子位(Qubit)執(zhí)行一些操作,讓量子位呈現(xiàn)疊加狀態(tài)或兩個量子進(jìn)行糾纏,然后測試并輸出結(jié)果。演示量子世界里最簡單的量子糾纏--貝爾態(tài)。

3.1 創(chuàng)建解決方案和項目

打開 Visual Studio 2017,選擇“文件(F)”->“新建(N)”->“項目(P)…”,在“已安裝”->“Visual C#”,然后選擇 Q# Application 模板。填寫項目名稱和解決方案名稱,并選擇一個存放項目的目錄,然后點擊“確定”按鈕。

項目創(chuàng)建后 Visual Studio 會生成并打開兩個文件,分別為 Operation.qs 和 Driver.cs。后綴為 .qs 的 Q# 文件是量子程序的代碼文件,但其本身不能直接運行,需要使用 C# (也可以使用其他編程言來調(diào)用,如 F#、VB、C++ 或 Python 等)程序作為驅(qū)動進(jìn)行調(diào)用。項目結(jié)構(gòu)如下圖所示:

3.2 編寫 Q# 代碼

為了方便說明,我們將 Operation.qs 重命名為 Bell.qs(該文件中會定義一個名為 BellTest 的操作,編譯后在 C# 中使用BellTest調(diào)用時,IED 會有智能感知提示。雖然不改名稱代碼也可以正常運行,但在 C# 驅(qū)動程序中會有紅線錯誤出現(xiàn))。

在 Q# 中是通過定義“操作”來獲取或設(shè)置量子位狀態(tài)的,在定義操作之前,我們需要先引入操作量子位的原語Microsoft.Quantum.Primitive命名空間,該命名空間定義了很多基本的量子邏輯門操作,例如:M()、X()、Z()、H()、CNOT()等。

在 Bell.qs 中定義一個Set操作,其作用非常簡單,判斷給定的量子位狀態(tài)是否與期望的結(jié)果一致。如果一致,則啥也不做;若不一致,就將其進(jìn)行翻轉(zhuǎn)過來。代碼如下所示:

operation Set(desired: Result, q1: Qubit) : () { body { // 測量(M)q1 量子位的狀態(tài) let current = M(q1); if (desired != current) { // 如果與期望的不相等,將其進(jìn)行翻轉(zhuǎn)(X) X(q1); } } }

定義操作的方式非常簡單,只需要使用operation關(guān)鍵字,緊跟著是操作的名稱,名稱后面用一個元組作為操作的參數(shù),參數(shù)包含名稱和類型。操作參數(shù)后面跟上一個冒號,然后用一個元組來表示操作的返回值,返回值只需要提供數(shù)據(jù)類型,不需要名稱;如果沒有返回值,則直接寫上一對小括號即可。需要注意的是:具體的操作代碼應(yīng)當(dāng)寫在用大括號包裹的操作體body {}中。

下面定義一個操作BellTest來測試兩個量子位的糾纏,將操作代碼添加到 Bell.qs 文件的Set操作下方,代碼如下所示:

operation BellTest() : (Result, Result) { body { // 用于保存量子位狀態(tài)的可變局部變量 mutable s1 = Zero; mutable s2 = Zero; // 分配兩個量子位 using (qubits = Qubit[2]) { // 將第一個量子位執(zhí)行阿達(dá)馬門實現(xiàn)狀態(tài)疊加 H(qubits[0]); // 通過可控非門將兩個量子進(jìn)行糾纏 CNOT(qubits[0], qubits[1]); // 測量兩個量子位的狀態(tài) set s1 = M(qubits[0]); set s2 = M(qubits[1]); // 釋放量子位前需要將其重置0狀態(tài) Set(Zero, qubits[0]); Set(Zero, qubits[1]); } // 返回兩個量子位的狀態(tài) return (s1, s2); } }

上述操作分配了兩個量子位,并對第一個量子位執(zhí)行阿達(dá)馬門H操作,使其處于疊加狀態(tài),然后通過可控非門CNOT將兩個量子進(jìn)行糾纏,最后分別測量兩個量子的狀態(tài)并以元組方式返回。

需要注意的是:使用 using 分配量子位后,會在程序離開結(jié)束的大括號{時進(jìn)行自動釋放,在釋放時需要先將量子位狀態(tài)重置為 0 狀態(tài)。

3.3 使用 C# 調(diào)用 Q# 操作

前面提到需要使用 C# 作為驅(qū)動程序來調(diào)用 Q# 程序,那它是怎么做到的呢?事實上 Visual Studio 在編譯的時候,會把每個 xxx.qs 文件都會生成一個對應(yīng)的 xxx.q.cs 文件,保存在項目下的 objqsharpsrc 目錄下。

在 xxx.g.cs 文件中,會將每個操作生成對應(yīng)的類,比如上述 Bell.qs 中的Set操作和BellTest操作,會生成對應(yīng)的Set類和BellTest類。這兩個類繼承至Operation抽象類,每個類中都包含一個靜態(tài)的異步 Run 方法。

在 C# 驅(qū)動程序中,首先定義一個量子模擬器,然后循環(huán) 10 次測試兩個量子位糾纏后的狀態(tài),并輸出到控制臺。具體代碼如下所示:

static void Main(string[] args) { using (var sim = new QuantumSimulator()) { for (int i = 0; i < 10; i++) ? ? ? ?{ ? ? ? ? ? ?var (s1, s2) = BellTest.Run(sim).Result; ? ? ? ? ? ?Console.WriteLine($"第{i}次:Q1狀態(tài) {s1,-5} Q2狀態(tài) {s2,-5}"); ? ? ? ?} ? ?} ? ?Console.WriteLine("按任意鍵繼續(xù)..."); ? ?Console.ReadKey(); }

創(chuàng)建量子模擬器前需要導(dǎo)入Microsoft.Quantum.Simulation.Simulators命名空間,如果你的代碼用到量子Result狀態(tài)枚舉,你還需要導(dǎo)入Microsoft.Quantum.Simulation.Core命名空間。

3.4 運行結(jié)果

從運行結(jié)果可以看出,不管運行多少次,第一個量子位的狀態(tài)始終與第二個量子位的狀態(tài)保持一致。運行結(jié)果如下圖所示:

4 參考資料

Microsoft Quantum Development Kit

Setting up the Q# development environment | Microsoft Docs

Microsoft Quantum Developer Kit Samples and Libraries

The future is quantum: Microsoft releases free preview of Quantum Development Kit

Microsoft Quantum Development Kit: Introduction and step-by-step demo

Quantum Computing - Top 3 Microsoft Breakthroughs with Krysta Svore

Quantum mechanics

Quantum programming

Quantum algorithm

Quantum annealing

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

    關(guān)注

    88

    文章

    3544

    瀏覽量

    93470
  • 量子計算機
    +關(guān)注

    關(guān)注

    4

    文章

    516

    瀏覽量

    25320

原文標(biāo)題:量子計算機如何編程?教你用個人電腦打造量子模擬器

文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    PC慢慢_解決個人電腦運行緩慢的問題

    PC慢慢(PCslow Doctor) V3.2_解決個人電腦運行緩慢的問題PC慢慢—主要用于解決個人電腦運行緩慢的一款免費掃描軟件 ,是國內(nèi)最流行的電腦優(yōu)化加速軟件。電腦運行緩慢的原
    發(fā)表于 04-13 12:13

    打造99%安全個人電腦

    [原創(chuàng)]打造99%安全個人電腦第一節(jié)軟件介紹:大家好,我是:RaScal   今天給大家做的教程是:打造99%安全個人電腦第一節(jié)ps.此教程為語音
    發(fā)表于 11-14 16:58

    專訪阿里巴巴量子實驗室:最強量子電路模擬器“太章”到底強在哪?

    摘要: 刷爆朋友圈的最強量子電路模擬器到底強在哪呢?云棲社區(qū)采訪了阿里巴巴量子實驗室團(tuán)隊的施堯耘博士和陳建鑫博士來位大家一一解讀。本月早些時候,阿里巴巴量子實驗室成功研制當(dāng)前世界最強的
    發(fā)表于 05-23 11:18

    個人電腦變網(wǎng)站服務(wù)解決方案

    個人電腦變網(wǎng)站服務(wù)解決方案 怎么回事,我的主頁不能訪問了?!唉,原來這個免費空間又暫停服務(wù)了。   到哪里給我們的網(wǎng)站找個
    發(fā)表于 02-01 11:58 ?958次閱讀

    UMPC超移動個人電腦全面解析(上)

    UMPC超移動個人電腦全面解析(上)  UMPC全稱Ultra-Mobile PC,超移動個人電腦,是英特爾與微軟都極力推廣的一種產(chǎn)品。
    發(fā)表于 02-06 17:13 ?1813次閱讀

    個人電腦日常維護(hù)指南

    個人電腦日常維護(hù)指南 有經(jīng)驗的電腦用戶都有這樣的體會,一臺PC經(jīng)過格式化,新裝上系統(tǒng)時,速度很快,但使用一段時間,性能就
    發(fā)表于 02-24 11:46 ?389次閱讀

    LAN供電驅(qū)動!全球首臺無電源個人電腦

    日本惠普(HP)宣布,將于7月下旬開始銷售無需電源的顯示一體型企業(yè)用個人電腦。該產(chǎn)品利用與IP電話相同的供電技術(shù),通過1根LAN(局域網(wǎng))線纜供電來驅(qū)動個人電腦和顯示。這
    發(fā)表于 07-05 08:59 ?1969次閱讀

    51量子模擬器成功研發(fā),可揭示復(fù)雜的量子過程

    哈佛大學(xué) Mikhail Lukin,Markus Greiner 教授領(lǐng)導(dǎo)的研究團(tuán)隊與麻省理工的 Vladan Vuletic 教授共同開發(fā)了一種特殊的量子計算機——量子模擬器。這一量子模擬器由激光捕獲的超冷銣原子所編碼,將這
    發(fā)表于 12-05 11:10 ?913次閱讀

    2048退火量子計算機首次演示拓?fù)湎嘧?量子模擬技術(shù)的又一突破

    D-Wave 處理與傳統(tǒng)模擬之間的定量一致性驗證了量子模擬的結(jié)果。該系統(tǒng)的對稱性使其具有極高的靈敏度,精確模擬涉及 1800 個量子比特,
    發(fā)表于 08-25 09:12 ?1414次閱讀

    華為繼AI芯片后又發(fā)布了量子計算模擬器

    華為近年來在芯片方面取得的成就有目共睹,但華為并不僅僅滿足于此。華為今日在HUAWEI CONNECT 2018發(fā)布量子計算模擬器HiQ云服務(wù)平臺,包括量子計算模擬器與基于
    發(fā)表于 08-09 11:48 ?1502次閱讀

    中科大研制出非局域量子模擬器,可實現(xiàn)超光速通訊

    中國科大郭光燦院士領(lǐng)導(dǎo)的中科院量子信息重點實驗室在量子模擬器研究中取得重要進(jìn)展,該實驗室李傳鋒教授研究組研制出非局域量子模擬器模擬宇稱-時間(Parity-time, PT)世界中的
    發(fā)表于 12-12 15:10 ?1097次閱讀

    非局域量子模擬器或?qū)⒛軐崿F(xiàn)超光速通訊

    中國科大郭光燦院士領(lǐng)導(dǎo)的中科院量子信息重點實驗室在量子模擬器研究中取得重要進(jìn)展,該實驗室李傳鋒教授研究組研制出非局域量子模擬器模擬宇稱-時間世界中的超光速現(xiàn)象。
    發(fā)表于 03-06 11:50 ?707次閱讀

    量子計算最新研究進(jìn)展:在71個格點的超冷原子量子模擬器中求解施溫格方程

    原標(biāo)題:中國科大量子計算和模擬研究突破再登《自然》 在71個格點的超冷原子量子模擬器中求解施溫格方程 示意圖:規(guī)范場理論描述基本粒子之間的相互作用、產(chǎn)生和湮滅過程可以用晶格中超冷原子之間的相互作用
    的頭像 發(fā)表于 11-20 15:48 ?1917次閱讀

    阿里巴巴全面開源量子模擬器太章2.0

    今日,阿里巴巴發(fā)布阿里云量子開發(fā)平臺(ACQDP),并全面開源量子模擬器“太章2.0”,支持從業(yè)人員設(shè)計量子硬件、測試量子算法,并探索在材料、分子發(fā)現(xiàn)、優(yōu)化問題、機器學(xué)習(xí)等領(lǐng)域內(nèi)的應(yīng)用
    的頭像 發(fā)表于 12-24 10:11 ?2213次閱讀

    帶有Arduino的糾纏量子比特模擬器

    電子發(fā)燒友網(wǎng)站提供《帶有Arduino的糾纏量子比特模擬器.zip》資料免費下載
    發(fā)表于 12-05 10:50 ?0次下載
    帶有Arduino的糾纏<b class='flag-5'>量子</b>比特<b class='flag-5'>模擬器</b>