הגדרת Qiskit SDK באופן מקומי
לאחר שה-Qiskit SDK מותקן ופועל, ישנם כמה שלבים אופציונליים שניתן לבצע כדי לשנות את התנהגות ברירת המחדל של Qiskit.
קובץ תצורת משתמש
המיקום המרכזי לתצורה מקומית של Qiskit הוא קובץ תצורת המשתמש. זהו קובץ בפורמט .ini שניתן להשתמש בו לשינוי הגדרות ברירת המחדל של Qiskit.
דוגמה:
[default]
circuit_drawer = mpl
circuit_mpl_style = default
circuit_mpl_style_path = ~:~/.qiskit
state_drawer = hinton
transpile_optimization_level = 3
parallel = False
num_processes = 15
כברירת מחדל, הקובץ נמצא ב-~/.qiskit/settings.conf, אך ניתן לעקוף את הנתיב באמצעות משתנה הסביבה QISKIT_SETTINGS.
אפשרויות זמינות
circuit_drawer: משנה את מערכת ברירת המחדל לצייר Circuit. ניתן להגדיר אותו ל-latex,mpl,text, אוlatex_source. כאשר ה-kwarg של הפלט לא מוגדר במפורש, נעשה שימוש במערכת ציור זו.circuit_mpl_style: גיליון הסגנון שמוגדר כברירת מחדל עבור מערכת הפלט mpl בצייר ה-Circuit. ערכים חוקיים הםdefaultאוbw.circuit_mpl_style_path: הנתיבים שבהם צייר ה-Circuit יחפש גיליונות סגנון JSON בעת שימוש במצב הפלט mpl.state_drawer: משמש לשינוי מערכת ברירת המחדל לשיטות ציור הדמיית מצב. ערכים חוקיים הםrepr,text,latex,latex_source,qsphere,hinton, אוbloch. כאשר ה-kwarg של הפלט לא מוגדר במפורש על מתודת qiskit.quantum_info.DensityMatrix.draw, נעשה שימוש בשיטת הפלט שצוינה.transpile_optimization_level: משנה את רמת האופטימיזציה שמוגדרת כברירת מחדל עבור qiskit.compiler.transpile. יש לציין מספר שלם בין 0 ל-3.parallel: האם Python multiprocessing מופעל עבור פעולות שתומכות בהרצה מקבילה. לדוגמה, transpilation של אובייקטי qiskit.circuit.QuantumCircuit מרובים. ניתן לעקוף הגדרה זו באמצעות משתנה הסביבהQISKIT_PARALLEL. יש לציין ערך בוליאני.num_processes: המספר המקסימלי של תהליכים מקבילים להפעלה עבור פעולות מקביליות אם הרצה מקבילה מופעלת. ניתן לעקוף הגדרה זו באמצעות משתנה הסביבהQISKIT_NUM_PROCS. יש לציין מספר שלם גדול מ-0.
הערה
- הגדרות צייר ה-Circuit חלות על qiskit.circuit.QuantumCircuit.draw ועל qiskit.visualization.circuit_drawer.
- שיטות ציור הדמיית מצב הן qiskit.quantum_info.Statevector.draw ו-qiskit.quantum_info.DensityMatrix.draw.
משתני סביבה
הגדר את משתני הסביבה הבאים כדי לשנות את התנהגות ברירת המחדל של Qiskit:
QISKIT_PARALLEL: מאפשר Python multiprocessing לביצוע מקביל של פעולות מסוימות; לדוגמה, transpilation על מספר Circuit-ים ב-Qiskit. יש לציין ערך בוליאני.QISKIT_NUM_PROCS: המספר המקסימלי של תהליכים מקבילים להפעלה עבור פעולות מקביליות אם הרצה מקבילה מופעלת. יש לציין מספר שלם גדול מאפס.RAYON_NUM_THREADS: מספר ה-threads להרצת פעולות multi-thread ב-Qiskit. כברירת מחדל, קוד רב-חוטי מפעיל thread אחד לכל CPU לוגי. כדי לכוון את מספר ה-threads שבהם Qiskit משתמש, יש להגדיר ערך מספר שלם. לדוגמה, הגדרת RAYON_NUM_THREADS=4 מפעילה ארבעה threads לפונקציות רב-חוטיות.QISKIT_FORCE_THREADS: מציין שקוד רב-חוטי תמיד יופעל ב-threads מרובים. כברירת מחדל, אם מריצים קוד רב-חוטי בקטע של Qiskit שכבר פועל בתהליכים מקבילים, Qiskit לא מפעיל threads מרובים אלא מבצע את הפונקציה בצורה סדרתית. זה נעשה כדי להימנע מעומס יתר על משאבי ה-CPU המוגבלים. עם זאת, אם רוצים לכפות שימוש ב-threads מרובים גם בהקשר של multiprocess, יש להגדירQISKIT_FORCE_THREADS=TRUE.QISKIT_SABRE_ALL_THREADS: שולט בהתנהגות של שלב ה-layout וה-routing במנהל ה-pass המוגדר מראש של Qiskit. כאשר מוגדר ל-1אוTRUE, הוא משתמש בכל ה-CPU הזמינים להרצת ניסויים אקראיים מרובים. זה יכול לשפר את איכות התוצאות, במיוחד עבור מערכות עם יותר מ-20 CPUs/cores; הפשרה, לעומת זאת, היא שהתוצאות אינן ניתנות לשחזור כאשר מריצים על חומרה מקומית שונה.
הצעדים הבאים
המלצות
- נסה מדריך, כמו האלגוריתם של גרובר.
- הרץ את תוכנית Hello world.
- קרא את הנחיות התרומה אם ברצונך לתרום ל-Qiskit SDK בקוד פתוח.