计算机
文章平均质量分 90
山登绝顶我为峰 3(^v^)3
只有平凡理想的域(✪ω✪)
展开
-
CZT & Blusetein‘s FFT
Z-transform,啁啾 Z 变换, Blusetein's FFT.原创 2024-04-19 15:34:04 · 275 阅读 · 0 评论 -
NTT 的各类优化:Harvey、PtNTT,Intel AVX2、ARM Neon、GPGPU
ZLH+23] 优化了 High-radix NTT 的访存模式,提出了一种低复杂度的 cross-bank-write-back memory mapping scheme,通过时间延迟累积蝴蝶的结果,最后串行写回内存。[BHK+21] 还继续考虑了 Armv8-A Neon vector instructions 提供的各种特殊指令,以优化 Barrett 和 Montgomery 的模约简、模乘的计算效率。因此他们将大的 NTT 拆解为若干小的 NTT,从而实现硬件的加速。下的表示是唯一确定的。原创 2023-11-21 14:57:47 · 469 阅读 · 0 评论 -
用 GPU 加速 PQC 方案:Multi-precision Montgomery、SHA3
文中说 C 的 word 是 16 比特的(用两个 16-bits words 模拟一个 32-bits word),而 ASM 的 word 是 32 比特的。SOS 按顺序,先计算 step 1 的高精度乘法,再计算 step 2 的模约简,最后计算 step 3 的后处理。个线程的 register 上,然后使用 warp shuffle 交换数据,避免了 bank conflict 的问题。并且,每个 warp 占据的资源是有限的,其中的 32 个线程相互抢占 register, bank 资源。原创 2023-10-20 17:38:33 · 264 阅读 · 0 评论 -
FHE 的槽置换:Benes Network
BGV 的 SIMD 技术中,提供了 component-wise $l$-Add and $l$-Mult,以及底层代数结构提供的 $l$ 个简单的快速迁移置换。我们希望再实现任意的 $l$-Permute,从而获得数组运算的**完备集**(complete set of operations for arrays)在第 $i-1$ 层的输出线有 $w$ 条,打包在大约 $w/l$ 个密文中(可能包含 empty slots)。第 $i$ 层的输入线有 $w'$ 条,它们是来自上一层输出线的任意映射:原创 2023-10-17 11:55:26 · 355 阅读 · 5 评论 -
加权自动机:在 Semirings 上建模
文章目录:幺半群(Monoids)半环(Semirings)形式幂级数广义矩阵加权自动机经典自动机原创 2023-10-10 23:43:36 · 78 阅读 · 0 评论 -
什么是 TEE
**可信执行环境**(trusted execution environment, TEE)是一个运行在**分离核**(Separation Kernel)上的抗篡改的开放执行环境,它提供机密性、完整性、认证性(CIA),同时提供一个**向第三方证明自己的可信度**的远程认证。TEE 的内容可以被安全的更新,抵御所有的软件攻击,也抵御对于主存的硬件攻击。TEE 所提供的性质:Secure execution, openness and trust。原创 2023-08-28 15:19:46 · 154 阅读 · 0 评论 -
Branching Program(5-PBP)
将一个**布尔电路转化为 5-PBP** 的方法如下:1. 在 Output-Gate 的位置开始递归,将识别 $A$ 的深度 $d$ 的布尔电路,转化为两个深度 $d-1$ 的分别识别 $A_1,A_2$ 的布尔电路以及一个 AND-Gate2. 接着对深度 $d-1$ 的两个布尔电路分别构造出 5-PBP,将它们按照 AND-Gate 的串联程序组合起来,如果两个 5-PBP 的输出 $\sigma_1=\sigma_2=\sigma$ 则使用引理换一个 $\sigma_2=\tau \neq \原创 2023-04-07 16:25:32 · 527 阅读 · 4 评论 -
Intel SIMD: AVX2
AVX 向量寄存器有三种:1. 128-bit (XMM forms),`AVX2` 支持,符号 `__m128`, `__m128d`, `__m128i`2. 256-bit (YMM forms),`AVX2` 支持,符号 `__m256`, `__m256d`, `__m256i`4. 512-bit 的向量寄存器,`AVX2` 不支持,这需要 `AVX-512` 架构**YMM 实际上是两个 XMM,在运算时会分成 2 个 128 bits 的区域**。YMM 支持 `16x16,原创 2023-02-22 11:11:32 · 1530 阅读 · 0 评论 -
并行计算(MPI + OpenMP)
Message Passing Interface(MPI):一种基于信息传递的并行编程技术,定义了一组具有可移植性的编程接口标准(并非一种语言或者接口)。支持点对点通信和广播。MPI 的目标是高性能、大规模性、可移植性,在今天仍为高性能计算的主要模型。OpenMPI 函数库,微软 MPI 文档程序结构(C语言版)编译:运行:数据类型MPI 数据类型C语言数据类型MPI_INTintMPI_FLOATfloatMP原创 2022-12-21 23:22:53 · 4725 阅读 · 0 评论 -
CUDA 编程简介(下)
另外,如果 warp 里的线程同时读取同一个数据,使用 broadcast 机制,也可以在。如果需要大量数据,这种一次次的数据调度会特别慢。在使用异步预取进行了一系列重构之后,您应该看到内存传输次数减少了,但是每次传输的量增加了,并且内核执行时间大大减少了。不过,在 CUDA 的云平台上,不同的非默认 stream 上,它们还是串行执行的。不过,在 CUDA 的云平台上,不同的非默认 stream 上,它们还是串行执行的。现在的 GPU 的一次性调度的内存块大小也变大了,足够支持一个 warp 内的。原创 2022-12-13 18:33:30 · 1019 阅读 · 0 评论 -
CUDA 编程简介(上)
CPU 与 GPU 的硬件结构:可以看出,GPU 与 CPU 本质上没什么区别。仅仅是 GPU 的逻辑控制单元较为简单,并拥有大量的运算单元(共享内存的众核处理器)。GPU 除了图像处理,也可以做科学计算,然而 GPU 的 API 特别难用。CUDA(Compute Unified Device Architecture)是一种简单的轻量级软件,方便人们在 GPU 上编程。CUDA 软件栈:下面,我们举例 Nvidia Tesla 架构,G80 型号。流多处理器(Streaming Multipr原创 2022-12-03 22:35:19 · 1111 阅读 · 0 评论 -
win10上程序性能分析
性能分析工具Windows 性能工具包(Windows Performance Toolkit)位于 Windows 评估和部署工具包(Windows ADK)中,其中包含各种性能监控工具,这些工具可生成有关 Windows 操作系统和应用程序的详细性能概况。下载ADK时,要匹配本机的操作系统版本,本人计算机为Windows 10 版本 20H2。安装时,有一个窗口选择要安装的工具。选择Windows Performance Toolkit,本是默认勾选的。安装ADK后,可以在安装目录下找到旧版本的X原创 2022-04-02 22:04:24 · 7109 阅读 · 0 评论 -
特殊素数及快速模约简
梅森数形如Mp=2p−1M_p=2^p-1Mp=2p−1的数称为梅森数,其中ppp是素数。如果梅森数是素数,称为梅森素数。目前仅发现51个梅森素数。前十个为:序号幂次ppp梅森素数MpM_pMp123237353147127513819161713107171952428783121474836479612305843009213693951108961897001964269013原创 2021-12-30 19:37:16 · 1208 阅读 · 4 评论 -
二进制运算
二进制运算例如符号数据效果aaa0101,10000101,10000101,1000二进制数a+1a+1a+10101,10010101,10010101,1001加111¬a\neg a¬a1010,01111010,01111010,0111按位取反−a-a−a1010,10001010,10001010,1000按位取反再加111那么符号数据效果a∧−aa \wedge -aa∧−a0000,10000000原创 2021-12-24 21:42:21 · 678 阅读 · 0 评论 -
Barrett And Montgomery of Polynomials
Barrett reduction of polynomials对于f,g∈Zp[x]f,g \in Z_p[x]f,g∈Zp[x],其中ppp是素数。那么:fmod g=f−⌊fg⌋gf \mod g = f - \lfloor \frac{f}{g} \rfloor gfmodg=f−⌊gf⌋g其中的分式属于分式域:1/g∈{fg∣f,g∈Zp[x]}1/g \in \{ \dfrac{f}{g} | f,g \in Z_p[x] \}1/g∈{gf∣f,g∈Zp[x]}我们寻找一原创 2021-12-06 12:45:59 · 2021 阅读 · 0 评论 -
NTL_FFT
FFT.h / FFT.cppclass FFTPrimeInfolong q:素数qinv:倒数,1/double(q)Vec<long> RootTable[2]w是2k2^k2k次本原单位根,恰好整除2k∥q−12^k \| q-12k∥q−1RootTable[0][j]:记录w2k−jmod qw^{2^{k-j}}\mod qw2k−jmodqRootTable[1][j]:记录1/w2k−jmod q1/w^{2^{k-j}} \mod原创 2021-12-05 20:30:41 · 218 阅读 · 0 评论 -
C++数论库:NTL
NTL官网:https://libntl.org/doc/tour.htmlNTL is a high-performance, portable C++ library providing data structures and algorithms for arbitrary length integers; for vectors, matrices, and polynomials over the integers and over finite fields; and for arbitra原创 2021-12-01 22:03:02 · 3511 阅读 · 0 评论 -
计算资源受限:指数log、对数exp 的实现
Shift-and-add algorithms计算对数为了计算logbx, x>1\log_bx,\, x>1logbx,x>1,我们可以预计算表格 (写在硬件上):Ak=logb(1+12k), k=0,1,⋯ ,n−1A_k = \log_b(1+\dfrac{1}{2^k}),\, k=0,1,\cdots,n-1Ak=logb(1+2k1),k=0,1,⋯,n−1然后可以做分解:logbx≈logb∏k=0n−1(1+12k)ak=∑k=0n−1ak原创 2021-11-25 20:21:34 · 654 阅读 · 0 评论 -
快速迭代算法:乘积、倒数、平方根、多项式根
整数运算Karatsuba algorithm对于两个nnn比特整数A=xa1+a0B=xb1+b0\begin{aligned}A = xa_1+a_0\\B = xb_1+b_0\end{aligned}A=xa1+a0B=xb1+b0乘积为AB=(x2+x)a1b1+(x+1)a0b0+x(a1−a0)(b0−b1)AB = (x^2+x)a_1b_1 + (x+1)a_0b_0 + x(a_1-a_0)(b_0-b_1)AB=(x2+x)a1b1+(x+1)a0原创 2021-11-25 17:10:36 · 536 阅读 · 0 评论 -
多种变换 与 快速卷积求解
ConvolutionConvolution:hk=∑i+j=kmod naibjh_k = \sum_{i+j=k \mod n} a_i b_jhk=i+j=kmodn∑aibj这是循环卷积。另外,还有其他的卷积:XOR-Convolution:hk=∑i⊕j=kaibjh_k = \sum_{i \oplus j=k} a_i b_jhk=i⊕j=k∑aibjOR-Convolution:hk=∑i∣j=kaibjh_k = \sum_{i |原创 2021-11-24 20:36:53 · 218 阅读 · 0 评论 -
大数运算:Barrett And Montgomery
Barrett reductionBarrett Reduction,一种计算大数取模的算法。使用ZZ上的移位来代替RR上的浮点除法。当模数达到65536比特,运算速度是openssl.mod()openssl.mod()openssl.mod()的2倍。#include <iostream>#include <chrono>#include <random>#include <chrono>#include <NTL/ZZ.h&g原创 2021-11-20 14:33:03 · 2004 阅读 · 0 评论 -
信号系统:傅里叶变换(Fourier transform)
连续傅里叶变换傅里叶变换对关于连续变量ttt的连续函数f(t)f(t)f(t)的傅里叶变换为:F(μ)=∫−∞+∞f(t)e−2πjμtdtF(\mu)=\int_{-\infty}^{+\infty} f(t)e^{-2\pi j\mu t} dtF(μ)=∫−∞+∞f(t)e−2πjμtdt 其中μ\muμ也是连续变量。给定F(μ)F(\mu)F(μ),利用傅里叶反变换,可以计算:f(t)=∫−∞+∞F(μ)e2πjμtdμf(t)=\int_{-\infty}^{+原创 2021-11-05 15:07:22 · 2404 阅读 · 1 评论 -
图像处理:形态学
本文的形态学仅考虑对二值图像的处理。处理多灰度级图形,使用灰度级形态学,本文不讲。基本操作二值图像:Z2Z^2Z2的子集,集合元素是二元组(x,y)(x,y)(x,y)反射:B^={w∣w=−b, b∈B}\hat B = \{ w|w=-b,\, b\in B \}B^={w∣w=−b,b∈B},就是关于原点旋转180°180 \degree180°平移:(B)z={c∣c=b+z, b∈B}(B)_z = \{ c|c=b+z,\, b \in B \}(B)z={c∣c=b+原创 2021-11-12 16:23:32 · 2328 阅读 · 0 评论 -
频率域滤波
二维连续傅里叶变换傅里叶变换:F(u,v)=∫−∞∞∫−∞∞f(x,y)e−j2π(ux+vy) dx dyF(u,v) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x,y)e^{-j2\pi(ux+vy)} \,dx\,dyF(u,v)=∫−∞∞∫−∞∞f(x,y)e−j2π(ux+vy)dxdy反傅里叶变换:f(x,y)=∫−∞∞∫−∞∞F(u,v)ej2π(ux+vy) du dvf(x,y) = \int_{-\i原创 2021-11-11 16:13:18 · 1649 阅读 · 0 评论 -
空间域滤波
仿射变换对于二维阵列 (图像),[v,w][v,w][v,w]是原始坐标,[x,y][x,y][x,y]是变换后坐标,仿射变换的一般形式为:[x,y,1]=[v,w,1]⋅[t11t120t21t220t31t321][x,y,1] = [v,w,1] \cdot \begin{bmatrix}t_{11} & t_{12} & 0\\t_{21} & t_{22} & 0\\t_{31} & t_{32} & 1\\\end{bmatri原创 2021-11-10 21:20:21 · 2144 阅读 · 0 评论