Context Kelas

Lingkungan penerjemah Q# yang terisolasi.

Konteks menyediakan lingkungan eksekusi Q# mandiri di mana kode dievaluasi, dikompilasi, dan dijalankan dalam isolasi dari instans Konteks lainnya. Setiap Konteks mempertahankan namespace kodenya sendiri.

Konteks memiliki atribut code yang merupakan modul Python yang berisi semua operasi dan jenis Q# yang ditentukan dalam konteks ini. Ini memungkinkan Anda untuk memanggil operasi Q# dari Python.

Contoh:


   ctx = qdk.Context()
   ctx.eval("operation Main() : Result { use q = Qubit(); X(q); MResetZ(q) }")
   assert ctx.run("Main()", 2) == [qdk.Result.One, qdk.Result.One]
   assert ctx.code.Main() == qdk.Result.One

Menginisialisasi konteks Q# baru yang terisolasi.

Konstruktor

Context(*, target_profile: TargetProfile = TargetProfile.Unrestricted, target_name: str | None = None, project_root: str | None = None, language_features: List[str] | None = None, _trace_circuit: bool | None = None, _is_global_context: bool = False)

Parameter Kata Kunci-Saja

Nama Deskripsi
target_profile

Mengatur profil target memungkinkan penerjemah Q# menghasilkan program yang kompatibel dengan target tertentu. Lihat TargetProfile.

Nilai default: Unrestricted
target_name

Nama opsional komputer target yang akan digunakan untuk menyimpulkan pengaturan target_profile yang kompatibel.

Nilai default: None
project_root

Jalur opsional ke direktori akar dengan proyek Q# untuk disertakan. Ini harus berisi manifes proyek qsharp.json.

Nilai default: None
language_features

Daftar opsional bendera fitur bahasa untuk diaktifkan. Ini sesuai dengan fitur bahasa Q# eksperimental atau pratinjau. Nilai yang valid adalah:

  • "v2-preview-syntax": Mengaktifkan sintaks pratinjau Q# v2. Ini menghapus dukungan untuk

formulir blok alokasi kubit tercakup (use q = Qubit() { ... }), yang memerlukan formulir pernyataan sebagai gantinya (use q = Qubit();). Ini juga menghapus persyaratan untuk menggunakan set kata kunci untuk penetapan variabel yang dapat diubah.

Nilai default: None
_trace_circuit
Nilai default: None
_is_global_context
Nilai default: False

Metode

circuit

Mensintesis sirkuit untuk program Q#. Ekspresi entri atau operasi harus disediakan.

compile

Mengkompilasi kode sumber Q# ke dalam program yang dapat dikirimkan ke target. Ekspresi entri atau yang dapat dipanggil dengan argumen harus disediakan.

Contoh:

dump_machine

Mengembalikan vektor status jarang simulator sebagai objek StateDump.

eval

Mengevaluasi kode sumber Q#.

Output dicetak ke konsol.

get_target_profile

Mengembalikan profil target untuk Konteks ini.

import_openqasm

Mengimpor kode sumber OpenQASM ke dalam penerjemah konteks ini.

logical_counts

Mengekstrak jumlah sumber daya logis dari kode sumber Q#. Ekspresi entri atau yang dapat dipanggil dengan argumen harus disediakan.

run

Menjalankan ekspresi Q# yang diberikan untuk jumlah bidikan yang diberikan. Setiap bidikan menggunakan instans independen simulator.

set_classical_seed

Mengatur seed untuk generator angka acak yang digunakan untuk operasi nomor acak klasik pustaka standar. Ini berlaku untuk semua kode Q# yang dijalankan, dikompilasi, atau diperkirakan dalam Konteks ini.

set_quantum_seed

Mengatur seed untuk generator angka acak yang digunakan untuk pengukuran kuantum. Ini berlaku untuk semua kode Q# yang dijalankan, dikompilasi, atau diperkirakan dalam Konteks ini.

circuit

Mensintesis sirkuit untuk program Q#. Ekspresi entri atau operasi harus disediakan.

circuit(entry_expr: str | Callable | GlobalCallable | Closure | None = None, *args, operation: str | None = None, generation_method: CircuitGenerationMethod | None = None, max_operations: int | None = None, source_locations: bool = False, group_by_scope: bool = True, prune_classical_qubits: bool = False) -> Circuit

Parameter

Nama Deskripsi
entry_expr
str atau Callable

Ekspresi entri. Atau, panggilan dapat disediakan, yang harus dapat dipanggil Q#.

Nilai default: None
*args
Diperlukan

