مرحبا يا هبر! أقدم لكم ترجمة المقال "نظرة عامة ومقارنة منصات برمجيات الكم ذات مستوى البوابة" لريان لاروز.
أجهزة الكمبيوتر الكمومية متاحة للاستخدام في البنية التحتية السحابية ، ولكن في الوقت نفسه ، يمكن أن يكون الازدهار الأخير في منصات البرمجيات الكمومية أمرًا ساحقًا لأولئك الذين يقررون ما سيستخدمونه. تقدم هذه المقالة صورة حالية للمشهد السريع التطور للحوسبة الكمومية من خلال مقارنة أربع منصات برمجية - Forest (pyQuil) و QISKit و ProjectQ و Quantum Development Kit - التي تسمح للباحثين باستخدام أجهزة كمومية حقيقية ومحاكاة. يغطي هذا التحليل المتطلبات والتركيب وتركيب اللغة على سبيل المثال من البرامج والدعم على مستوى المكتبة وإمكانيات محاكي الكم لكل منصة. بالنسبة إلى الأنظمة الأساسية التي تدعم أجهزة الكمبيوتر الكمومية ، نقوم بمقارنة الأجهزة ولغات المجمّع الكمي ومترجمي الكم. في الختام ، سننظر في ميزات كل منها ونذكر باختصار حزم البرامج الأخرى للحوسبة الكمومية.
المحتويات
مقدمة
II. منصات البرمجيات
A. pyQuil
B. QISKit
C. ProjectQ
D. مجموعة تطوير Quatum
ثالثًا. مقارنة
أ. دعم المكتبة
الأجهزة الكمومية
ج. مجمعات الكم
D. أداء المحاكي
الميزات E.
IV. المناقشة والاستنتاجات
المراجع
الملحق أ. منصات البرامج الأخرى
الملحق ب. اختبار أداء المحاكي
الملحق (ج). برنامج مثال: نظام النقل عن بعد
مقدمة
تم النظر في لغات البرمجة الكمية قبل عقدين على الأقل [1-3] ، لكنها كانت في الغالب نظرية ولا تحتوي على معدات موجودة. أصبحت أجهزة الكمبيوتر الكمومية حقيقة واقعة ، وهناك لغات برمجة كمية تسمح لأي شخص لديه إمكانية الوصول إلى الإنترنت باستخدامها. قام عدد لا بأس به من الباحثين ، سواء في الصناعة أو في الأوساط الأكاديمية ، بإنشاء أجهزة كمومية صغيرة تعمل على نموذج دارة للحوسبة الكمومية. أجهزة الكمبيوتر هذه صغيرة وصاخبة وليست قوية مثل أجهزة الكمبيوتر الكلاسيكية الحديثة. لكنهم ينمون وينموون بثبات وينذرون المستقبل بقوة حوسبة كبيرة لا يمكن تصورها لمهام الكيمياء [4 ، 5] ، التعلم الآلي [6 ، 7] ، التحسين [8] ، القطاع المالي [9] وأكثر [10]. هذه الأجهزة هي منصة اختبار لتدريب الجيل القادم من مهندسي البرمجيات الكمومية على حل المهام المعقدة الكلاسيكية الحالية لتقنية الكمبيوتر. في الواقع ، تم استخدام الحوسبة الكمومية السحابية بالفعل لحساب طاقة ربط الديوترون [11] واختبار إجراءات في خوارزميات التعلم الآلي [12 ، 13].
في الآونة الأخيرة ، كان هناك نمو سريع في برامج الحوسبة الكمومية على مجموعة واسعة من لغات الكمبيوتر الكلاسيكية. تتوفر قائمة بمشاريع مفتوحة المصدر بأكثر من خمسين مشروعًا في [14] ، وقائمة من عمليات المحاكاة الكمومية الحاسوبية متاحة في [15]. هذا العدد الضخم من البرامج التي تعكس بشكل إيجابي النمو في المجال يجعل من الصعب على الطلاب والباحثين تحديد حزمة البرامج التي يجب استخدامها ، حتى لا تضيع في الوثائق أو أن تصدم بالمعرفة الأولية اللازمة.
من المتوقع أن تقدم هذه المقالة نظرة عامة موجزة ومقارنة بين منصات البرامج الرئيسية للحوسبة الكمومية للأغراض العامة على مستوى البوابة. تم اختيار أربعة من قائمة طويلة: ثلاثة ، مما يمنح المستخدم القدرة على الاتصال بأجهزة الكم الحقيقية - pyQuil من Rigetti [16] ، QISKit من IBM [17] و ProjectQ من ETH Zurich [18 ، 19] ، وواحدة ذات وظائف مماثلة ، ولكن بدون القدرة الحالية على الاتصال بكمبيوتر كمي - Quantum Development Kit من Microsoft [20]. لصالح اختيار هذه المنصات أصبحت القدرة على الاتصال بجهاز كمومي حقيقي. وبسبب هذا ، ومن أجل الإيجاز ، تم حذف عدد من البرامج المحترمة عمدا. بعضها مذكور في الملحق أ.
في الوقت الحالي ، الهدف الرئيسي هو تقديم صورة أفقية للحوسبة الكمومية التي تسببها هذه المنصات الأربعة. في القسم الثاني ، سنلقي نظرة على كل نظام أساسي بدوره ، وناقش المتطلبات والتثبيت ، والوثائق والبرامج التعليمية ، وبناء اللغة ، والمعدات الكمومية. يقدم القسم الثالث مقارنة تفصيلية بين المنصات. ويشمل: الدعم على مستوى المكتبة من خوارزميات الكم في III A ، ودعم الأجهزة الكمومية في III B ، ومجمعي الدوائر الكمومية في III C ومحاكاة الكمبيوتر الكمومية III D. يناقش القسم الرابع بعض التعليقات الذاتية حول كل منصة. يحتوي الملحق أ على معلومات حول برامج كمية أخرى ، ويحتوي الملحق ب على معلومات تفصيلية حول اختبار محاكيات الدوائر الكمومية ، ويوضح الملحق ج رمز مخططات الانتقال عن بُعد الكمي في كل لغة من اللغات الأربع للمقارنة جنبًا إلى جنب.
يوضح الشكل 1 العديد من أجهزة الكمبيوتر الكمومية والبرامج المستخدمة للاتصال بالأجهزة. حاليًا ، تسمح لك أربع منصات برمجية بالاتصال بأربعة أجهزة كمبيوتر كمومية مختلفة - واحد من Rigetti ، وهو جهاز كمبيوتر كمومي 8 بت ، يمكنك الاتصال باستخدام pyQuil [41] ؛ وثلاثة من IBM ، بأعلى 16 كيلو بت ، والتي يمكن توصيلها باستخدام QISKit أو ProjectQ. بالإضافة إلى ذلك ، تقدم IBM حاسوبًا كميًا رابعًا بحجم 20 بت ، ولكن هذا الجهاز متاح فقط لأعضاء شبكة IBM Q [42]: مجموعة من الشركات والجامعات والمختبرات الوطنية المهتمة والاستثمار في الحوسبة الكمومية. يوضح الشكل 1 أيضًا أجهزة الكمبيوتر الكمومية لشركات مثل Google و IBM و Intel التي تم الإعلان عنها ولكنها غير متاحة حاليًا للمستخدمين العاديين.

