IBM расширила точки входа в Qiskit за пределами Python, обеспечив его использование из Fortran, C++ и Julia через единый интерфейс C, обращающийся к высокопроизводительному ядру, написанному на Rust. Компания утверждает, что такая конструкция позволяет создавать квантовые схемы и запускать их непосредственно в существующих приложениях без встраивания интерпретатора Python или переноса данных в объекты Python.
Этот шаг был сделан начиная с Qiskit 2.0, в котором был представлен интерфейс C к базовой модели данных пакета разработки. Поскольку привязки трёх языков используют одну и ту же общую библиотеку Qiskit, схемы, созданные на одном языке, в принципе можно передавать на другой язык, например C++ и Fortran, сохраняя тот же объект.
Три пути к Qiskit
Для Fortran IBM предоставляет интерфейс qiskit-fortran для создания схем и работы с ними, используя стандартный механизм iso_c_binding для вызова интерфейса C. Схема использует производный тип, освобождающий память при выходе переменной из области видимости. Такие данные, как Hamiltonian, также можно напрямую передавать из уже существующих приложений квантовой химии, где они находятся в памяти Fortran, процедурам построения схемы без копирования в Python или повторного выделения памяти.
В свою очередь, qiskit-cpp, о котором IBM впервые объявила в предыдущем году, представляет собой интерфейс C++, работающий только через заголовочные файлы. Программу можно связать с библиотекой Qiskit C, а память объекта схемы автоматически управляется при выходе объекта из области видимости. IBM упоминает возможность отправки схем через клиент C для qiskit-ibm-runtime либо через QRMI и SQC.
Qiskit.jl и QiskitIBMRuntime.jl предоставляют интерактивный путь для пользователей Julia, включая работу в ноутбуках Jupyter и доступ к оборудованию IBM Quantum. Оба пакета скрывают детали указателей C, а также позволяют создавать схемы и запускать их в стиле, близком к Qiskit в Python, с учётом того, что Julia начинает нумерацию кубитов с 1, тогда как Python использует нумерацию с 0.
Что меняется на практике?
Новые интерфейсы предназначены для исследователей, чьи научные приложения основаны на Fortran, C++ или Julia, особенно в моделировании, физике, химии, инженерии и высокопроизводительных вычислениях. Вместо запуска Qiskit как отдельного процесса или использования Python для координации каждого шага можно вызывать квантовую схему как связанную процедуру непосредственно внутри того же классического приложения. Это включает создание схемы, её оптимизацию под конкретное оборудование, отправку на оборудование и последующую обработку результатов.
IBM демонстрирует этот путь на примере в Julia для моделирования модели Изинга с поперечным полем в системе размером до 100 кубитов. Пример включает приближение эволюции уравнения Шрёдингера с использованием Trotterization, затем оптимизацию схемы и её выполнение на оборудовании с расчётом намагниченности сайтов. Концептуальные результаты примера показывают, что уменьшение размера шага Trotter снижает ошибку приближения, но увеличивает глубину схемы, что в конечном итоге может привести к уровню аппаратного шума, превышающему выигрыш от повышения точности.
Ограничения и открытые вопросы
IBM подчёркивает, что все привязки, не относящиеся к Python, всё ещё находятся в активной разработке, поэтому в объявлении не представлены окончательные стабильные интерфейсы или подробные сравнительные результаты производительности. Кроме того, пример со 100 кубитами не означает преодоления практических ограничений квантовых вычислений: эталон классического моделирования с тензорными сетями становится менее надёжным по мере усиления запутанности, а точность выполнения по-прежнему зависит от ошибки Trotter и аппаратного шума.
Основная ценность здесь заключается в снижении программных препятствий для интеграции квантовых ресурсов в существующий код HPC, а не в предоставлении новой квантовой возможности как таковой. Влияние интерфейсов будет зависеть от зрелости пакетов, их интеграции с текущими исследовательскими средами и способности квантового оборудования выдавать результаты, превосходящие возможности классических альтернатив.