Argumen yang akan diteruskan ke yang dapat dipanggil, jika disediakan.

Parameter Kata Kunci-Saja

Nama Deskripsi
operation
str

Operasi untuk disintesis. Ini bisa menjadi nama operasi atau ekspresi lambda. Operasi hanya boleh mengambil qubit atau array qubit sebagai parameter.

Nilai default: None
generation_method

Metode yang digunakan untuk pembuatan sirkuit. ClassicalEval mengevaluasi alur kontrol klasik pada waktu pembuatan sirkuit. Simulate menjalankan simulasi penuh untuk melacak sirkuit. Static menggunakan evaluasi parsial dan memerlukan profil non-targetUnrestricted . None Default yang memilih metode pembuatan secara otomatis.

Nilai default: None
max_operations
int

Jumlah maksimum operasi yang akan disertakan dalam sirkuit. Default yang None berarti tidak ada batas.

Nilai default: None
source_locations

Jika True, anotasi setiap gerbang dengan lokasi sumbernya.

Nilai default: False
group_by_scope

Jika True, kelompokkan operasi dengan cakupan yang berisi, seperti deklarasi fungsi atau blok perulangan.

Nilai default: True
prune_classical_qubits

Jika True, menghapus qubit yang tidak pernah digunakan di gerbang kuantum (misalnya qubit hanya digunakan sebagai kontrol klasik).

Nilai default: False

Mengembalikan

Jenis Deskripsi
<xref:Circuit>

Sirkuit yang disintesis.

Pengecualian

Jenis Deskripsi

Jika ada kesalahan dalam mensintesis sirkuit.

compile

Mengkompilasi kode sumber Q# ke dalam program yang dapat dikirimkan ke target. Ekspresi entri atau yang dapat dipanggil dengan argumen harus disediakan.

Contoh:

compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData

Parameter

Nama Deskripsi
entry_expr
Diperlukan

Ekspresi Q# yang akan digunakan sebagai titik masuk untuk program. Atau, panggilan dapat disediakan, yang harus dapat dipanggil Q#.

*args
Diperlukan

Argumen yang akan diteruskan ke yang dapat dipanggil, jika disediakan.

Mengembalikan

Jenis Deskripsi
<xref:QirInputData>

Program yang dikompilasi. Gunakan str() untuk mendapatkan string QIR.

dump_machine

Mengembalikan vektor status jarang simulator sebagai objek StateDump.

dump_machine() -> StateDump

Mengembalikan

Jenis Deskripsi

Status simulator.

eval

Mengevaluasi kode sumber Q#.

Output dicetak ke konsol.

eval(source: str, *, save_events: bool = False) -> Any

Parameter

Nama Deskripsi
source
Diperlukan

Kode sumber Q# untuk dievaluasi.

Parameter Kata Kunci-Saja

Nama Deskripsi
save_events

Jika true, semua output akan disimpan dan dikembalikan. Jika false, mereka akan dicetak.

Nilai default: False

Mengembalikan

Jenis Deskripsi
Any

Nilai yang dikembalikan oleh pernyataan terakhir dalam kode sumber, atau output yang disimpan jika save_events benar.

Pengecualian

Jenis Deskripsi

Jika ada kesalahan saat mengevaluasi kode sumber.

get_target_profile

Mengembalikan profil target untuk Konteks ini.

get_target_profile() -> TargetProfile

import_openqasm

Mengimpor kode sumber OpenQASM ke dalam penerjemah konteks ini.

import_openqasm(source: str, **kwargs: Any) -> Any

Parameter

Nama Deskripsi
source
Diperlukan
str

Program atau fragmen OpenQASM.

**kwargs
Diperlukan

Argumen kata kunci tambahan. Opsi umum:

  • name (str): Nama program. Ini digunakan sebagai titik masuk untuk program.

  • search_path (str): Jalur pencarian opsional untuk menyelesaikan referensi file.

  • output_semantics (OutputSemantics): Semantik output untuk kompilasi.

  • program_type (ProgramType): Jenis kompilasi program yang akan dilakukan:

    • ProgramType.Operation (default): sumber menjadi operasi Q# di namespace layanan global dengan parameter untuk input dan parameter klasik yang dideklarasikan untuk setiap kubit yang dinyatakan, sementara deklarasi output eksplisit atau implisit menjadi jenis pengembalian operasi.

    • ProgramType.File: akan memperlakukan sumber input sebagai program yang berdiri sendiri dan membuat operasi di qasm_import namespace layanan yang hanya mengambil parameter klasik, mengalokasikan qubit yang diperlukan secara internal dan melepaskannya di akhir operasi.

    • ProgramType.Fragments: menjalankan sumber yang disediakan dalam interpreter interaktif saat ini, mendefinisikan variabel atau operasi yang dideklarasikan dalam cakupan saat ini dan mengembalikan nilai pernyataan terakhir dalam sumber.

