ข้อจำกัดของวงจรควอนตัมและการหลีกเลี่ยงสิ่งเหล่านี้

ข้อจำกัดของวงจรควอนตัมและการหลีกเลี่ยงสิ่งเหล่านี้

เครดิตฟรี

คอมพิวเตอร์ควอนตัมทางกายภาพมีข้อจำกัดมากมายที่แบบจำลองทางทฤษฎีในอุดมคติของคอมพิวเตอร์ควอนตัมมักจะละเลย การเชื่อมต่อที่จำกัดระหว่าง qubits เป็นข้อจำกัดอย่างหนึ่ง เฉพาะในกรณีที่เชื่อมต่อ qubits เราสามารถใช้เกตสองบิตระหว่างกันได้ เมื่อไม่เป็นเช่นนั้น เราต้องย้าย qubits ไปยังที่ที่เราสามารถใช้เกตได้

สล็อต

ล่าสุดQiskit นักพัฒนาท้าทายถามนักพัฒนาซอฟต์แวร์เขียนสำหรับการเปลี่ยนวงจรการทำงานรอบข้อ จำกัด การเชื่อมต่อ (การส่งของฉันผูกสำหรับสถานที่ที่สอง ) มันจะเปิดออกปัญหานี้เป็นเรื่องยาก เมื่อเราแยกย่อยออกเป็นปัญหาย่อยต่างๆ เราพบว่าตัวเองต้องเผชิญกับปัญหา NP-hard มากมาย (การจัดตารางงาน การเพิ่มประสิทธิภาพ ปัญหาด้านสถานที่และเส้นทาง)
หัวใจของปัญหาคือการตัดสินใจว่าจะวาง qubits ไว้ที่ใดในส่วนต่างๆ ของการดำเนินการ เราให้รูทีนย่อยต่างๆ ของmapper ที่ทำอย่างนั้นได้ พร้อมกับสถาปัตยกรรมคอมพิวเตอร์ควอนตัม ผู้ทำแผนที่ตัดสินใจว่าจะวาง qubits จากคำอธิบายวงจรไว้ที่ใด ด้วย Mapper ดังกล่าว เราสามารถเขียนคอมไพเลอร์ทั้งหมดสำหรับการทำแผนที่วงจรกับสถาปัตยกรรม
Mappers สำหรับลดขนาดวงจร
ผู้ทำแผนที่จำเป็นต้องค้นหาตำแหน่งของ qubits บนฮาร์ดแวร์เพื่อที่ – อย่างน้อยบางส่วนของ – วงจรอินพุตสามารถดำเนินการได้ เราลดความซับซ้อนของเรื่องและดูเฉพาะชุดของเกทที่จะดำเนินการต่อไป (ชุดของเกทที่ไม่ต่อเนื่องกัน) สถาปัตยกรรมอาจและอาจจะป้องกันไม่ให้เราดำเนินการประตูเหล่านี้บางส่วน เราประกอบด้วยและค้นหาตำแหน่ง “ดี” ของ qubits ที่สามารถดำเนินการอย่างน้อยชุดย่อยของเกต ผู้ทำแผนที่เฉพาะจะตัดสินใจว่าตำแหน่งใดที่ดี
รูทีนของผู้ทำแผนที่อย่างง่ายคือเพียงตรวจสอบให้แน่ใจว่าประตูที่ถูกที่สุดสามารถดำเนินการได้ ในที่นี้ วิธีที่ถูกที่สุดโดยมีการเคลื่อนไหวโดยประมาณน้อยที่สุด ผู้ทำแผนที่นี้พบการเคลื่อนไหวที่ถูกที่สุดของ qubits เพื่อให้สามารถดำเนินการได้อย่างน้อยหนึ่งประตู
โปรดทราบว่า mapper ธรรมดาไม่สนใจว่าจะทำอะไรกับ qubits ที่เหลือ แต่เราปรับเปลี่ยนเพื่อพยายามย้าย qubits ที่เหลือเข้าไปใกล้มากขึ้น เราสามารถบันทึกประตูสองสามบานในโอเวอร์เฮดโดยการย้าย qubits แบบขนานแทนที่จะเรียงตามลำดับ เกตทั้งหมดจำเป็นต้องดำเนินการในที่สุด ดังนั้นผู้ทำแผนที่จึงพยายามลดค่าใช้จ่ายโดยย้าย qubits อื่นๆ ที่เกี่ยวข้องกับเกตให้เข้าใกล้กันมากขึ้น เมื่อพบว่าประหยัดก็จะเคลื่อนไหว ผู้ทำแผนที่คนนี้ทำได้ดีพอสมควรและสามารถแข่งขันกับผู้ทำแผนที่ที่มาพร้อมกับ Qiskit อย่างไรก็ตาม มันอาจจะค่อนข้างช้า และไม่ได้ผลดีสำหรับวงจรสุ่มขนาดเล็ก (เหมือนกับที่ใช้สำหรับการทดสอบในความท้าทายนี้)
ในที่สุด เราก็ส่ง mapper แบบไฮบริด mapper ของ Qiskit ไม่สามารถหาตำแหน่งที่ดีของ qubits ได้ ซึ่งในกรณีนี้จะรันรูทีนทางเลือกที่คล้ายกับการทำซ้ำ mapper อย่างง่ายที่เราได้พูดคุยกัน แทนที่จะใช้ทางเลือกอื่น อันดับแรก เราพยายามใช้ผู้ทำแผนที่ตัวที่สองเพื่อให้ทำงานได้ดีขึ้น หากพบว่าประหยัด เราก็ใช้มัน มิฉะนั้น มันจะดีพอๆ กับ mapper ธรรมดาๆ เท่านั้น ดังนั้นเราจึงถอยกลับไปสู่สิ่งนั้น ตัวทำแผนที่แบบไฮบริดที่ได้ผลค่อนข้างสม่ำเสมอดีกว่า Qiskit ทั้งในด้านเวลาและประสิทธิภาพเหนือศีรษะ
บทสรุป
ความท้าทายของนักพัฒนาซอฟต์แวร์ Qiskit บังคับให้เราพิจารณาให้ดีว่าซอฟต์แวร์ของเราทำงานได้ดีเพียงใดในบางแง่มุม เราดูที่ความลึกของวงจรไม่ใช่ขนาด ปรากฎว่าทั้งสองสามารถมีกลยุทธ์การเพิ่มประสิทธิภาพที่แตกต่างกันมาก ขณะนี้ เรากำลังดำเนินการเกี่ยวกับบทความทางวิทยาศาสตร์ที่จะเจาะลึกมากขึ้น และยังหารือเกี่ยวกับวงจรขนาดใหญ่ขึ้นด้วย นอกจากนี้ เรากำลังวางแผนที่จะเปิดตัวเครื่องมือซอฟต์แวร์เพื่อให้คุณสามารถแมปวงจรควอนตัมของคุณเองบนสถาปัตยกรรมต่างๆ
ไฮไลท์บางส่วน:
Matplotlib ถูกลบเป็นการพึ่งพาจาก Terra เนื่องจากผู้ใช้บางรายมีปัญหาในการติดตั้ง เครื่องมือที่ใช้ Matplotlib ยังคงสามารถติดตั้งได้ผ่านทางpip install qiskit[visualization]
ฟังก์ชันการแสดงภาพวงจรถูกเปลี่ยนเป็นวัตถุที่แยกจากกันเพื่อความสะอาดและความสามารถในการขยาย circuit.draw()ได้รับการเพิ่มเป็นฟังก์ชันอำนวยความสะดวก และมีการเพิ่มโหมดเอาต์พุต ASCII ที่ไม่ยุ่งยาก
การถ่ายเท
ทรานสไพเลอร์เป็นม้าหมุนของ Terra เป็นวิธีที่เรารักษาวงจรแบ็กเอนด์ไม่เชื่อเรื่องพระเจ้าและคอมไพล์ได้สำหรับฮาร์ดแวร์ควอนตัมโดยพลการ ทรานสพิลเลอร์ใน Terra 0.6 นั้นไม่โปร่งใสหรือขยายได้เพียงพอสำหรับวิธีการถ่ายเทที่มีความซับซ้อนมากขึ้นเรื่อยๆ ดังนั้นเราจึงฉีกมันออกและเขียนใหม่เพื่อให้แข็งแกร่งยิ่งขึ้น
ไฮไลท์บางส่วน:
ตอนนี้ทรานสปิลเลอร์จะแปลงวงจรเป็นวงจร แทนที่จะเป็นวงจร DAGC สิ่งนี้มีความโปร่งใสมากกว่ามาก และช่วยให้ผู้ใช้ปลายทางสามารถดูและทำความเข้าใจว่าทรานสไพเลอร์ผ่านทำอะไรกับวงจรของพวกเขา ตัวอย่างนี้อธิบายได้ดีที่สุด:
ดียิ่งขึ้น แต่ก็ยังมีพื้นที่ให้ไปมากขึ้น ในตอนนี้ ทั้งหมดนี้เกิดขึ้นเบื้องหลังสำหรับผู้ใช้หลายคน แต่เราหวังว่าเครื่องมือเหล่านี้จะทำให้การขุดเจาะการถ่ายเทเข้าถึงได้ง่ายขึ้นสำหรับผู้ที่พยายามบีบประสิทธิภาพให้ได้มากที่สุดจากการทดลองบนฮาร์ดแวร์ของพวกเขา
PassManager นั้นตรงไปตรงมาและขยายได้ง่ายกว่ามาก ดูบล็อกโพสต์ “Writing a Transpiler Pass” ใหม่เร็วๆ นี้
แบ็กเอนด์และหน่วยความจำช็อต
เราได้อัปเดตตัวเชื่อมต่อแบ็กเอนด์เพื่อให้ทำงานผ่าน API ที่ชัดเจนและสม่ำเสมอยิ่งขึ้น และเพิ่มฟีเจอร์หน่วยความจำช็อตใหม่ในแบ็กเอนด์ทั้งหมดของเรา แบ็กเอนด์จะส่งคืนออบเจ็กต์ผลลัพธ์ซึ่งมีการโต้ตอบผ่านเมธอดมากกว่าการเข้าถึงข้อมูลโดยตรง เรายังแยกชุดโปรแกรมจำลองของเราออกเป็นสามส่วน:
แอร์ – นี่คือที่มีประสิทธิภาพสูงในตัวของเราอย่างเต็มที่แบบจำลองตั้งอยู่ใน repo ที่แยกจากกันที่นี่
BasicAer — เป็นเวอร์ชันจำกัดการใช้งานของ Aer ที่บรรจุอยู่ภายใน Terra เพื่อความสะดวก
LegacySimulators — นี่คือเครื่องจำลองรุ่นเก่าจาก Terra 0.6-

