OpenQASM
لغة التجميع الكمومية المفتوحة ( OpenQASM ؛ تنطق أوبن كازم ) [ 1 ] هي لغة برمجة مصممة لوصف الدوائر الكمومية والخوارزميات للتنفيذ على أجهزة الكمبيوتر الكمومية .
لغة
تم تصميمه ليكون تمثيلاً وسيطاً يمكن استخدامه بواسطة المترجمات عالية المستوى للتواصل مع الأجهزة الكمومية، ويسمح بوصف مجموعة واسعة من العمليات الكمومية، بالإضافة إلى التحكم الكلاسيكي في التدفق الأمامي بناءً على نتائج القياس.
تتضمن اللغة آلية لوصف التوقيت الدقيق للتعليمات، وتسمح بإرفاق تعريفات منخفضة المستوى بالبوابات لمهام مثل المعايرة. [ 1 ] لا يُقصد بـ OpenQASM الحوسبة الكلاسيكية للأغراض العامة، وقد لا تدعم تطبيقات الأجهزة للغة النطاق الكامل لمعالجة البيانات الموصوفة في المواصفات. من المتوقع أن تدعم مُجمِّعات OpenQASM نطاقًا واسعًا من العمليات الكلاسيكية لثوابت وقت الترجمة، ولكن قد يختلف دعم هذه العمليات على قيم وقت التشغيل بين التطبيقات. [ 2 ]
وُصفت اللغة لأول مرة في ورقة بحثية نُشرت في يوليو 2017، [ 1 ] وصدر تطبيقها المرجعي كجزء من مجموعة برامج المعلومات الكمومية ( Qiskit ) من IBM لاستخدامها مع منصة الحوسبة الكمومية السحابية IBM Quantum Experience . [ 3 ] وتتشابه اللغة في خصائصها مع لغات وصف الأجهزة التقليدية مثل Verilog .
يُعرّف OpenQASM إصداره في بداية ملف المصدر كرقم، كما هو موضح في الإعلان:
OPENQASM 3 ؛مستوى التطبيقات الأصلية المنشورة لـ OpenQASM هو OpenQASM 2.0. الإصدار 3.0 من المواصفات هو الإصدار الحالي ويمكن الاطلاع عليه في مستودع OpenQASM على GitHub . [ 4 ]
أمثلة
فيما يلي مثال على شفرة مصدر OpenQASM من المكتبة الرسمية. يقوم البرنامج بجمع عددين مكونين من أربعة بتات. [ 5 ]
/* * الأفعى الحاملة التموجية * Cuccaro et al, quant-ph/0410184 */ OPENQASM 3 ; تضمين "stdgates.inc" ؛أغلبية البوابة أ ، ب ، ج { ج س ج ، ب ؛ ج س ج ، أ ؛ ج س س أ ، ب ، ج ؛ }بوابة unmaj a ، b ، c { ccx a ، b ، c ؛ cx c ، a ؛ cx a ، b ؛ }qubit [ 1 ] cin ; qubit [ 4 ] a ; qubit [ 4 ] b ; qubit [ 1 ] cout ; bit [ 5 ] ans ; uint [ 4 ] a_in = 1 ; // a = 0001 uint [ 4 ] b_in = 15 ; // b = 1111 // تهيئة الكيوبتات reset cin ; reset a ; reset b ; reset cout ;// تعيين حالات الإدخال لـ i في [ 0 : 3 ] { إذا ( bool ( a_in [ i ] ) ) x a [ i ] ; إذا ( bool ( b_in [ i ] ) ) x b [ i ] ; } // إضافة a إلى b ، وتخزين النتيجة في b . cin [ 0 ] , b [ 0 ] , a [ 0 ] ; لـ i في [ 0 : 2 ] { cin [ i ] , b [ i + 1 ] , a [ i + 1 ] ; } cin [ 0 ] , b [ 0 ] , a [ 0 ] ; ...قياس cout [ 0 ] -> ans [ 4 ]؛انظر أيضاً
مراجع
- 1 2 3 كروس، أندرو دبليو؛ بيشوب، ليف إس؛ سمولين، جون إيه؛ جامبيتا، جاي إم (2017). "لغة التجميع الكمومية المفتوحة". arXiv : 1707.03429 [ quant-ph ].
- ↑ "مواصفات OpenQASM المباشرة" . تم الاطلاع عليها بتاريخ 26 ديسمبر 2022 .
- ↑ qiskit-openqasm: مواصفات OpenQASM ، شركة آي بي إم، 4 يوليو 2017، مؤرشفة من الأصل في 10 نوفمبر 2020 ، تم استرجاعها في 6 يوليو 2017
- ↑ https://github.com/openqasm/openqasm OpenQASM
- ↑ "openqasm/adder.qasm في الماجستير · openqasm/openqasm · جيثب" . جيثب . 29 يناير 2022.
روابط خارجية
- برنامج مجاني مكتوب بلغة بايثون
- برنامج يستخدم ترخيص أباتشي
- لغات البرمجة
- الحوسبة الكمومية
- البرمجة الكمومية