Mengembalikan

Jenis Deskripsi
Any

Nilai yang dikembalikan oleh pernyataan terakhir dalam kode sumber.

Pengecualian

Jenis Deskripsi

Jika ada kesalahan saat menghasilkan, mengurai, atau menganalisis sumber OpenQASM.

Jika ada kesalahan saat mengkompilasi program.

logical_counts

Mengekstrak jumlah sumber daya logis dari kode sumber Q#. Ekspresi entri atau yang dapat dipanggil dengan argumen harus disediakan.

logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts

Parameter

Nama Deskripsi
entry_expr
Diperlukan

Ekspresi entri. Atau, panggilan dapat disediakan, yang harus dapat dipanggil Q#.

Mengembalikan

Jenis Deskripsi

Sumber daya program dalam hal jumlah gerbang logis.

run

Menjalankan ekspresi Q# yang diberikan untuk jumlah bidikan yang diberikan. Setiap bidikan menggunakan instans independen simulator.

run(entry_expr: str | Callable | GlobalCallable | Closure, shots: int, *args, on_result: Callable[[ShotResult], None] | None = None, save_events: bool = False, noise: Tuple[float, float, float] | PauliNoise | BitFlipNoise | PhaseFlipNoise | DepolarizingNoise | NoiseConfig | None = None, qubit_loss: float | None = None, seed: int | None = None, type: Literal['sparse', 'clifford'] | None = None, num_qubits: int | None = None) -> List[Any]

Parameter

Nama Deskripsi
entry_expr
Diperlukan

Ekspresi entri. Atau, panggilan dapat disediakan, yang harus dapat dipanggil Q#.

shots
Diperlukan

Jumlah bidikan yang akan dijalankan.

*args
Diperlukan

Argumen yang akan diteruskan ke yang dapat dipanggil, jika disediakan.

on_result
Diperlukan

Fungsi panggilan balik yang akan dipanggil dengan setiap hasil.

save_events
Diperlukan

Jika true, output dari setiap bidikan akan disimpan. Jika false, mereka akan dicetak.

noise
Diperlukan

Kebisingan yang digunakan dalam simulasi.

qubit_loss
Diperlukan

Probabilitas kehilangan qubit dalam simulasi.

seed
Diperlukan

Benih yang digunakan untuk generator angka acak dalam simulasi, jika ada.

type
Diperlukan

Jenis simulator yang akan digunakan. Jika tidak ditentukan, simulasi vektor status jarang default akan digunakan.

num_qubits
Diperlukan

Jumlah qubit yang digunakan untuk jenis simulasi "clifford". Jika tidak ditentukan, simulator Clifford mengasumsikan default 1000 qubit.

Parameter Kata Kunci-Saja

Nama Deskripsi
on_result
Nilai default: None
save_events
Nilai default: False
noise
Nilai default: None
qubit_loss
Nilai default: None
seed
Nilai default: None
type
Nilai default: None
num_qubits
Nilai default: None

Mengembalikan

Jenis Deskripsi

Daftar hasil atau kesalahan runtime. Jika save_events benar, daftar ShotResult dikembalikan.

Pengecualian

Jenis Deskripsi

Jika ada kesalahan saat menginterpretasikan input.

Jika jumlah bidikan kurang dari 1.

set_classical_seed

Mengatur seed untuk generator angka acak yang digunakan untuk operasi nomor acak klasik pustaka standar. Ini berlaku untuk semua kode Q# yang dijalankan, dikompilasi, atau diperkirakan dalam Konteks ini.

set_classical_seed(seed: int | None) -> None

Parameter

Nama Deskripsi
seed
Diperlukan

Benih yang digunakan untuk generator angka acak klasik. Jika Tidak Ada, benih akan dihasilkan dari entropi.

set_quantum_seed

Mengatur seed untuk generator angka acak yang digunakan untuk pengukuran kuantum. Ini berlaku untuk semua kode Q# yang dijalankan, dikompilasi, atau diperkirakan dalam Konteks ini.

set_quantum_seed(seed: int | None) -> None

Parameter

Nama Deskripsi
seed
Diperlukan

Benih yang digunakan untuk generator angka acak kuantum. Jika Tidak Ada, benih akan dihasilkan dari entropi.

Atribut

code

code: Any