
Qiskit-आधारित संसाधन अनुमान ढांचा, जो अण्डाकार-वक्र असतत लघुगणक एल्गोरिदम में उपयोग होने वाले स्थान-कुशल क्वांटम मॉड्यूलर व्युत्क्रमण और एफ़िन बिंदु-योग सर्किट के लिए है।
इस रिपॉज़िटरी में अण्डाकार-वक्र असतत-लघुगणक सेटिंग्स में उपयोग किए जाने वाले स्थान-कुशल क्वांटम मॉड्यूलर इन्वर्ज़न और एफ़ाइन बिंदु-योग सर्किट के संसाधन अनुमान हेतु Qiskit कोड शामिल है।
वर्तमान कोडबेस तीन वर्कफ़्लो पर केंद्रित है:
.
├── README.md
│
├── eea_model/: original classical EEA reference implementation used for algorithm prototyping and correctness validation.
│
├── run_eea_s835_fastdual_recursive_chunks_checkpoint.py
├── run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
├── count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
│
├── eea_circuit.py
├── eea_circuit_s835_fastdual.py
├── eea_circuit_s835_lowaux.py
├── eea_circuit_updated.py
├── under1000_eea_shared_s835_fastdual_wrapped.py
├── under1000_modular_arithmetic_base.py
│
├── point_addition_fig14_s835_fastdual_wrapped_quadratic.py
├── quadratic_fig15_inplace_s835_fastdual_wrapped.py
├── quadratic_gidney_arithmetic.py
├── quadratic_lazy_instruction.py
├── quadratic_modular_arithmetic.py
├── quadratic_squ_minus.py
│
├── ccx_recursive_block_counter.py
├── nct_template_segment_optimizer.py
│
├── test_eea_strict_main.py
└── test_point_addition_strict_main.py
run_eea_s835_fastdual_recursive_chunks_checkpoint.py
EEA एल्गोरिदम-3 चरणों की चेकपॉइंटेड चंकों में पुनरावर्ती गणना करता है।
run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
वही EEA गणना वर्कफ़्लो, लेकिन स्थानीय NCT-टेम्पलेट अनुकूलन के साथ।
count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
रैप किए गए बिंदु-योग सर्किट की गणना, पुन: प्रयोज्य संकलित उप-ब्लॉकों की पुनरावर्ती गणना करके तथा दोहराए गए अंकगणितीय घटकों को सटीक बहुलताओं के साथ जोड़कर करता है।
eea_circuit_s835_fastdual.py: प्रोडक्शन EEA सर्किट का मुख्य कार्यान्वयन।eea_circuit_s835_lowaux.py: मुख्य कार्यान्वयन द्वारा उपयोग की जाने वाली निम्न-सहायक हेल्पर रूटीन।eea_circuit_updated.py: साझा EEA निर्माण खंड और पुनरावर्ती संसाधन-गणना उपयोगिताएँ।eea_circuit.py: परीक्षणों के लिए पिछड़ा-संगतता रैपर।point_addition_fig14_s835_fastdual_wrapped_quadratic.py: Fig.14 अनुसूची के अनुरूप रैप किए गए एफ़ाइन बिंदु-योग सर्किट का निर्माण करता है।quadratic_fig15_inplace_s835_fastdual_wrapped.py: EEA, गुणन, मापन, रीसेट और फ़ीड-फ़ॉरवर्ड फेज़ सुधार के साथ Fig.15 इन-प्लेस विभाजन और इन-प्लेस गुणन संरचना का निर्माण करता है।quadratic_modular_arithmetic.py: बिंदु-योग काउंटर द्वारा उपयोग किए जाने वाले मॉड्यूलर जोड़/घटाव, गुणन, व्युत्क्रम गुणन, द्विगुणन और अर्धांशन निर्देश।quadratic_gidney_arithmetic.py: क्वाड्रैटिक मॉड्यूलर अंकगणित परत द्वारा उपयोग किए जाने वाले Gidney-शैली अंकगणितीय प्रिमिटिव और मापन व फ़ीड-फ़ॉरवर्ड हेल्पर।quadratic_squ_minus.py: एफ़ाइन बिंदु-योग अनुसूची में उपयोग किया जाने वाला स्क्वायर-माइनस ब्लॉक।under1000_eea_shared_s835_fastdual_wrapped.py: बिंदु-योग सर्किट द्वारा उपयोग किया जाने वाला साझा EEA रैपर और हेल्पर।under1000_modular_arithmetic_base.py: छोटी साझा मॉड्यूलर-अंकगणित उपयोगिताएँ।ccx_recursive_block_counter.py: MCX विस्तार और SWAP विस्तार के लिए नीतियों के साथ Qiskit सर्किट के लिए पुनरावर्ती काउंटर।nct_template_segment_optimizer.py: {X, CX, CCX} सेगमेंट के लिए स्थानीय टेम्पलेट-आधारित अनुकूलक।अनुशंसित वातावरण:
मुख्य निर्भरता स्थापित करें:
python -m pip install --upgrade pip
python -m pip install qiskit
परीक्षण सूट चलाएँ:
python test_eea_strict_main.py
python test_point_addition_strict_main.py
तेज़ बिंदु-योग स्मोक टेस्ट के लिए:
python test_point_addition_strict_main.py --skip-n256 --skip-report
मानक EEA गणना प्रवेश बिंदु है:
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
--n 192 \
--chunk-size 25 \
--measurement-uncompute \
--resume \
--workdir eea_s835_fastdual_chunks25 \
--out eea_s835_fastdual_algorithm3_recursive_chunks_n192_measurement.json
महत्वपूर्ण तर्क:
--n: बिट चौड़ाई।--T-max: एल्गोरिदम-3 चरणों की संख्या के लिए वैकल्पिक ओवरराइड; डिफ़ॉल्ट रूप से eea.get_n_config(n) से मान उपयोग किया जाता है।--chunk-size: प्रति चेकपॉइंट चंक में गिने जाने वाले एल्गोरिदम-3 चरणों की संख्या।--aux-size: हेल्पर-क्यूबिट पूल के लिए वैकल्पिक ओवरराइड; छोड़े जाने पर लेआउट हेल्पर आकार स्वचालित रूप से परिकलित होता है।--measurement-uncompute: गिने गए EEA ब्लॉकों में मापन-आधारित अनकंप्यूटेशन सक्षम करता है।--resume: --workdir में मौजूदा गैर-रिक्त चंक JSON फ़ाइलों का पुन: उपयोग करता है।--workdir: प्रति-चंक चेकपॉइंट फ़ाइलों के लिए निर्देशिका।--out: प्रत्येक चंक के बाद लिखा जाने वाला संचयी JSON सारांश।स्क्रिप्ट प्रति-चंक फ़ाइलें लिखती है जैसे:
eea_s835_fastdual_chunks25/eea_s835_fastdual_n192_T0001_0025.json
और एक संचयी आउटपुट JSON जिसमें निम्न फ़ील्ड शामिल हैं:
mode
n
T_max
num_qubits
len_width
shift_width
aux_size
measurement_based
ops
chunks
elapsed_s_so_far
अनुकूलित गणना प्रवेश बिंदु है:
python run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py \
--n 128 \
--chunk-size 25 \
--measurement-uncompute \
--templates small-nct \
--rounds 1 \
--max-nct-segment-gates 40 \
--segment-timeout-s 10 \
--timeout-mode auto \
--resume \
--workdir eea_s835_fastdual_chunks_nctopt_failopen_r1_128_seg40_to10 \
--out eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json
यह वर्कफ़्लो {X, CX, CCX} सेगमेंट पर स्थानीय टेम्पलेट अनुकूलन का प्रयास करता है। इसे एक सीमित फ़ेल-ओपन काउंटर के रूप में डिज़ाइन किया गया है: यदि कोई अनुकूलित चरण टाइमआउट करता है या अपवाद उत्पन्न करता है, तो उस चरण की गणना टेम्पलेट राउंड के बिना सटीक रूप से की जाती है और फिर चेकपॉइंट किया जाता है, इसलिए अंतिम रिपोर्ट की गई गणनाएँ पूर्ण रहती हैं।
मानक EEA तर्कों के अतिरिक्त उपयोगी तर्क:
--templates {small-nct,all-nct}: टेम्पलेट लाइब्रेरी चयन।--rounds: टेम्पलेट-अनुकूलन राउंड की संख्या।--max-nct-segment-gates: टेम्पलेट अनुकूलन के लिए भेजे गए प्रतिवर्ती सेगमेंट का अधिकतम आकार।--max-nct-segment-qubits: सेगमेंट में क्यूबिट की अधिकतम संख्या।--segment-timeout-s: व्यक्तिगत सेगमेंट अनुकूलन के लिए टाइमआउट।--step-timeout-s: अपरिवर्तित गणना पर वापस गिरने से पहले पूरे एल्गोरिदम-3 चरण के लिए टाइमआउट।--fallback-step-timeout-s: सटीक फ़ॉलबैक गणना के लिए टाइमआउट।--force: चरण/चंक चेकपॉइंट पहले से मौजूद होने पर भी पुनर्गणना करता है।--ignore-policy-mismatch: अनुकूलन नीति भिन्न होने पर भी पुराने चेकपॉइंट का पुन: उपयोग करता है; यह मुख्य रूप से डीबगिंग के लिए है।अनुकूलित वर्कफ़्लो चरण-स्तरीय चेकपॉइंट इनके अंतर्गत लिखता है:
<workdir>/steps/
और चंक-स्तरीय सारांश इनके अंतर्गत:
<workdir>/
बिंदु-योग काउंटर उपरोक्त EEA वर्कफ़्लो में से किसी एक द्वारा निर्मित EEA एल्गोरिदम-3 JSON पर निर्भर करता है। बिंदु-योग काउंटर का --n मान EEA JSON में n फ़ील्ड से मेल खाना चाहिए।
n=64 के लिए उदाहरण:
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
--n 64 \
--chunk-size 25 \
--measurement-uncompute \
--resume \
--workdir eea_s835_fastdual_chunks25_n64 \
--out eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json
फिर चलाएँ:
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
--n 64 \
--eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json \
--out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n64.json
अनुकूलित n=128 EEA आउटपुट के लिए उदाहरण: