Об этом проекте
PRISM-Q — это симулятор квантовых схем, написанный на Rust, с привязками к Python. Он автоматически выбирает бэкенд на основе структуры схемы, выполняет многоэтапный конвейер слияния гейтов и использует ядра AVX2, FMA и BMI2 во внутреннем цикле (NEON на ARM64). Поддержка CUDA опциональна и охватывает бэкенды statevector, стабилизатор (экспериментально) и матрица плотности. Входные данные — OpenQASM 3.0 с обратно совместимым синтаксисом 2.0, а схемы можно экспортировать обратно в OpenQASM 3.0.
Установка доступна через cargo (prism-q) или pip (prism-q). Набор функций по умолчанию включает параллелизм Rayon и SVD faer; сборка с no-default-features является однопоточной с минимальными зависимостями. Функция gpu требует CUDA Toolkit 12.x или новее.
Бэкенды включают Statevector (общие схемы, O(2^n)), Stabilizer (только Clifford, O(n^2)), Factored Stabilizer (Clifford с независимыми блоками), Sparse (мало живых амплитуд), MPS (низкая запутанность или 1D, O(n*chi^2)), Product State (без запутанности), Tensor Network (низкая древовидная ширина), Factored (частичная запутанность), Density Matrix (точная эволюция с шумом, O(4^n), только явная диспетчеризация) и Distributed Statevector (за пределами памяти одного хоста, ранги MPI, точные результаты). BackendKind::Auto используется по умолчанию; бюджет памяти statevector составляет половину физической памяти машины, что можно переопределить через PRISM_MAX_SV_QUBITS.
Парсер OpenQASM принимает набор stdgates.inc, распространённые контролируемые и многоконтролируемые варианты, гейты экспортёра Qiskit, собственные имена гейтов IonQ и Google/Cirq, декомпозированные многоинструкционные гейты, устаревшие IBM u1/u2/u3 и объявления пользовательских гейтов. Модификаторы inv @, ctrl @ и pow(k) @ образуют цепочку на прямых гейтах. qasm_export::to_qasm3 записывает Circuit обратно в OpenQASM 3.0.
Функции включают shots и количество выборок, ожидаемые значения и маргиналы, параметрические схемы с повторной привязкой и градиенты через сопряжённый метод или правило сдвига параметров. Функция GPU компилирует PTX во время выполнения через NVRTC для вычислительной способности устройства; порог по размеру оставляет небольшие подсхемы на CPU. Предоставлены бенчмарки для макробенчмарков схем, микробенчмарков гейтов и диспетчеризации GPU. В дорожной карте упоминаются ветвление в середине схемы, многопроцессорная и распределённая GPU-обработка, порты ROCm и шумовые shots на распределённом бэкенде.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.