สล็อตออนไลน์

มองไปข้างหน้า
ฉันชอบอธิบายสถานะปัจจุบันของ Terra เป็น C ในยุคแรกๆ ของ Unix: ความสามารถหลักของมันคือการรวบรวมฮาร์ดแวร์ตามอำเภอใจและการจัดการการโต้ตอบกับหน่วยประมวลผล การอัปเดตนี้เป็นเรื่องใหญ่ในเรื่องนั้น โครงสร้างพื้นฐานที่มุ่งเน้นคือการลงทุนในอนาคตของเรา โดยเฉพาะอย่างยิ่งงานของไตรมาสหน้า การแสดงภาพข้อมูลที่ดีขึ้นหมายความว่าผู้ใช้สามารถสร้างโปรแกรมควอนตัมที่ซับซ้อนมากขึ้นได้ และการถ่ายทอดข้อมูลที่ดีขึ้นหมายความว่าเรามีช็อตที่ดีขึ้นในการรันวงจรเหล่านั้นบนฮาร์ดแวร์ได้ดียิ่งขึ้น ตอนนี้เราได้วางรากฐานโครงสร้างพื้นฐานที่แข็งแกร่งแล้ว เรากำลังเปลี่ยนไปใช้เส้นทางผู้ใช้หลักของเราและมุ่งเน้นไปที่การนำเสนอพลังนามธรรมและวากยสัมพันธ์แก่นักวิทยาศาสตร์และนักพัฒนา
จุดประสงค์ของบทความในสมุดบันทึกนี้คือเพื่อสาธิตการใช้การดำเนินการควอนตัมเพื่อให้บรรลุวัตถุประสงค์ในการคำนวณ การดำเนินการควอนตัมระยะหมายถึงวิธีการระดับสูงกว่าที่อาจใช้กับประตูควอนตัมระดับต่ำหนึ่งหรือหลายประตู โดยทั่วไป เป้าหมายคือการแสดงให้เห็นถึงแนวคิดที่ว่าอัลกอริทึมควอนตัมใช้การดำเนินการควอนตัมเพื่อใช้ข้อจำกัดที่บีบบังคับ qubits จากการเป็นตัวแทนของผลลัพธ์ที่เป็นไปได้เพื่อแสดงถึงผลลัพธ์ที่เป็นไปตามข้อจำกัด
ด้วยการใช้คำศัพท์เฉพาะของ John Preskill ขณะนี้เรามีคอมพิวเตอร์ “ควอนตัมระดับกลางที่มีเสียงดัง” (NISQ) ที่สามารถให้ผลลัพธ์ที่ต้องการโดยมีความเป็นไปได้สูง กล่าวคือ เมื่อผลลัพธ์ที่ต้องการอยู่เหนือเสียงที่อาจเกิดขึ้นได้ภายในอุปกรณ์คอมพิวเตอร์ควอนตัมระยะเริ่มต้นในปัจจุบัน . ในบทความในสมุดบันทึกนี้ เราจะใช้อัลกอริธึมการคำนวณแบบคลาสสิกเพื่อดูว่ามันทำงานอย่างไรในการคำนวณควอนตัม และเราจะเห็นว่าผลลัพธ์ที่ต้องการเกิดขึ้นบ่อยที่สุด อย่างไรก็ตาม โปรดทราบว่าการเน้นย้ำอยู่ที่การทำความเข้าใจว่าการดำเนินการควอนตัมบรรลุผลที่เข้าใจได้ง่ายอย่างไร ดังนั้นจึงไม่มีการคำนวณควอนตัมเร่งความเร็วในกรณีนี้
ในบทความเกี่ยวกับสมุดบันทึกนี้ เราจะสร้างวงจรควอนตัมที่ใช้การดำเนินการควอนตัมเพื่อทำการบวกเลขบิตเดี่ยวสองตัว ปัญหานี้ลดเหลือการพัฒนาลำดับการดำเนินการควอนตัมที่ทำการดำเนินการ ‘XOR’ แบบคลาสสิกเพื่อคำนวณบิตที่มีนัยสำคัญน้อยที่สุดและการดำเนินการ ‘AND’ แบบคลาสสิกเพื่อคำนวณบิตที่สำคัญที่สุดของคำตอบ ซึ่งสามารถเห็นได้ในสองคอลัมน์ของคำตอบที่คาดหวังด้านล่าง:
0+0=00
0+1=01
1+0=01
1+1=10
การติดตั้งและนำเข้า Qiskit
ชุดพัฒนา Quantum Information Science หรือ Qiskit เป็นไลบรารีและเฟรมเวิร์กสำหรับการเชื่อมต่อและเรียกใช้โปรแกรมคอมพิวเตอร์ควอนตัมบนคอมพิวเตอร์ควอนตัม IBM Q จริงหรือจำลองในสภาพแวดล้อมการคำนวณแบบดั้งเดิมของผู้ใช้ เซลล์แรกด้านล่างมีโค้ดสำหรับเรียกใช้หนึ่งครั้งเพื่อติดตั้ง Qiskit ควรเรียกใช้เซลล์ที่สองด้านล่างทุกครั้งที่โน้ตบุ๊กเริ่มนำเข้าส่วนต่างๆ ของ Qiskit ที่เกี่ยวข้องกับการทำงานของโน้ตบุ๊กนี้
การเริ่มต้นและอินพุตวงจรควอนตัม
เซลล์ต่อไปนี้สร้างวงจรควอนตัมด้วยรีจิสเตอร์ควอนตัมและคลาสสิก จากนั้นก็จะระบุการป้อนข้อมูลเพื่อ qubits Q0และq1

