当前位置: 首页 > article >正文

Microsoft SEAL中dwthandler.h解析

提供了一个接口,用于执行快速离散加权变换 (DWT) 及其逆变换,这些变换用于加速多项式乘法,将多个消息批量处理成一个明文多项式。这个类模板专门用于整数商环上DWT的整数模算法,并用于多项式乘法和BatchEncoder。在复数域上的 DWT 使用双精度复数运算进行专门化,这在 CKKSEncoder 中使用。

离散加权变换 (DWT) 是离散傅里叶变换 (DFT) 在任意环上的一种变体,它在变换输入之前,通过与一个权重向量进行逐元素相乘来加权输入,然后再用另一个向量加权输出。DWT 可用于执行负循环卷积,就像 DFT 可用于执行循环卷积一样。大小为 n 的 DFT 需要一个原始 n 次单位根,而用于负循环卷积的 DWT 需要一个原始 2n 次单位根 ψ。在正向 DWT 中,输入与 ψ 的递增幂逐元素相乘,正向 DFT 变换使用 2n 次原始单位根 ψ²,输出则不加权。在反向 DWT 中,输入不加权,反向 DFT 变换使用 2n 次原始单位根 ψ⁻²,输出与 ψ⁻¹ 的递增幂逐元素相乘。

快速傅里叶变换是一种计算 DFT 或其逆变换的算法。Cooley-Tukey FFT 将 DFT 的复杂度从 O(n²) 降低到 O(n log n)。DFT 可以解释为在原始 n 次单位根的递增幂处评估一个 (n-1) 次多项式,这可以通过 FFT 算法加速。DWT 评估原始 2n 次单位根的递增奇数幂,也可以通过本类实现的类似 FFT 的算法加速。

本类中实现的算法基于 Patrick Longa 和 Michael Naehrig 的论文 (https://eprint.iacr.org/2016/504.pdf) 中的算法 1 和 2,并进行了三处修改。首先,我们在本类中将算法推广到任意环上的 DWT。其次,IDWT 使用的 ψ⁻¹ 的幂以一种乱序方式存储(与论文中的位反转顺序相对),以实现内存访问的合并。第三,IDWT 中的 1/n 乘法被合并到最后一轮迭代中,节省了 n/2 次乘法。最后,我们展开循环以实现对输入和输出向量的内存访问合并。在早期版本的 SEAL 中,1/n 的乘法通过在所有迭代中合并 1/2 的乘法来完成,这在 CPU 上比当前方法慢,但在某些硬件架构上更高效。

IDWT 使用的 ψ⁻¹ 的幂的存储顺序不自然但高效:第 i 个槽存储 ψ⁻¹ 的 (reverse_bits(i - 1, log_n) + 1) 次幂。

transform_to_rev

执行原地快速乘以 DWT 矩阵的操作。 对单位根幂的访问是合并的。 如果不展开循环,对值的访问则不会合并。

@param[values] 正常顺序的输入,输出为位反转顺序

@param[log_n] DWT 大小的以 2 为底的对数

@param[roots] 位反转顺序的单位根幂

@param[scalar] 一个可选的标量,将乘以所有输出值

transform_from_rev

执行原地快速乘以 DWT 矩阵的操作。 对单位根幂的访问是合并的。 如果不展开循环,对值的访问则不会合并。

@param[values] 位反转顺序的输入,正常顺序的输出

@param[roots] 乱序的单位根幂

@param[scalar] 一个可选的标量,将乘以所有输出值


http://www.kler.cn/a/407449.html

相关文章:

  • linux 网络安全不完全笔记
  • 计算机毕业设计SparkStreaming+Kafka图书推荐系统 豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 知识图谱 图书大数据 大数据毕业设计 机器学习
  • I.MX6U 裸机开发18.GPT定时器实现高精度延时
  • Maven 仓库
  • WPF中DataGrid滚动条自动滚动到文字编辑行的实现方法
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
  • OpenCV相机标定与3D重建(3)校正鱼眼镜头畸变的函数calibrate()的使用
  • 【Python · PyTorch】循环神经网络 RNN(基础概念)
  • Rust 力扣 - 198. 打家劫舍
  • 【汽车制动】汽车制动相关控制系统
  • UE5材质篇5 简易水面
  • 11-23刷题记录
  • 23、论文阅读:基于多分辨率特征学习的层次注意力聚合GAN水下图像增强
  • Docker 实践与应用举例:提升开发与运维效率的利器
  • 阿里Qwen系列开源模型介绍
  • 设计模式之 原型模式
  • 高危,Laravel参数注入漏洞安全风险通告
  • 神经网络(系统性学习一):入门篇——简介、发展历程、应用领域、基本概念、超参数调优、网络类型分类
  • SQL的四种语言介绍
  • JavaWeb之综合案例
  • 笔记整理—linux驱动开发部分(15)BMP图片显示
  • 微软安全文章合集
  • Redis进阶Redission实现分布式锁
  • 微信小程序中会议列表页面的前后端实现
  • 模型压缩笔记1:模型量化
  • python正则表达式基本字符字符