الشكل 1. رسم تخطيطي يوضح كيفية توصيل كمبيوتر شخصي بالكمبيوتر الكمومي المستخدم على مستوى البوابة. بدءًا من جهاز كمبيوتر شخصي (أسفل الوسط) ، تُظهر العقد الخضراء برامج يمكن تثبيتها على جهاز الكمبيوتر الشخصي للمستخدم. تشير العقد الرمادية إلى أن المحاكيات تعمل محليًا (أي على كمبيوتر المستخدم). تُظهر الخطوط المتقطعة اتصالات API / السحابة بموارد الشركة الموضحة باللون الأصفر "السحب". تظهر أجهزة محاكاة الكم وأجهزة الكمبيوتر الكمومية المستخدمة التي توفرها هذه الموارد السحابية باللون الأزرق والذهبي على التوالي. تظهر الإطارات الحمراء متطلبات الطريقة المختارة. على سبيل المثال ، للاتصال بـ Rigetti Forest واستخدام كمبيوتر Agave 8 qubit الكمومي ، تحتاج إلى تنزيل وتثبيت pyQuil (المتوفر على MacOS و Windows و Linux) ، والتسجيل في موقع Rigetti الإلكتروني للحصول على مفتاح API ، ثم طلب الوصول إلى الجهاز عبر الإنترنت شكل. ملاحظات: (1) تتطلب آلة Rigetti Quantum الظاهرية رفع الحقوق لأكثر من 30 كيلوبت ، و (2) تعتمد المحاكيات المحلية على كمبيوتر المستخدم ، وبالتالي فإن الأرقام المقدمة تقريبية ، و (3) أجهزة الكمبيوتر الكمومية التي تم الإعلان عنها ولكن غير متوفر حاليا للمستخدمين العاديين.تتغير تكنولوجيا المعدات الكمية بسرعة. من المحتمل جدًا أن تظهر أجهزة الكمبيوتر الجديدة بحلول نهاية العام ، وقد تصبح هذه القائمة قديمة تمامًا خلال عامين أو ثلاثة. ومع ذلك ، ما تبقى هو البرنامج المستخدم للاتصال بهذه التكنولوجيا. سيكون من السهل جدًا استخدام أجهزة الكمبيوتر الكمومية الجديدة ، وتغيير بضعة أسطر فقط من التعليمات البرمجية ، دون تغيير بناء الجملة المستخدم لإنشاء أو تشغيل الدائرة الكمومية. على سبيل المثال ، في QISKit ، ما عليك سوى تغيير اسم جهاز الواجهة الخلفية عند تنفيذ المخطط:
execute(quantum_circuit, backend="name", ...)
القائمة 1. تشير السلسلة "name" إلى جهاز خلفي لتشغيل برامج الكم باستخدام QISKit. عند إصدار أجهزة الكمبيوتر الكمومية المستقبلية ، سيكون التشغيل على أجهزة جديدة أمرًا بسيطًا مثل تغيير الاسم.
على الرغم من أن البرنامج يتغير أيضًا مع إصدار الإصدار الجديد [43] ، إلا أنها ، في معظمها ، تغييرات نحوية طفيفة نسبيًا لا تغير بشكل كبير وظائف البرنامج.
في هذا القسم ، سنلقي نظرة على كل من المنصات الأربعة ، ونناقش المتطلبات والتثبيت ، والتوثيق والأدلة ، وبناء اللغة ، واللغة الكمومية ، والمعدات الكمية ، وقدرات المحاكاة. لا تهدف هذه المراجعة إلى تعليم اللغة بشكل كامل ، ولكنها تمنح القارئ فهمًا لكل نظام أساسي قبل الانغماس في واحدة (أو أكثر) من الأنظمة الأساسية المحددة. يتضمن التحليل الحالي معلومات كافية لتشغيل الخوارزميات على أجهزة الكمبيوتر الكمومية. ومع ذلك ، يتم إرسال القارئ ، عند اختياره لمنصة معينة ، إلى وثائق خاصة للحصول على معلومات كاملة. تمت إضافة روابط إلى الوثائق والمصادر التعليمية لكل حزمة برامج. من المفترض أيضًا أن هناك معرفة أساسية بالحوسبة الكمومية ، والتي يوجد لها الآن العديد من المراجع الجيدة [21 ، 22].
تم اختبار جميع أجزاء التعليمات البرمجية والبرامج المضمنة في هذا المستند وتشغيلها على كمبيوتر محمول Dell XPS 13 Developer Edition الذي يعمل بنظام Linux Ubuntu 16.04 LTS ، والتي يتم سرد المواصفات الكاملة لها في [23]. على الرغم من أن جميع حزم البرامج تعمل في أنظمة التشغيل الثلاثة الرئيسية ، إلا أنه من الأسهل كثيرًا على المؤلف تثبيت البرنامج واستخدامه على النظام الأساسي الذي تم تطويره عليه. على Linux Ubuntu ، لم تكن هناك صعوبات أو رسائل خطأ غير عادية عند تثبيت حزم البرامج هذه.
| pyQuil | QISKit | Projectq | QDK |
---|
مؤسسة | ريجيتي | ايب | Et zurich | مايكروسوفت |
الإصدار الأول | الإصدار 0.0.2 في 15 يناير 2017 | 0.1 في 7 مارس 2017 | الإصدار 0.1.0 في 3 يناير 2017 | 0.1.1712.901 في 4 يناير 2018 (ما قبل النشر) |
الإصدار الحالي | v1.9.0 في 6 يونيو 2018 | 0.5.4 في 11 يونيو 2018 | الإصدار 0.3.6 في 6 فبراير 2018 | 0.2.1802.2202 في 26 فبراير 2018 (إصدار تجريبي) |
المصدر المفتوح | ✅ | ✅ | ✅ | ✅ |
الترخيص | أباتشي 2.0 | أباتشي 2.0 | أباتشي 2.0 | معهد ماساتشوستس للتكنولوجيا |
الصفحة الرئيسية | المنزل | المنزل | المنزل | المنزل |
جيثب | جيت | جيت | جيت | جيت |
التوثيق | مستندات ، دروس ( غروف ) | المستندات ، الدفاتر التعليمية ، الأجهزة | المستندات ، برامج المثال ، الورق | المستندات |
نظام التشغيل | ماك ، ويندوز ، لينكس | ماك ، ويندوز ، لينكس | ماك ، ويندوز ، لينكس | ماك ، ويندوز ، لينكس |
المتطلبات | Python 3 ، أناكوندا (موصى به) | Python 3.5+ و Jupyter Notebooks (للبرامج التعليمية) و Anaconda 3 (مستحسن) | Python 2 أو 3 | Visual Studio Code (مستحسن بشدة) |
اللغة الكلاسيكية | بيثون | بيثون | بيثون | س # |
لغة كمومية | لحاف | Openqasm | لا يوجد / هجين | س # |
أجهزة الكم | 8 كيلوبايت | IBMQX2 (5 كيلوبايت) ، IBMQX4 (5 كيلوبايت) ، IBMQX5 (16 كيلوبايت) ، QS1_1 (20 كيلوبايت) | لا يوجد جهاز مخصص ، يمكن الاتصال بخلفية IBM | لا شيء |
محاكي | ∼20 كيلوبايت محليًا ، 26 كيلوبايت مع معظم مفاتيح API لـ QVM ، 30+ ث / وصول خاص | ∼25 كيلوبايت محليًا ، 30 عبر السحابة | ∼28 بتة محليا | 30 كيلوبت محليًا ، 40 عبر سحابة Azure |
الميزات | إنشاء كود Quil ، مثال الخوارزميات في Grove ، مترجم خاص بالطوبولوجيا ، قدرات الضوضاء في المحاكاة ، قناة Slack المجتمعية | إنشاء كود QASM ، مترجم طوبولوجيا محدد ، قناة سلاك المجتمع ، درج الدائرة ، مكتبة أكوا | ارسم الدوائر ، واتصل بخلفية IBM ، والمكونات الإضافية المتعددة للمكتبة | خوارزميات مضمنة ، خوارزميات سبيل المثال |
pyQuilA. pyQuil
pyQuil هي مكتبة Python مفتوحة المصدر تم تطويرها بواسطة Rigetti لإنشاء وتحليل وتنفيذ برامج الكم. وهي مبنية على أساس لغة كويل - لغة مفتوحة لتعليمات الكم (أو ببساطة لغة كمومية ) ، مصممة خصيصًا لأقرب أجهزة الكمبيوتر الكمومية الواعدة وتستند إلى نموذج ذاكرة كلاسيكية / كمومية مشتركة [24] (وهذا يعني أن كوبيتات و بت الكلاسيكية). pyQuil هي واحدة من المكتبات الأساسية التي تم تطويرها في Forest ، وهي المنصة الرئيسية لجميع برامج Rigetti. تشتمل Forest أيضًا على Grove و Reference QVM ، والتي سيتم وصفها لاحقًا.
أ. المتطلبات والتثبيت
يتطلب تثبيت واستخدام pyQuil إصدارات Python 2 أو 3 ، على الرغم من أن Python 3 موصى به بشدة ، لأن وظائف التطوير المستقبلية ستدعم Python 3. بالإضافة إلى ذلك ، يوصى بتوزيع Python Anaconda لمختلف تبعيات وحدة Python ، على الرغم من أن هذا ليس ضروريًا.
أسهل طريقة لتثبيت pyQuil هي استخدام الأمر Python package manager. في موجه أوامر Linux Ubuntu ، أدخل
pip install pyquil
لتثبيت البرامج بنجاح. بدلاً من ذلك ، إذا تم تثبيت Anaconda ، فيمكن تثبيت pyQuil عن طريق الكتابة
conda install −c rigetti pyquil
في سطر الأوامر. بديل آخر هو تنزيل شفرة المصدر من مستودع git وتثبيت البرنامج. للقيام بذلك ، أدخل الأوامر التالية:
git clone https://github.com/rigetticomputing/pyquil cd pyquil pip install −e
يوصى بهذه الطريقة الأخيرة لجميع المستخدمين الذين يمكنهم المساهمة في pyQuil. راجع دليل إيداع GitHub لمزيد من المعلومات.
ب. الوثائق والبرامج التعليمية
لدى pyQuil وثائق ممتازة منشورة على الإنترنت ، مع مقدمة للحوسبة الكمومية ، وتعليمات التثبيت ، والبرامج الأساسية وعمليات البوابة ، ومحاكاة تُعرف باسم الآلة الافتراضية الكمومية (QVM) ، وكمبيوتر كمومي حقيقي ، ولغة كويل مع مترجم. من خلال تنزيل شفرة مصدر pyQuil من GitHub ، ستحصل أيضًا على مجلد يحتوي على أمثلة في دفاتر Jupyter وأمثلة Python العادية وبرنامج $ inline $ \ textf {run_quil.py} $ inline $ ، والتي يمكنها تشغيل مستندات نصية مكتوبة بلغة Quil باستخدام آلة افتراضية كمومية. أخيرًا ، أذكر غروف ، وهي مجموعة من خوارزميات الكم التي تم إنشاؤها باستخدام pyQuil وبيئة Rigetti Forest.
ج. بناء الجملة
بنية pyQuil بسيطة وعملية للغاية. العنصر الرئيسي لتسجيل الدوائر الكمومية هو البرنامج ويمكن استيراده منه textfpyquil.quil . يمكن العثور على عمليات البوابة في textfpyquil.gates . الوحدة textfapi يسمح لك بتشغيل دوائر الكم في آلة افتراضية. واحدة من الميزات اللطيفة لـ pyQuil هي أنه لا يجب تحديد السجلات qubit والسجلات الكلاسيكية بشكل مسبق ويمكن تخصيصها ديناميكيًا في الذاكرة. تتم الإشارة إلى Qubits في سجل qubit بواسطة الفهارس (0 ، 1 ، 2 ، ...) وبالمثل بالنسبة للبتات في السجل الكلاسيكي. وبالتالي ، يمكن كتابة دائرة المولد العشوائية على النحو التالي:
قائمة 2. رمز PyQuil لمولد رقم عشوائي.
تستورد الخطوط الثلاثة الأولى الحد الأدنى اللازم لإعلان مخطط / برنامج كمومي (السطر 2) ، ولإجراء عمليات البوابة على الكيبات (الخط 3) [44] ولتنفيذ المخطط (السطر 4). في السطر 6 ، يتم إنشاء برنامج كمومي ، وفي الأسطر 7-8 ، يتم إرسال قائمة بالتعليمات إليه: أولاً ، التصرف على بوابة هادامارد H فوق qubit في الفهرس 0 ، ثم نقيس نفس qubit إلى بتة كلاسيكية تحت الفهرس 0. ينشئ الخط 10 اتصالاً بـ QVM ، وعند 11 يتم تشغيل نتيجة دائرتنا وعرضها. يقوم هذا البرنامج بطباعة الإخراج القياسي لـ pyQuil كقائمة بقوائم الأعداد الصحيحة: في حالتنا - textf[[[0]] أو textf[[[1]] . بشكل عام ، عدد العناصر في قائمة خارجية هو عدد الاختبارات التي تم إجراؤها. الأرقام الصحيحة في القوائم الداخلية هي الأبعاد النهائية في السجل الكلاسيكي. بما أننا أجرينا اختبارًا واحدًا فقط (يشار إلى هذا كحجة في textfapi.QVMConnection.run ، والتي يتم تعيينها على الوحدة افتراضيًا) ، نحصل على قائمة داخلية واحدة فقط. نظرًا لأنه في السجل الكلاسيكي لم يكن لدينا سوى جزء واحد ، نحصل على عدد صحيح واحد فقط.
د. لغة كمومية
Quil هي لغة تعليمات كمومية ، أو ببساطة لغة كمومية تنقل الأوامر إلى جهاز كمبيوتر كمومي. هذا مشابه للمجمع على أجهزة الكمبيوتر الكلاسيكية. جوهر بناء Quil هو textfGATEindex أين textfGATE هي بوابة كمية تنطبق على الكوبت المفهرسة textfindex (0 ، 1 ، 2 ، ...). لدى pyQuil وظيفة لإنشاء كود Quil من برنامج معين. على سبيل المثال ، في مولد العدد العشوائي الكمومي المذكور أعلاه ، يمكننا إضافة السطر:
print(qprog)
في النهاية للحصول على رمز مخطط كويل ، الذي يظهر أدناه:
H 0 MEASURE 0 [0]
قائمة 3. رمز لحاف لمولد رقم عشوائي.
ربما إذا بدأ شخص ما في فهم Quil ، اكتب دوائر الكم في محرر نص في Quil ، ثم نفذ الدائرة على QVM باستخدام البرنامج $ inline $ \ textf {run_quil.py} $ inline $ . يمكنك أيضًا التعديل $ inline $ \ textf {run_quil.py} $ inline $ لتشغيل الدائرة على QPU. لاحظ أن المترجم pyQuil (يسمى أيضًا مترجم Quil في الوثائق) يحول الدائرة المحددة إلى كود Quil الذي يمكن أن يفهمه الكمبيوتر الكمومي الحقيقي. سنناقش هذا بمزيد من التفصيل في القسم الثالث جيم.
و. أجهزة الكم
لدى Rigetti معالج كمومي يمكن استخدامه من قبل أولئك الذين يطلبون الوصول. لطلب الوصول ، يجب عليك زيارة موقع Rigetti على الويب وتقديم الاسم الكامل وعنوان البريد الإلكتروني واسم المؤسسة ووصفًا لسبب الوصول إلى QPU. بمجرد الانتهاء من ذلك ، سيتصل بك أحد ممثلي الشركة عبر البريد الإلكتروني لتحديد موعد لإعطاء المستخدم حق الوصول إلى QPU. ميزة عملية الجدولة هذه ، على النقيض من نظام قائمة انتظار QISKit ، الذي سيتم مناقشته لاحقًا ، هو أنه يمكن تنفيذ العديد من المهام في فترة زمنية موزعة مع أوقات تنفيذ حتمية ، وهو أمر أساسي للخوارزميات المتنوعة والمختلطة. ترسل هذه الأنواع من الخوارزميات البيانات ذهابًا وإيابًا بين أجهزة الكمبيوتر الكلاسيكية والكمومية - الحاجة إلى الانتظار في الطابور تجعل هذه العملية أطول بكثير. العيب (ربما) هو أنه لا يمكن أداء المهام في أي وقت عندما تكون وحدة QPU متاحة ومن الضروري الإشارة إلى وقت محدد والموافقة عليه.
وفقًا لتجربة المؤلف ، فإن الموظفين على استعداد للمساعدة ، وعادة ما تكون العملية ناجحة. يتكون الجهاز الفعلي ، الذي يظهر هيكله في الشكل 2 ، من 8 كيوبتات مع أقرب اتصال جار. سنلقي نظرة على هذا الكمبيوتر بمزيد من التفصيل في القسم الثالث ب.
ز. محاكي
الآلة الكمومية الافتراضية (QVM) هي الأداة الرئيسية المستخدمة لتنفيذ الدوائر الكمومية. يتلقى هذا البرنامج ، المكتوب للتشغيل على معالج كلاسيكي ، كود Quil ويحاكي تطوير عملية على كمبيوتر كمومي حقيقي. للاتصال بـ QVM ، تحتاج إلى تسجيل مفتاح API مجانًا على https://www.rigetti.com/forest باسم وعنوان بريد إلكتروني. ثم ستتلقى بريدًا إلكترونيًا يحتوي على مفتاح واجهة برمجة التطبيقات ومعرف المستخدم الذي يجب تكوينه عند بدء التشغيل:
pyquil−config−setup
في سطر الأوامر (بعد تثبيت pyQuil ، بالطبع). ثم سيُطلب منك إدخال المفاتيح من البريد الإلكتروني.
وفقًا للوثائق ، توفر معظم مفاتيح API الوصول إلى QVMs حتى 30 كيلو بت ، ويمكنك طلب الوصول إلى المزيد من وحدات البت. يتيح مفتاح واجهة برمجة تطبيقات المؤلف الوصول إلى 26 كيلوبايت (لم يتم طلب تحديثات).
بالإضافة إلى ذلك ، تحتوي مكتبة الغابة على جهاز محاكاة محلي مكتوب بلغة Python ومصدر مفتوح ، يُشار إليه باسم QVM المرجعي . إنها ليست منتجة مثل QVM ، ولكن يمكن للمستخدمين تشغيل الدوائر مع عدد وحدات البت التي تحددها مساحة الذاكرة على الأجهزة المحلية. عادة ، يمكن تشغيل الدوائر التي تحتوي على أقل من 20 كيلوبت على مجموعة واسعة من المعدات. يجب تثبيت QVM المرجعي بشكل منفصل ، والذي يمكن القيام به باستخدام textfpip :
pip install referenceqvm
لاستخدام QVM المرجعي بدلاً من QVM ، ما عليك سوى الاستيراد textfapi من textfreferenceqvm بدلاً من pyQuil:
import referenceapi.api as api

الشكل 2 الشكل 2. رسم تخطيطي يوضح طوبولوجيا (الاتصال) 8 Agbit QPU Rigetti 8 بت. يتم تمييز Qubits بالأعداد الصحيحة 0 ، 1 ، ... ، 7 ، وتشير الخطوط التي تربط الكيبتات إلى أنه يمكن إجراء عمليتي كبيت بين هذه الكيبات. على سبيل المثال ، يمكننا تنفيذ ض عبر الكوبتات 0 و 1 ، ولكن ليس بين 0 و 2. لإنجاز هذا الأخير ، يقوم مترجم Quil بتحويل - ض (0 ، 2) في العملية التي يمكن أن تؤديها QPU. هذا الرسم البياني مأخوذ من وثائق pyQuil.QISKitB. QISKit
مجموعة برامج معلومات الكم ، أو QISKit ، هي مجموعة تطوير برمجيات مفتوحة المصدر (SDK) للعمل مع اللغة الكمومية OpenQASM ومعالجات الكم في منصة IBM Q. وهي متاحة للغات Python و JavaScript و Swift ، ولكن هنا نناقش فقط نسخة بايثون.
أ. المتطلبات والتثبيت
QISKit متاح على أنظمة التشغيل MacOS و Windows و Linux. يتطلب تثبيت QISKit استخدام Python 3.5+. مكونات إضافية مفيدة ، ولكنها غير مطلوبة هي Jupyter Notebooks للبرامج التعليمية وتوزيع Python Anaconda 3 ، الذي يحتوي على جميع التبعيات اللازمة.
أسهل طريقة لتثبيت QISKit هي استخدام مدير حزمة النقاط لـ Python. في موجه الأوامر ، لتثبيت البرنامج ، أدخل:
pip install qiskit
يرجى ملاحظة ذلك textfpip يعالج تلقائيًا جميع التبعيات وسيعمل دائمًا على تثبيت أحدث إصدار. يمكن للمستخدمين المهتمين بالمساهمة في QISKit تثبيت شفرة المصدر بإدخال ما يلي في موجه الأوامر ، من المفترض أن git مثبتة:
git clone https://github.com/QISKit/qiskit−core cd qiskit−core python −m pip install −e
للحصول على معلومات حول الإيداعات ، راجع الوثائق الفورية لدليل الإيداع على GitHub.
ب. التوثيق ومواد التدريب
يمكن العثور على وثائق QISKit على الإنترنت على https://qiskit.org/documentation/ . يحتوي على تعليمات التثبيت والتكوين ، ونماذج البرامج والاتصال بالأجهزة الكمومية الحقيقية ، وتنظيم المشروع ، ومراجعة QISKit ، ووثائق المطور. يمكن أيضًا العثور على معلومات أساسية حول الحوسبة الكمومية للمستخدمين الجدد في هذا المجال. مورد جيد جدًا هو ارتباط إلى SDK ، حيث يمكن للمستخدمين العثور على معلومات حول وثائق التعليمات البرمجية المصدر.
يحتوي QISKit أيضًا على عدد كبير من البرامج التعليمية في مستودع GitHub منفصل (مشابه لـ pyQuil و Grove). وتشمل هذه الدول المتشابكة. الخوارزميات القياسية مثل Deutsch Jozh ، خوارزمية Grover ، تقدير المرحلة وتحويل فورييه الكمومي ؛ أيضًا خوارزميات أكثر تعقيدًا ، مثل حل مشكلة القيمة الذاتية المتغيرة الكمومية وتطبيقها على فرميتوني هاميلتون ؛ وحتى بعض الألعاب الممتعة ، مثل "معركة البحر" الكمومية. بالإضافة إلى ذلك ، تحتوي مكتبة ACQUA (الخوارزميات والدوائر لتطبيقات QUantum) على خوارزميات متعددة التخصصات للكيمياء والذكاء الاصطناعي مع العديد من الأمثلة.
هناك أيضًا وثائق مفصلة للغاية لكل من الخلفيات الخلفية الكمية التي تحتوي على معلومات حول الاتصال ووقت التماسك ووقت استخدام البوابة. أخيرًا ، اذكر موقع ويب IBM Q Experience وأدلة المستخدم. يحتوي موقع الويب على واجهة رسومية لدائرة كمية يمكن للمستخدمين من خلالها سحب البوابات إلى دائرة ، وهو أمر مفيد لاستكشاف الدوائر الكمومية. تحتوي أدلة المستخدم على مزيد من الإرشادات حول الحوسبة الكمية ولغة QISKit.
ج. بناء الجملة
يمكن عرض بناء جملة QISKit في نموذج البرنامج التالي. هنا ، على عكس pyQuil ، تحتاج إلى التمييز بوضوح بين السجلات الكمية والكلاسيكية. فيما يلي برنامج لنظام الأرقام العشوائية في QISKit:
القائمة 4. رمز QISKit لمولد رقم عشوائي.
يستورد السطر 2 أدوات لإنشاء تسجيلات كمية وكلاسيكية ودائرة كمية ووظائف لتنفيذ هذه الدائرة. ثم نقوم بإنشاء سجل كمومي مع كيلوبايت واحد (السطر 4) ، وسجل كلاسيكي مع بت واحد (السطر 5) ودائرة كمية مع كل من هذه السجلات (السطر 6). الآن بعد أن تم إنشاء الدائرة ، نبدأ في إعطاء التعليمات: في السطر 8 نطبق بوابة هادامارد على صفر كيلوبايت في سجل الكم (وهو الكيوبت الوحيد في السجل الكمي) ؛ في السطر 9 ، نقيس هذا الكيوبت في بتة كلاسيكية مفهرسة بصفر في سجلنا الكلاسيكي (وهو الوحيد في السجل الكلاسيكي) [45]. الآن بعد أن تم بناء الدارة الكمومية ، نفّذها في السطر 11 واطبع النتيجة في السطر 12. عن طريق الإخراج $ inline $ \ textf {result.get_counts ()} $ inline $ نحصل على "حسابات" الدائرة ، أي قاموس بيانات المخرجات وعدد مرات تلقي كل نتيجة. لحالتنا ، المخرجات الوحيدة الممكنة هي 0 أو 1 ، ومثال على مخرجات البرنامج أعلاه textf⁗:532،′1′:492 ، مما يشير إلى أننا حصلنا على 532 حالة من 0 و 492 حالة من 1. (بشكل افتراضي ، عدد الدورات لبدء الدائرة يسمى textfshots في QISKit ، هو 1024.)
د. لغة كمومية
OpenQASM (لغة التجميع الكمومي المفتوحة [25] ، والتي يمكننا ببساطة تسميتها QASM) هي لغة كمومية توفر تعليمات للأجهزة الكمومية الحقيقية المشابهة للمجمع على أجهزة الكمبيوتر الكلاسيكية. أساس بناء جملة QASM هو textfgatequbit أين textfgate يضبط تشغيل البوابة الكمومية و textfqubit - كيوبت. QISKit لديه وظيفة لإنشاء كود QASM من مخطط. في مخطط الأرقام العشوائية أعلاه ، يمكننا إضافة خط.
print(qcircuit.qasm())
في النهاية للحصول على رمز QASM للدائرة الموضحة أدناه:
OPENQASM 2.0; include ”qelib1.inc”; qreg q0[1]; creg c0[1]; h q0[0]; measure q0[0] −> c0[0];
القائمة 5. كود OpenQASM لمولد رقم عشوائي.
يتم تضمين السطرين الأولين في كل ملف QASM. ينشئ الخط 3 (4) سجلاً كمّيًا (كلاسيكيًا) ، ويعطي الخطان 5 و 6 تعليمات للدائرة. في OpenQASM ، يمكنك كتابة دوائر صغيرة مثل هذه ، ولكن بالنسبة للدوائر الأكبر ، من الأفضل استخدام الأدوات في QISKit للبرمجة المجانية والفعالة لأجهزة الكمبيوتر الكمومية.
ه. أجهزة الكم
هناك كمية كبيرة من الوثائق للخلفية الكمية المدعومة من QISKit. تتضمن هذه الأجهزة IBMQX2 (5 كيلوبايت) و IBMQX4 (5 كيلوبايت) و IBMQX5 (16 كيلوبايت) و QS1_1 (20 كيلوبايت ، متوفرة فقط لأعضاء شبكة IBM Q). الوثائق للجميع متاحة على جيثب. سنلقي نظرة فاحصة على IBMQX5 في القسم III B ، الذي يظهر طوبولوجيته في الشكل 3.
و. محاكي
IBM , . , 12 , , 25 . , III D.

الشكل 3. طوبولوجيا تخطيطية لـ IBMQX5 ، مأخوذة من [30]. تشير الأسهم الاتجاهية إلى فرص التشابك. على سبيل المثال ، يمكننا إجراء عملية (في QASM) cx Q1, Q2 ولكن ليس عملية cx Q2, Q1 . للقيام بهذا الأخير ، يترجم المترجم التعليمات إلى بوابات مكافئة تعمل في الطوبولوجيا ومجموعة من البوابات.ProjectqC. ProjectQ
ProjectQ — IBM, . ProjectQ Thomas Häner Damien S. Steiger Matthias Troyer ETH Zurich, .
أ.
ProjectQ Python (2.7 3.4+). . pip :
python −m pip install −−user projectq
( ). :
git clone https://github.com/ProjectQ−Framework/ProjectQ cd projectq python −m pip install −−user
, , . ProjectQ GitHub.
ب.
ProjectQ . , . - ( , ). — / , . [18, 19] , , - .
ج.
ProjectQ , . ProjectQ ( ProjectQ), — / . , :
6. ProjectQ .
2 , 3 . 5 (engine) MainEngine , 6 . 8 9 : 0, . « » . — operation | qubit , H|0> , . , /. pyQuil QISKit, ProjectQ . , qbits[0] 9, , int , 12.
د.
, ProjectQ . ProjectQ IBM, OpenQASM: IBM.
e.
ProjectQ . , IBM ProjectQ.
f.
ProjectQ , C++, , , Python. , ProjectQ ClassicalSimulator (stabilizer circuits), . . , , , CNOT [26]. , , , , . , C++ Simulator .
C++ Simulator ProjectQ . [23]() (, ), 26 5 , 28 20 — . [III D]() 6.
ProjectQ , , . , pyQuil ProjectQ [27], Microsoft QDK Thomas Häner Damian Steiger ETH Zurich [28], . ( , , QDK ProjectQ C++, .)
مجموعة تطوير الكمD. Quantum Development Kit
Rigetti IBM, Microsoft . [29] , , , . , Microsoft , Quantum Development Kit (QDK), , . , QDK «-» Q#, Visual Studio Visual Studio Code 30 . 2018 , -, MacOS, Windows Linux.
أ.
, Visual Studio Code , . ( VS Code, Visual Studio . - - , , VS Code.) , QDK , Bash:
dotnet new −i "Microsoft.Quantum.ProjectTemplates::0.2 −*"
QDK GitHub ( , QDK), :
git clone https://github.com/Microsoft/Quantum.git cd Quantum code
ب.
— Q#, - , , , Q# . ; , .
ج.
Q# . C#: , Python, , C#. , :
// random number generator circuit in QDK operation random (count: Int, initial: Result) : (Int, Int) { body { mutable numOnes = 0; using ( qubits = Qubit[1]) { for (test in 1..count) { Set(initial, qubits[0]); H(qubits[0]); let res = M(qubits[0]); // count the number of ones if (res == One) { set numOnes = numOnes + 1; } } Set(Zero, qubits[0]); } // return statistics return (count − numOnes, numOnes); } }
7. Q# .
, , /, , . . , , , . — .qs Q#, Driver.cs .qs , .csproj , . , 65 . -, , «Quickstart» .
, QDK , . , — (a+b) , . QDK , , ( C , , , , .
د. /
, QDK . Q# / .
e.
QDK , 30 . , QDK ProjectQ, , ProjectQ. ( III D.) Azure , 40 . QDK , .
, QDK (trace simulator), , , , . , . , . , , - , . . . - QDK.
ثالثًا. مقارنة
لاحقًا في هذا القسم ، عندما تم النظر في أساسيات كل نظام أساسي ، سنقوم بمقارنة كل من الخصائص الإضافية ، بما في ذلك الدعم في المكتبة والمعدات الكمية ومستويات المترجم الكمومي. سنقوم أيضًا بإدراج بعض الميزات الجديرة بالملاحظة والمفيدة لكل منصة.
أ. دعم المكتبة
« » ( ) (, language.DoQuantumFourierTransform (...) ) . , , 4.
, , , . , , , .
, pyQuil, QISKit QDK . ProjectQ FermiLib, FermiLib, OpenFermion, . , , , ProjectQ. Microsoft QDK , , . , QDK , , QDK, . QISKit .
B.
pyQuil QISKit, . , — — « ». ( ), , / . , , --. IBMQX5 Agave, . - .
أ. IBMQX5
IBMQX5 — 16- ( 3). (T2) 31±5 0- , — 89±17 15- . 80 10 . CNOT - , 170- cx q[6], q[7] 348 cx q[3], q[14] . 99,5% ( = 1 — ). - 94,9% . 12,4% 6%. [30].
, , IBM , , . Agave Rigetti, -, , . , .
ب. Agave
Agave 8 (transmon) , 2. (T2) 9,2 1- , 15,52 2- . Controlled- Z 118 195 . 96,2% ( , = 1 — ) 93,2%. - 87% - . . - pyQuil.
Algorithm | pyQuil | QISKit | ProjectQ | QDK |
---|
Random Number Generator | (T) | (T) | (T) | (T) |
Teleportation | (T) | (T) | (T) | (T) |
Swap Test | (T) | | | |
Deutsch-Jozsa | (T) | (T) | | (T) |
Grover's Algorithm | (T) | (T) | (T) | (B) |
Quantum Fourier Transform | (T) | (T) | (B) | (B) |
Shor's Algorithm | | | (T) | (D) |
Bernstein Vazirani | (T) | (T) | | (T) |
Phase Estimation | (T) | (T) | | (B) |
Optimization/QAOA | (T) | (T) | | |
Simon's Algorithm | (T) | (T) | | |
Variational Quantum Eigensolver | (T) | (T) | (P) | |
Amplitude Amplification | (T) | | | (B) |
Quantum Walk | | (T) | | |
Ising Solver | (T) | | | (T) |
Quantum Gradient Descent | (T) | | | |
Five Qubit Code | | | | (B) |
Repetition Code | | (T) | | |
Steane Code | | | | (B) |
Draper Adder | | | (T) | (D) |
Beauregard Adder | | | (T) | (D) |
Arithmetic | | | (B) | (D) |
Fermion Transforms | (T) | (T) | (P) | |
Trotter Simulation | | | | (D) |
Electronic Structure (FCI, MP2, HF, etc.) | | | (P) | |
Process Tomography | (T) | (T) | | (D) |
Meyer-Penny Game | (D) | | | |
Vaidman Detection Test | | (T) | | |
Battleships Game | | (T) | | |
Emoji Game | | (T) | | |
Counterfeit Coin Game | | (T) | | |
4. , . « » (T), (D), (B) (P).C.
, , , . / . — , , . QISKit Rigetti, .
IBMQX5 u1 ، u2 ، u3 و CNOT أين

, u1 Rz(θ) , u2 و u3 — Rx(π/2)

, .

أين X و Z — . IBM Rz(θ) « », , . , z , z () , .
IBMQX5 3. , CNOT , CNOT

, CNOT QISKit, , , QISKit CNOT, . QISKit , , .
8- Agave Rigetti Rx(kπ/2) k∈Z ، Rz(θ) Controlled- Z . , , Controlled- Z ( CZ )

Agave 2. QISKit, pyQuil ( ).
, , 5. , pyQuil, Agave, QISKit — IBMQX5. , QISKit (. . ), pyQuil. , - . , IBMQX5 , , pyQuil, . , ( ) - - (, , [32]), . [46], .

5. ( ), pyQuil 8- Agave Rigetti ( ) , QISKit IBM IBMQX5 16- . , Agave, 0, 1 2 ( 2), , IBMQX5, 0, 1 2. , H , Rx و Rz . CNOT IBMQX5, Agave — pyQuil CNOT Controlled- Z . ProjectQ.D.
, . , , (. . ) . , , , , , . . QISKit , C++, ProjectQ , B . QVM pyQuil.
أ. pyQuil
Rigetti, Quantum Virtual Machine (QVM), , . , API. API 30- , . 16- 10 2,61 . 23 10 56,33 , , QVM API. - - , QVM , QVM , ProjectQ QISKit.
QVM . , . , , . Noise and Quantum Computation pyQuil.
ب. QISKit
QISKit , : ، ، ، و . . () . , / . [33], [34-36] . ClassicalSimulator ProjectQ, (stabilizer circuits), .
, 10 10 23,55 . — 239,97 , 12 1000 ( 17 ). , n 2n×2n .
C . 25 . 20 . 6 7.
. ProjectQ
ProjectQ C++, . , , 28 , (569,71 ) 20-. [18]. 6 7.

6. QISKit () ProjectQ C++ (), ( ) ( ). , ( ). **B**.
7. , ProjectQ C++ QISKit, . , √X , CNOT, . , . ProjectQ.E.
pyQuil Grove, GitHub, pyQuil. Rigetti , Slack Rigetti Forest. Quil ( ). , pyQuil OpenFermion [37], Python , .
QISKit JavaScript Swift. Python - . Grove, QISKit . , ACQUA QISKit . . IBM , . 3 , QISKit, 80000 , 60 , IBM [31]. QISKit Slack , , . , QISKit .
, ProjectQ . , TikZ TEX . ProjectQ. ProjectQ , . ProjectQ , IBM. , ProjectQ , OpenFermion, .
QDK Windows , 2018 macOS Linux. QDK, . , Q# , , . QDK , , , , , . .
IV.
, , , (-) (-) . — , . / .
, , :
- , , QISKit ( ProjectQ) pyQuil — .
- , , QISKit, pyQuil QDK — .
- , , Python — .
- , C/C#, QDK — .
- , , , ProjectQ — .
- , - , pyQuil — .
- , , Strawberry Fields .
, , . . , , .
المراجع- Bernhard Ömer, A procedural formalism for quantum computing , Master's thesis, Department of Theoretical Physics, Technical University of Vienna, 1998.
- S. Bettelli, L. Serafini, T. Calarco, Toward an architecture for quantum programming , Eur. Phys. J. D, Vol. 25, No. 2, pp. 181-200 (2003).
- Peter Selinger (2004), A brief survey of quantum programming languages , in: Kameyama Y., Stuckey PJ (eds) Functional and Logic Programming. FLOPS 2004. Lecture Notes in Computer Science, vol 2998. Springer, Berlin, Heidelberg.
- Benjamin P. Lanyon, James D. Whitfield, Geoff G. Gillet, Michael E. Goggin, Marcelo P. Almeida, Ivan Kassal, Jacob D. Biamonte, Masoud Mohseni, Ben J. Powell, Marco Barbieri, Alaґn Aspuru-Guzik, Andrew G. White, Towards quantum chemistry on a quantum computer , Nature Chemistry 2 , pages 106-111 (2010), doi:10.1038/nchem.483.
- Jonathan Olson, Yudong Cao, Jonathan Romero, Peter Johnson, Pierre-Luc Dallaire-Demers, Nicolas Sawaya, Prineha Narang, Ian Kivlichan, Michael Wasielewski, Alaґn Aspuru-Guzik, Quantum information and computation for chemistry , NSF Workshop Report, 2017.
- Jacob Biamonte, Peter Wittek, Nicola Pancotti, Patrick Rebentrost, Nathan Wiebe, Seth Lloyd, Quantum machine learning , Nature volume 549 , pages 195-202 (14 September 2017).
- Seth Lloyd, Masoud Mohseni, Patrick Rebentrost, Quantum principal component analysis , Nature Physics volume 10 , pages 631-633 (2014).
- Vadim N. Smelyanskiy, Davide Venturelli, Alejandro Perdomo-Ortiz, Sergey Knysh, and Mark I. Dykman, Quantum annealing via environment-mediated quantum diffusion , Phys. Rev. Lett. 118 , 066802, 2017.
- Patrick Rebentrost, Brajesh Gupt, Thomas R. Bromley, Quantum computational finance: Monte Carlo pricing of financial derivatives , arXiv preprint (arXiv:1805.00109v1), 2018.
- IM Georgescu, S. Ashhab, Franco Nori, Quantum simulation , Rev. Mod. Phys. 86, 154 (2014), DOI: 10.1103/RevModPhys.86.153.
- EF Dumitrescu, AJ McCaskey, G. Hagen, GR Jansen, TD Morris, T. Papenbrock, RC Pooser, DJ Dean, P. Lougovski, Cloud quantum computing of an atomic nucleus , Phys. Rev. Lett. 120 , 210501 (2018), DOI: 10.1103/PhysRevLett.120.210501.
- Lukasz Cincio, Yigit Subasi, Andrew T. Sornborger, and Patrick J. Coles, Learning the quantum algorithm for state overlap , arXiv preprint (arXiv:1803.04114v1), 2018
- Patrick J. Coles, Stephan Eidenbenz, Scott Pakin, et al., Quantum algorithm implementations for beginners , arXiv preprint (arXiv:1804.03719v1), 2018.
- Mark Fingerhuth, Open-Source Quantum Software Projects , accessed May 12, 2018.
- Quantiki: List of QC Simulators , accessed May 12, 2018
- R. Smith, MJ Curtis and WJ Zeng, A practical quantum instruction set architecture , 2016.
- QISKit, originally authored by Luciano Bello, Jim Challenger, Andrew Cross, Ismael Faro, Jay Gambetta, Juan Gomez, Ali Javadi-Abhari, Paco Martin, Diego Moreda, Jesus Perez, Erick Winston, and Chris Wood, https://github.com/QISKit/qiskit-sdk-py .
- Damian S. Steiger, Thomas Häner, and Matthias Troyer ProjectQ: An open source software framework for quantum computing , 2016.
- Thomas Häner, Damian S. Steiger, Krysta M. Svore, and Matthias Troyer A software methodology for compiling quantum programs , 2016.
- The Quantum Development Kit by Microsoft, homepage: https://www.microsoft.com/en — us/quantum/development-kit, github: https://github.com/Microsoft/Quantum .
- Michael A. Nielsen and Isaac L. Chuang, Quantum Computation and Quantum Information 10th Anniversary Edition, Cambridge University Press, 2011.
- Doug Finke, Education , Quantum Computing Report, https://quantumcomputingreport.com/resources/education/ , accessed May 26, 2018.
- All code in this paper was run and tested on a Dell XPS 13 Developer Edition laptop running 64 bit Ubuntu 16.04 LTS with 8 GB RAM and an Intel Core i7-8550U CPU at 1.80 GHz. Programs were run primarily from the command line but the Python developer environment Spyder was also used for Python programs and Visual Studio Code was used for C# (Q#) programs.
- Forest: An API for quantum computing in the cloud, https://www.rigetti.com/index.php/forest , accessed May 14, 2018.
- Andrew W. Cross, Lev S. Bishop, John A. Smolin, Jay M. Gambetta, Open quantum assembly language , 2017.
- Scott Aaronson, Daniel Gottesman, Improved Simulation of Stabilizer Circuits , Phys. Rev. A 70 , 052328, 2004.
- pyQuil Lisence, github.com/rigetticomputing/pyquil/blob/master/LICENSE#L204 , accessed June 7, 2018.
- Microsoft Quantum Development Kit License, marketplace.visualstudio.com/items/quantum.DevKit/license , accessed June 7, 2018.
- Hao Zhang, Chun-Xiao Liu, Sasa Gazibegovic, et al. Quantized Majorana conductance , Nature 556 , 74-79 (05 April 2018).
- 16-qubit backend: IBM QX team, “ibmqx5 backend specification V1.1.0,” (2018). Retrieved from https://ibm.biz/qiskit-ibmqx5 and https://quantumexperience.ng.bluemix.net/qx/devices on May 23, 2018.
- Talia Gershon, Celebrating the IBM Q Experience Community and Their Research , March 8, 2018.
- M. Reck, A. Zeilinger, HJ Bernstein, and P. Bertani, Experimental realization of any discrete unitary operator , Physical Review Letters, 73, p. 58, 1994.
- Ryan LaRose, Distributed memory techniques for classical simulation of quantum circuits , arXiv preprint (arXiv:1801.01037v1), 2018.
- Thomas Haner, Damian S. Steiger, 0.5 petabyte simulation of a 45-qubit quantum circuit , arXiv preprint (arXiv:1704.01127v2), September 18, 2017.
- Jianxin Chen, Fang Zhang, Cupjin Huang, Michael Newman, Yaoyun Shi, Classical simulation of intermediate-size quantum circuits , arXiv preprint (arXiv:1805.01450v2), 2018.
- Alwin Zulehner, Robert Wille, Advanced simulation of quantum computations , arXiv preprint ( arXiv:1707.00865v2 ), November 7, 2017.
- Jarrod R. McClean, Ian D. Kivlichan, Kevin J. Sung, et al., OpenFermion: The electronic structure package for quantum computers , arXiv:1710.07629, 2017.
- Nathan Killoran, Josh Izaac, Nicols Quesada, Ville Bergholm, Matthew Amy, Christian Weedbrook, Strawberry Fields: A Software Platform for Photonic Quantum Computing , arXiv preprint (arXiv:1804.03159v1), 2018.
- IonQ website, https://ionq.co/ , accessed June 15, 2018.
- D-Wave: The quantum computing company, https://www.dwavesys.com/home , accessed June 20, 2018.
- 4 2018 Rigetti 20- , . , 8- «- ». , 20- (, , ).
- IBMQ Network , 2017 — JP Morgan Chase , Daimler , Samsung , Honda , Oak Ridge National Lab , — , 2018 — Zapata Computing , Strangeworks , QxBranch , Quantum Benchmark , QC Ware , Q-CTRL , Cambridge Quantum Computing (CQC) , 1QBit . North Carolina State University , IBM Q Hub, University of Oxford University of Melbourne . https://www.research.ibm.com/ibmq/network/ .
- , - - . QISKit, ACQUA , pyQuil.
- pyQuil : , from pyquil.gates import H, MEASURE . pyquil.gates , , , .
- , () . , () , , .
- IBM, 31 2018 , « » Python Cython, .
A, . Players Quantum Computing Report [22]. , , . / — .
أ. Strawberry Fields
Xanadu , , Strawberry Fields Python , [38]. Xanadu «qumodes» ( ), , , . Strawberry Fields Numpy TensorFlow, Blackbird. GitHub, , , , . , Xanadu https://www.xanadu.ai/ , .
ب. IonQ
IonQ — -, College Park , . IonQ , . 171 Yb , IonQ T2 () 15- , T2 1 . , T1 ( ) 20 000 , 10−4 . , -- - , «» . , .
IonQ , IonQ . . , - [39].
ج. D-Wave Systems
D-Wave [40], , . D-Wave, 1999 , , , ,
D-Wave , — 2048 , Matlab, C/C++ Python . /, D-Wave . D-Wave .
BB.
ProjectQ C++. Dell XPS 13 Developer Edition 64- Ubuntu 16.04 LTS 8 Intel Core i7-8550U 1,80 .
, , 7. , QISKit — .
CC. :
. , QDK , , . — , — — . . , , , — , .
, , . , QISKit.

8. , circuit_drawer , QISKit v0.5.4.pyQuil
QISKit
ProjectQ
Quantum Developer Kit
// ============================================================================= // teleport.qs // // Teleportation circuit in QDK. // ============================================================================= operation Teleport(msg : Qubit, there : Qubit) : () { body { using (register = Qubit[1]) { // get auxiliary qubit to prepare for teleportation let here = register[0]; // main circuit H(here); CNOT(here, there); CNOT(msg, here); H(msg); // conditional operations if (M(msg) == One) { Z(there); } if (M(here) == One) { X(there); } // reset the "here" qubit Reset(here); } } } operation TeleportClassicalMessage(message : Bool) : Bool { body { mutable measurement = false; using (register = Qubit[2]) { // two qubits let msg = register[0]; let there = register[1]; // encode message to send if (message) { X(msg); } // do the teleportation Teleport(msg, there); // check what message was sent if (M(there) == One) { set measurement = true; } // reset all qubits ResetAll(register); } return measurement; } }