You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

稀疏矩阵Kronecker积优化:加速Numpy循环张量积运算

解决T门15次张量积的性能问题

你的核心问题在于直接计算全量稠密矩阵——15次张量积后得到的是32768×32768的矩阵,全量存储需要约16GB内存(每个复数元素占16字节),循环kron的方式还会反复创建中间大矩阵,导致计算和内存效率极低。结合T门的对角特性,有以下几种高效方案:

方案1:利用对角矩阵特性,生成稀疏对角矩阵

T门本身是对角矩阵,其张量积的结果依然是对角矩阵,只需要存储对角元素即可,完全不需要生成全量稠密矩阵:

import numpy as np
from scipy.special import comb
from scipy.sparse import diags

n = 15
omega = np.exp(1j * np.pi / 4)

# 生成所有可能的指数(对应15个qubit中应用T门的数量)
exponents = np.arange(n + 1)
# 每个指数对应的对角元素出现次数(组合数C(15, m))
counts = comb(n, exponents, dtype=np.int64)
# 生成完整的对角元素数组
diag_elements = np.repeat(omega ** exponents, counts)
# 构建稀疏对角矩阵(CSR格式适合后续矩阵运算)
T_sparse = diags(diag_elements, format='csr')
  • 内存占用:仅存储32768个复数元素,约512KB,远小于全量矩阵的16GB
  • 计算速度:无需循环kron,直接通过组合数生成元素,耗时微秒级

如果后续需要与其他矩阵运算,稀疏矩阵的运算效率也远高于稠密矩阵(尤其是对方阵或向量的乘法)。

方案2:仅存储对角元素数组(无需矩阵形式)

如果不需要矩阵结构,直接存储对角元素数组即可,这是最轻量化的方式:

import numpy as np
from scipy.special import comb

n = 15
omega = np.exp(1j * np.pi / 4)
exponents = np.arange(n + 1)
counts = comb(n, exponents, dtype=np.int64)
diag_elements = np.repeat(omega ** exponents, counts)

后续需要与向量相乘时,直接用diag_elements * vector即可,运算效率和稀疏矩阵相当。

方案3:优化稠密矩阵的存储(仅当必须用稠密矩阵时)

如果业务场景必须使用稠密矩阵,可以通过分离实部和虚部来减少不必要的复数存储:

import numpy as np
from scipy.special import comb

n = 15
omega = np.exp(1j * np.pi / 4)
exponents = np.arange(n + 1)
counts = comb(n, exponents, dtype=np.int64)
diag_elements = np.repeat(omega ** exponents, counts)

# 分离实部和虚部,仅存储非零部分
real_part = np.zeros_like(diag_elements, dtype=np.float64)
imag_part = np.zeros_like(diag_elements, dtype=np.float64)

# 只对需要的位置赋值
real_mask = np.abs(np.imag(diag_elements)) < 1e-10  # 虚部为0的位置
imag_mask = np.abs(np.real(diag_elements)) < 1e-10  # 实部为0的位置
mixed_mask = ~(real_mask | imag_mask)

real_part[real_mask] = np.real(diag_elements[real_mask])
imag_part[imag_mask] = np.imag(diag_elements[imag_mask])
real_part[mixed_mask] = np.real(diag_elements[mixed_mask])
imag_part[mixed_mask] = np.imag(diag_elements[mixed_mask])

这种方式可以用两个float64数组代替复数数组,但内存占用依然是全量的一半(约8GB),远不如稀疏方案高效,仅作为极端场景的备选。

内容的提问来源于stack exchange,提问作者Damuna Taliffato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:43:16