一句话:提出 Cobble 语言,用高层记法表达矩阵的块编码并自动编译为正确的量子线路,配合成本分析与优化,在多个基准上取得 2.6x–25.4x 加速。
量子计算线性代数算法在模拟、回归等应用中可望带来指数级加速,但其执行模型无法像经典算法那样把矩阵存于内存,开发者必须用正确且高效的量子线路手工实现矩阵算术,同时还须应对一个使子表达式复用等经典线性代数优化失效或得不偿失的成本模型。本文提出 Cobble,一种用于量子计算线性代数的编程语言。Cobble 允许开发者以高层记法表达并操纵矩阵的量子表示,即块编码(block encoding),并自动编译为正确的量子线路。该语言包含分析程序时间与空间开销的分析机制,以及利用量子奇异值变换等先进技术降低开销、生成高效线路的优化。作者在模拟、回归、搜索等基准内核上评估 Cobble,相比未优化基线获得 2.6x 至 25.4x 的加速。
Quantum algorithms for computational linear algebra promise up to exponential speedups for applications such as simulation and regression, making them prime candidates for hardware realization. But these algorithms execute in a model that cannot efficiently store matrices in memory like a classical algorithm does, instead requiring developers to implement complex expressions for matrix arithmetic in terms of correct and efficient quantum circuits. Among the challenges for the developer is navigating a cost model in which conventional optimizations for linear algebra, such as subexpression reuse, can be inapplicable or unprofitable. In this work, we present Cobble, a language for programming with quantum computational linear algebra. Cobble enables developers to express and manipulate the quantum representations of matrices, known as block encodings, using high-level notation that automatically compiles to correct quantum circuits. Cobble features analyses that compute the time and space usage of programs, as well as optimizations that reduce overhead and generate efficient circuits using state-of-the-art techniques such as the quantum singular value transformation. We evaluate Cobble on benchmark kernels for simulation, regression, search, and other applications, showing 2.6x-25.4x speedups on these benchmarks compared to the unoptimized baseline.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{abs-2511-01736,
title = {Cobble: Compiling Block Encodings for Quantum Computational Linear Algebra},
author = {Charles Yuan},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {PLDI},
year = {2026},
doi = {10.1145/3808255}
}