Có trình giả lập cho máy tính lượng tử?


64

Có cách nào để mô phỏng một máy tính lượng tử trong máy tính bình thường của tôi, để tôi có thể kiểm tra và thử các ngôn ngữ lập trình lượng tử (như Q # ) không? Tôi có nghĩa là một cái gì đó mà tôi thực sự có thể kiểm tra giả thuyết của tôi và nhận được kết quả chính xác nhất.

Cập nhật: Tôi không thực sự tìm kiếm mô phỏng một máy tính lượng tử, nhưng tôi không chắc liệu nó có thể mô phỏng hiệu quả trên một PC không dựa trên lượng tử thông thường hay không.


Câu trả lời:


39

Vâng, nó có thể (nhưng chậm). Có một vài trình giả lập hiện có (đây chỉ là một phần danh sách):

  • QĐD: Thư viện mô phỏng máy tính lượng tử

    QĐD là một thư viện C ++ cung cấp một tập hợp các cấu trúc điện toán lượng tử tương đối trực quan trong bối cảnh của môi trường lập trình C ++. QĐD là duy nhất ở chỗ mô phỏng tính toán lượng tử của nó dựa trên biểu diễn Sơ đồ quyết định nhị phân (BDD) của trạng thái lượng tử.

  • tháng tư

    jQuantum là một chương trình mô phỏng một máy tính lượng tử. Bạn có thể thiết kế các mạch lượng tử với nó và để chúng chạy. Trạng thái hiện tại của thanh ghi lượng tử được minh họa.

  • QCE

    QCE là một công cụ phần mềm mô phỏng các thiết kế phần cứng khác nhau của Máy tính lượng tử. QCE mô phỏng các quá trình vật lý chi phối hoạt động của bộ xử lý lượng tử phần cứng, theo đúng quy luật của cơ học lượng tử. QCE cũng cung cấp một môi trường để gỡ lỗi và thực hiện các thuật toán lượng tử trong các điều kiện thí nghiệm thực tế.

(Ngoài ra, Q # chỉ hoạt động với QĐK của MS , cảm ơn @Pavel)

Nhược điểm của tất cả những điều này là đơn giản: chúng vẫn chạy trên các mạch nhị phân (không lượng tử). Theo hiểu biết tốt nhất của tôi, không có máy tính lượng tử nào có thể truy cập dễ dàng để sử dụng để chạy những thứ này. Và vì phải mất nhiều bit nhị phân để thể hiện một qubit duy nhất, nên lượng năng lượng tính toán cần thiết để mô phỏng chương trình lượng tử trở nên rất nhanh.

Tôi sẽ trích dẫn một bài báo về chủ đề này ( J. Allcock, 2010 ):

Đánh giá của chúng tôi cho thấy việc triển khai của chúng tôi rất chính xác, nhưng đồng thời chúng tôi sử dụng một lượng bộ nhớ bổ sung đáng kể để đạt được điều này. Giảm mục tiêu chính xác của chúng tôi sẽ cho phép chúng tôi giảm kích thước đại diện và do đó mô phỏng nhiều qubit hơn với cùng một lượng bộ nhớ.

trang 89, mục 5.1

Khi việc triển khai của chúng tôi trở nên chính xác hơn, chúng cũng trở nên chậm hơn.

TL; DR: có thể, và một số trình giả lập tồn tại, nhưng không có trình giả nào rất hiệu quả đối với số lượng lớn các qubit.


Lưu ý rằng không có trình giả lập nào trong số các trình giả lập này có thể được sử dụng bởi Q #, chỉ hoạt động với QĐK của Microsoft.
Pavel

3
Ngoài những gì bạn đã nói: Có nhiều cách lập trình để chạy mã trên Trải nghiệm lượng tử của IBM, cung cấp các máy tính lượng tử thực sự - không phải mã Q #, mà thay vào đó là QASM. QISKit là cách để đi đến đây. github.com/QISKit
blalasaadri

Những gì bạn nói có ý nghĩa bởi vì mô phỏng được chạy trên một máy tính. Nhưng liệu có thể đạt được cùng một tốc độ nếu nhiều máy tính được sử dụng?
Lịch iOS patchthecode.com

26

Vâng, có thể mô phỏng một máy tính lượng tử trên một máy tính bình thường - Nhưng rất có thể bạn phải hy sinh hiệu quả.

2nn


Tài nguyên

Bạn có thể quan tâm đến Q # như các câu trả lời khác được ghi nhận. Một số trình giả lập khác:

  • Sân chơi điện toán lượng tử

    Sân chơi điện toán lượng tử là một thử nghiệm WebGL Chrome dựa trên trình duyệt. Nó có máy tính lượng tử tăng tốc GPU với giao diện IDE đơn giản và ngôn ngữ kịch bản lệnh riêng với tính năng gỡ lỗi và hiển thị trạng thái lượng tử 3D. Sân chơi điện toán lượng tử có thể mô phỏng hiệu quả các thanh ghi lượng tử lên tới 22 qubit, chạy các thuật toán của Grover và Shor và có nhiều cổng lượng tử được tích hợp trong chính ngôn ngữ kịch bản.

  • Trình mô phỏng QX

    Trình mô phỏng QX là một trình mô phỏng máy tính lượng tử phổ quát được phát triển tại QuTech bởi Nader Khammassi. QX cho phép các nhà thiết kế thuật toán lượng tử mô phỏng việc thực hiện các mạch lượng tử của họ trên một máy tính lượng tử. Trình mô phỏng xác định ngôn ngữ lắp ráp lượng tử cấp thấp là Mã lượng tử cho phép người dùng mô tả các mạch của họ trong một tệp mã nguồn văn bản đơn giản. Sau đó, tệp mã nguồn được sử dụng làm đầu vào của trình giả lập thực thi nội dung của nó.

  • Lượng tử ++

    Quantum ++ là một thư viện điện toán lượng tử đa năng C ++ 11 hiện đại, chỉ bao gồm các tệp tiêu đề mẫu. Quantum ++ được viết bằng C ++ 11 tiêu chuẩn và có các phụ thuộc bên ngoài rất thấp, chỉ sử dụng thư viện mẫu tiêu đề đại số tuyến tính Eigen 3 và, nếu có, thư viện đa xử lý OpenMP.

  • Ngôn ngữ máy tính lượng tử

    Mặc dù có nhiều khái niệm phổ biến với khoa học máy tính cổ điển, điện toán lượng tử vẫn được coi là một môn học đặc biệt trong lĩnh vực vật lý lý thuyết rộng lớn. [...] QCL (Ngôn ngữ tính toán lượng tử) cố gắng lấp đầy khoảng trống này: QCL là ngôn ngữ lập trình độc lập, kiến ​​trúc cao cho máy tính lượng tử, với cú pháp xuất phát từ các ngôn ngữ thủ tục cổ điển như C hoặc Pascal. Điều này cho phép thực hiện đầy đủ và mô phỏng các thuật toán lượng tử (bao gồm cả các thành phần cổ điển) trong một hình thức nhất quán.

  • Trình giả lập có liên quan hơn có thể được tìm thấy trên Quantiki


21

Vâng, có thể mô phỏng các tính toán lượng tử trên một máy tính cổ điển. Nhưng chi phí mô phỏng tăng theo cấp số nhân với số lượng qubit và / hoặc độ sâu mạch và / hoặc số lượng hoạt động cụ thể.

Để thử ý tưởng nhanh chóng, Quirk giả lập của tôi là tuyệt vời. Đó là trình mô phỏng mạch lượng tử kéo và thả mã nguồn mở chạy trong trình duyệt web của bạn. Bạn có thể truy cập phiên bản trực tiếp tại algassert.com/quirk .

Dưới đây là ảnh chụp màn hình mạch Grover ví dụ của Quirk, được gắn với màn hình trạng thái trung gian để theo dõi trạng thái "ẩn" ngày càng có khả năng:

Ảnh chụp màn hình của Quirk


16

Nếu bạn đặc biệt xem Q #, thì nó rất dễ sử dụng với trình giả lập - thực tế, không thể có Q # nhưng không có trình giả lập, chúng được kết hợp với nhau.

Để bắt đầu, trước tiên bạn cần tải xuống .NET Core từ trang web của Microsoft .

Khi bạn tải xuống Bộ công cụ phát triển lượng tử của Microsoft thông qua dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"hoặc trang web của Microsoft, nó sẽ tải xuống cả trình giả lập ngôn ngữ và ngôn ngữ riêng của Microsoft.

Tạo một dự án Q # mới ( dotnet new console -lang Q#) sẽ tự động định cấu hình nó để sử dụng trình giả lập, vì vậy khi bạn nhập một số Q # và chạy dự án, nó "chỉ hoạt động".


3

Đúng. Nếu bạn tự xây dựng nó, hãy tìm một máy tính của bên thứ 3 có cùng thông số kỹ thuật như dòng BullSequana M9600 hoặc mua € 100K + và mua một hệ thống từ Atos.

Lưu ý sự tương đồng giữa dòng BullSequana M9600 và Atos QLM . Atis QLM so với M9600

Cùng một hộp (và có thể là các thành phần bên trong) với phần mềm khác nhau (nhưng bạn muốn sử dụng Q # của riêng bạn). Atos tuyên bố: "Trình mô phỏng lượng tử hiệu suất cao nhất thế giới". Tôi không chắc về điều đó nhưng thông số kỹ thuật cho phiên bản 30 qubit có thể truy cập được, chỉ cần hai CPU Intel và bộ nhớ 1TB.

Sách giới thiệu Atos QLM .PDF .

cách nào để mô phỏng một máy tính lượng tử trong máy tính bình thường của tôi , để tôi có thể kiểm trathử các ngôn ngữ lập trình lượng tử (như Q #) không?

Nếu bạn chỉ sử dụng 256GB bộ nhớ và 1-24TB Swap Drive thì sẽ chậm nhưng nó sẽ hoạt động.

Ý tôi là một cái gì đó mà tôi thực sự có thể kiểm tra giả thuyết của mình và nhận được kết quả chính xác nhất .

Trích dẫn từ cuốn sách nhỏ:

"Máy học lượng tử Atos tính toán việc thực hiện chính xác chương trình lượng tử, với độ chính xác hai chữ số. Nó mô phỏng các định luật vật lý , vốn là trung tâm của điện toán lượng tử. Điều này rất khác với các bộ xử lý lượng tử hiện có, chịu đựng lượng tử Tiếng ồn, sự trang trí lượng tử và xu hướng sản xuất, cũng như các tắc nghẽn về hiệu suất. Mô phỏng trên Máy học lượng tử Atos cho phép các nhà phát triển tập trung vào các ứng dụng và thuật toán của họ mà không phải chờ máy lượng tử có sẵn ".

Họ yêu cầu độ chính xác cao, vì đó là một trình giả lập, nó không chịu tiếng ồn - cũng sẽ không nhanh, hoặc đắt tiền. Về lý thuyết, bạn có thể thêm một số bộ nhớ, ổ đĩa và phần mềm vào máy tính của mình ...


3

Tôi nghĩ rằng một "tổng quan" tốt đẹp về chủ đề này có thể được tìm thấy tại: Quantiki

Họ có một danh sách các trình mô phỏng máy tính lượng tử bằng nhiều ngôn ngữ, một số mô phỏng đã được trích dẫn ở đây trước đây. Tuy nhiên, họ giữ một danh sách mà họ cập nhật để thông báo (hoặc cố gắng thông báo) về tình trạng của dự án. Có một số "thư viện" như:

Haskell

qchas (qchas: Một thư viện để thực hiện Thuật toán lượng tử) - Một thư viện hữu ích để thực hiện Thuật toán lượng tử. Nó chứa các định nghĩa về Cổng lượng tử, Qubits.

Con trăn

qubiter : Dự án Qubiter nhằm mục đích cung cấp cuối cùng một bộ công cụ đầy đủ, được viết chủ yếu bằng Python, để thiết kế và mô phỏng các mạch lượng tử trên các máy tính cổ điển.

Javascript

jsqis : jsqis, ở cốt lõi của nó, là một trình giả lập máy tính lượng tử được viết bằng Javascript. Nó cho phép khởi tạo các thanh ghi lượng tử và thao tác của chúng bằng các cổng lượng tử.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.