jumboslot

สถานะกราวด์ |0⟩ เป็นค่าเริ่มต้น ดังนั้นเกท X ถูกใช้บน qubits ที่ต้องเริ่มในสถานะตื่นเต้น |1⟩ X gate ทำการหมุนpiเรเดียนรอบแกน X ซึ่งหมุน |0⟩ (aka |+z⟩) ผ่านแกน Y ไปยัง |1⟩ (aka |-z⟩) เกท X บางครั้งเรียกว่าเกท NOT แต่โปรดทราบว่ามันทำการหมุนpiเรเดียนที่เกิดขึ้นเพื่อเล่น NOT แบบคลาสสิก หรือพลิกบิต เฉพาะเมื่อ qubit อยู่ในสถานะ |0⟩ หรือ |1⟩ หากต้องการเปลี่ยนอินพุตให้แสดงความคิดเห็นเกี่ยวกับการทำงานของ X gate บน qubit ใดๆ ที่ควรเป็น |0⟩ และตรวจสอบให้แน่ใจว่า X gate ไม่ได้ใส่ความคิดเห็นใน qubits ใดๆ ที่ควรเริ่มต้นเป็น |1⟩
การแสดง ‘XOR’ ด้วย Quantum Operations
‘XOR’ สามารถทำได้ด้วยการดำเนินการควอนตัมสองครั้ง ปัจจัยการผลิตของ ‘แฮคเกอร์’ มาจาก qubits Q0และไตรมาสที่ 1และการส่งออกของ ‘แฮคเกอร์’ จะไป qubit q2 เอาต์พุต qubit, q2เริ่มต้นในสถานะกราวด์ |0⟩
ขั้นแรก เราใช้การดำเนินการควบคุม-ไม่ โดยที่q2เป็นเป้าหมายของตัวควบคุม และโดยที่q0เป็นแหล่งที่มา ตัวควบคุมไม่เรียกอีกอย่างว่า CNOT หรือ CX การดำเนินการนี้จะลบล้างเป้าหมายหากแหล่งที่มาตื่นเต้น (|1⟩) โดยตัวมันเอง การดำเนินการนี้เปลี่ยนq2จาก |0⟩ เป็น |1⟩ หากq0เป็น |1⟩ และจะปล่อยให้q2ไม่เปลี่ยนแปลงหากq0เป็น |0⟩
ต่อไป เราใช้ CNOT โดยมี qubit q2เป็นเป้าหมายและใช้q1เป็นแหล่งที่มา หากq1คือ | 0⟩แล้วq2จะไม่เปลี่ยนแปลงจากผลกระทบของ CNOT กับQ0 ดังนั้นเราจึงมี:
q0 =|0⟩, q1 =|0⟩ ผลลัพธ์ในq2 =|0⟩
q0 =|1⟩, q1 =|0⟩ ผลลัพธ์ในq2 =|1⟩
แต่ถ้าq1คือ | 1⟩แล้วq2จะกลับเมื่อเทียบกับผลกระทบของ CNOT กับQ0 ดังนั้นเราจึงมี:
q0 =|0⟩, q1 =|1⟩ ผลลัพธ์ในq2 =|1⟩
q0 =|1⟩, q1 =|1⟩ ผลลัพธ์ในq2 =|0⟩
สรุปวิธีการดำเนินการ ‘XOR’ ด้วยการดำเนินการควอนตัม ซึ่งคำนวณบิตที่มีนัยสำคัญน้อยที่สุดของผลลัพธ์การเพิ่มบิตเดียว
[NPC5]การแสดง ‘AND’ ด้วย Quantum Operations
‘AND’ สามารถดำเนินการได้ด้วยการดำเนินการควอนตัมสามรายการ ปัจจัยการผลิตของ ‘และ’ มาจาก qubits Q0และไตรมาสที่ 1และการส่งออกของ ‘และ’ จะไป qubit q3 เอาต์พุต qubit, q3 , เริ่มต้นในสถานะกราวด์ |0⟩
การดำเนินงาน 1.เรา qubit เป้าหมายq3กับการดำเนินการควบคุม Hadamard ที่ถูกควบคุมโดยแหล่ง qubit Q0 สิ่งนี้จะเปลี่ยนเป้าหมายq3จาก |0⟩ เป็น |+x⟩ หากแหล่งที่มาq0คือ |1⟩ การดำเนินการมีลักษณะเช่นนี้ในทรงกลม Bloch: