- 博客(912)
- 资源 (28)
- 收藏
- 关注
原创 #pragma unroll(5) 的展开方式
强制编译器,将循环体复制5次性能优化,减少循环控制开销,提高指令级并行显式控制,覆盖编译器的默认启发式规则权衡,在寄存器压力和循环开销之间取得平衡在内存拷贝这种简单但频繁的操作中,适度的循环展开(如5次)通常能带来性能提升,特别是在GPU这种高度并行架构上。但是最佳展开因子需要通过实际测试确定,因为它依赖于具体的硬件架构、内存访问模式和寄存器使用情况。
2026-01-04 18:04:51
200
原创 Birkhoff 多胞形,双随机矩阵的几何世界
Birkhoff 多胞形,也称为双随机多胞形或指派多胞形,是所有双随机矩阵构成的凸集。非负性, 所有元素行和为1,(对每一行列和为1,(对每一列Birkhoff 多胞形是一个数学的微缩宇宙,在其中我们可以看到线性代数、组合数学、凸几何和优化理论的完美融合。从简单的非负性和归一化条件出发,它生长出了一个结构丰富、应用广泛的数学世界。这个多胞形提醒我们,深刻的数学往往源自简单的定义。
2026-01-04 15:23:16
339
原创 单个 h门作用在某个 qubit 的计算优化原理
配对 1: t=0 → α=0, β=1 → c'₀=(0+1)/√2 = 1/√2, c'₂=(0-1)/√2 = -1/√2。配对 2: t=1 → α=0, β=0 → c'₁=0, c'₃=0。配对 3: t=4 → α=0, β=0 → c'₄=0, c'₆=0。配对 4: t=5 → α=0, β=0 → c'₅=0, c'₇=0。即 (0,4), (1,5), (2,6), (3,7) 配对。如果 H 在最高位 (k=n-1),配对是 x 与。t 的第 2 位为 0:t=0,1,2,3。
2025-12-30 17:25:14
791
原创 applyMatrix H 门的两种方式
四个 qubits 的index 分别是0,1,2,3, 在1和2qubits 上作用 h门,数学表达方式是怎么样的?是否可以分2次,分别将h门作用在1和2qubits?效果是否相同呢?这是量子门在多个量子比特上的作用方式问题。这是一个双量子比特门,作用于两个不同的量子比特。数学表达为:其中: 表示在量子比特1上作用H门 表示在量子比特2上作用H门表示张量积作用于4量子比特系统: 完整矩阵大小:先作用在量子比特1,再作用在量子比特2: 2. 效果是否相同是的,效果完全
2025-12-29 20:16:50
738
原创 bernstein vazirani 算法的仿真实现
bernstein vazirani 算法的原理?下边这个 cudaq kernel 与这个原理的match 关系:有一个隐藏的位字符串:(二进制)有一个黑盒函数:(点积模2)经典算法需要 n 次查询 才能确定 s量子算法只需要 1 次查询初始化:所有量子比特置为 |0〉应用 Hadamard 门:创建均匀叠加态查询 Oracle:实现函数 f(x) 的相位编码再次应用 Hadamard 门:将相位信息转换为振幅信息测量:直接得到隐藏位字符串 s关键匹配点 叠加态创建 O
2025-12-27 15:49:11
714
原创 MPI API 调用的错误检查最佳实践
总是检查MPI返回值,即使是看起来不会失败的操作使用分层错误处理,区分关键错误和非关键错误提供有意义的错误信息,包括MPI错误码和上下文在错误处理中考虑并行环境,避免死锁验证输入参数,特别是在集体操作中使用非阻塞操作时妥善处理取消和超时实现适当的资源清理,确保内存和请求句柄被正确释放考虑容错机制,对于网络应用特别重要保持错误处理的一致性,在整个应用中统一策略利用调试工具,如MPI调试器和性能分析器。
2025-12-26 19:33:47
753
原创 通过示例看 C++ 函数对象、仿函数、operator( )
public:private:public:// 1. 使用自定义比较器排序// 输出: date apple cherry banana// 2. 使用自定义谓词// 使用 find_ifif (it!// 输出: 15// 统计大于10的元素个数// 输出: 3return 0;
2025-12-25 10:34:35
317
原创 一个 custatevec api 示例,measure
初始化阶段定义量子系统参数:2个全局比特,2个局部比特准备4个子状态向量(分布在多个GPU上)定义测量参数:测量比特1和0多GPU管理阶段根据命令行参数或自动选择GPU设备为每个子状态向量分配GPU内存并传输数据测量阶段计算每个子状态向量的概率质量构建累积概率分布根据随机数0.72选择要测量的子状态向量(应该是子状态向量2)执行测量但不坍缩(获取测量结果bitString)坍缩阶段根据测量结果计算坍缩后的概率对所有子状态向量执行坍缩操作验证阶段将结果复制回主机与预期结果比较。
2025-12-23 09:00:00
512
原创 cudaq spec 12,量子算法原语
注意:如果内核中未指定任何测量,并允许 nvq++ 编译器执行引入辅助量子比特的传递,可能难以区分哪些是辅助量子比特,哪些是您的量子比特。在这种情况下,建议在内核中提供显式测量,以便仅接收来自您量子比特的测量结果,并静默丢弃辅助量子比特的测量结果。即,如果量子比特在内核中间被测量,且后续操作更改了量子比特的状态,则量子比特将在内核结束时被隐式重新测量,并且该重新测量的值将出现在。梯度计算(以可扩展的方式)的一个重要方面是,我们将梯度建模为电路 ansatz 的具体参数上的导数,表示为。
2025-12-22 18:45:00
737
原创 cudaq spec 10,常见量子编程模式
2] 通过针对此模式的特殊语法,CUDA-Q 使编译器实现能够根据程序员的意图进行电路优化。具体而言,U、V 和 U† 的受控版本不会产生所有指令的受控操作,而是可以自由地仅控制 V。[1] CUDA-Q 提供了一个描述底层量子计算资源的抽象。提供了一个 API,用于查询可用的量子处理单元(QPU)数量,每个 QPU 被分配一个逻辑整数索引({0,1,2,...})。[4] 程序员可以指定所需 QPU 的 ID,所有后续的 CUDA-Q 内核执行都将针对该 QPU。,其中 U 是计算块,V 是动作块。
2025-12-22 07:30:00
202
原创 Bernstein–Vazirani 算法 的原理
算法步骤简记:初始:对所有 qubit 作用 Hadamard:调用 Oracle:对前 n 个 qubit 再次作用 Hadamard:测量前 n 个 qubit,得到。给定一个固定的二进制字符串,其中。定义:这是线性函数(模 2 加法)。 的具体实现是,对每个满足的比特 i,在辅助比特上加一个 CNOT 门(控制位是第 i 个 qubit)。当辅助比特初始化为时,这些 CNOT 共同给态加上相位。
2025-12-21 22:15:46
856
原创 cudaq spec 09,即时内核创建
5] 一旦内核被创建,程序员就可以使用公开的 API 自由构建内核表达式。提供了用于量子比特分配、量子操作调用、控制和伴随合成以及基于布尔值的条件分支的方法。实例,该实例可用于内核的构造。内核创建和参数值提取的预期机制是通过标准 C++ 结构化绑定。抽象支持动态定义量子内核,这些内核可以选择性地通过用户定义的输入参数进行参数化。[1] CUDA-Q 提供了一组编程抽象,用于在运行时动态构建量子内核代码。[4] 对于签名中的每种类型,程序员会获得一个新的。) 构造具有定义参数签名的空 CUDA-Q 内核。
2025-12-21 12:30:00
437
原创 cudaq spec 07,08,子电路合成
4] 编译器实现可以自由使用任何可用的相关合成策略来合成多受控操作。量子比特可以聚合到一个控制量子比特范围内,可以选择使用或不使用。[1] 纯设备量子内核的执行可以通过显式的内禀库调用来修改,这些调用提供多量子比特受控应用和伴随(或电路反转)语义。[1] 所有经典控制流表达式均继承自主机语言(如 C++、Python)。函数接受以下输入:一个实例化的纯设备量子内核、一个控制量子比特的。函数接受以下输入:一个纯设备量子内核以及内核所需的其余参数。[2] 程序员可以使用标准循环结构和条件语句来定义量子内核。
2025-12-21 07:30:00
146
原创 cudaq spec 06,量子内核
10] CUDA-Q 内核可以作为其他量子内核的输入,并由内核函数体代码调用。定义为自定义可调用类型的 CUDA-Q 内核可以定义任何允许类型的非引用类型类成员。[3] CUDA-Q 明确区分从主机代码调用的内核和从另一个量子内核内部调用的内核。[5] CUDA-Q 定义了一组允许的类型,这些类型可以在量子内核函数签名(输入和返回类型)、函数内变量声明或构造以及从父作用域捕获变量时使用。[6] 任何具有允许 CUDA-Q 类型的变量都可以在 CUDA-Q 内核内的栈上分配。函数属性来声明量子内核。
2025-12-20 12:30:00
380
1
原创 cudaq spec 04,05,量子运算符
4] CUDA-Q 定义了静态函数来创建指定量子比特索引上的原始 X、Y、Z 泡利运算符,这些运算符随后可在代数表达式中用于构建更复杂的泡利张量积及其和。[7] 程序员可以通过额外的指定模板参数进一步修改量子内禀操作,CUDA-Q 利用此语法来合成操作的控制版本和伴随版本。[1] 为了支持底层量子编程并为大规模应用构建基础量子内核,CUDA-Q 针对设备特定的单量子比特酉操作定义了量子内禀操作抽象。其中 i 表示量子比特索引,n 表示量子比特数量,P ∈ {I, X, Y, Z}。
2025-12-20 09:15:00
1349
原创 cudaq spec 02,03,命名空间与标准,
该类型的效用在于编译时已知分配的量子比特容器,这可能直接支持提前进行量子优化和综合。,用于模拟量子比特在底层量子内存空间中的索引(假设有无限的可用量子比特寄存器)。个量子比特,以及从给定索引开始并包含用户指定数量的量子比特的内部切片。个量子比特,以及从给定索引开始并包含用户指定数量的量子比特的内部切片。个量子比特,以及从给定索引开始并包含用户指定数量的量子比特的内部切片。根据包含的量子信息单元的维度进行模板化,对于量子比特系统默认为 2。根据包含的量子信息单元的维度进行模板化,对于量子比特系统默认为 2。
2025-12-20 07:30:00
712
原创 Quake 方言
Quake 值模型背后的主要动机是,为了优化目的直接暴露量子与经典数据的依赖关系,即表示量子计算中的数据流。与 Quake 的内存模型(使用内存语义,量子算子作为对量子比特引用的副作用)不同,值模型使用值语义,即量子算子消费并产生值。在值形式中,所有门都通过不同的值显式连接,这消除了通过隐式副作用进行进一步分析的需要。以下是值形式的实现。物理上,一个量子比特是仅有两个可区分状态的对象,即它是一个二态量子力学系统,如自旋-1/2粒子。最常见的情况是,这种效应是幺正演化——此时,我们称该算子是幺正的。
2025-12-19 19:26:23
445
原创 cudaq spec 01,机器模型
9] CUDA-Q 模型同时考虑了远程托管的 QPU 执行模型和紧耦合的量子-经典架构。该控制系统内存空间应支持基本算术变量声明、存储和加载操作,以及量子比特测量结果的持久化存储和加载,以实现快速反馈和条件电路执行。[6] 单个 QPU 的量子内存空间被建模为一个无限的量子比特寄存器,物理连接约束对程序员隐藏。请注意,CUDA-Q 模型的编译器实现可以允许开发者访问 QPU 量子比特连接的细节,以支持开发新颖的布局策略。[8] 每个分配的量子比特都是唯一的,如果被释放,则可以用于后续分配。
2025-12-19 19:07:27
204
原创 分组交换和电路交换的关系与融合设计
对比维度电路交换分组交换适用场景恒定速率、实时性要求高的传统语音、视频流。突发性强、容忍延迟变化的互联网数据业务。传输速度特点速度稳定、延迟确定,但整体网络资源利用率低。峰值速度可能很高、平均吞吐量大,但延迟可变、有抖动,受网络拥塞影响大。现代地位作为底层传输技术或特定领域(如部分电信核心网)存在。绝对主导,是互联网的基石。简单来说,对于恒定流,电路交换像租用一条专属高速公路车道——不堵车但昂贵且可能空置;分组交换则像和大家一起使用所有车道——更经济,车多时(网络拥塞)会堵车,车少时则非常顺畅。
2025-12-18 16:46:54
768
原创 分析 libnvqir-nvidia-mgpu
这两组符号是同一个模板类的两个不同实例化版本,由于模板参数不同,编译器为每个版本生成了独立的机器代码。这是C++模板编程的典型特征,特别是在需要支持多种数据类型或不同实现的库中很常见。
2025-12-18 11:17:41
347
原创 cuStateVec 数据类型 ¶
句柄必须分别使用 `custatevecCreate()` 和 `custatevecDestroy()` 函数进行初始化和销毁。此描述符持有分布式索引比特交换的数据传输工作器的上下文,分别使用 `custatevecSVSwapWorkerCreate()` 初始化和 `custatevecSVSwapWorkerDestroy()` 销毁。第 0 位是 LSB。如果参数 `ctx` 和 `size` 与传递给 `device_alloc` 以分配 `ptr` 所指向内存的参数不相同,则行为是未定义的。
2025-12-18 10:00:00
1330
原创 罗马帝国与日耳曼蛮族
经济上的互补依赖催生了跨文化贸易网络,政治上的契约关系重构了主权概念,军事上的技术融合改写了战争逻辑,社会层面的信仰对话与生活实践则孕育了新的文化基因。罗马帝国北部边疆的“关市”(emporia)形成了跨文化的商业网络。(laeti) 3世纪后,帝国政府将归附的日耳曼部落安置于荒芜行省(如高卢北部),授予土地以换取农业产出和兵役,形成早期的“军事-农业复合体”。罗马组建仿照日耳曼模式的装甲骑兵(cataphractarii),阿德里安堡战役(378年)中哥特重骑兵的冲锋彻底暴露了罗马步兵的劣势。
2025-12-18 07:30:00
689
原创 cuStateVec API
当 `mapType` 为 `CUSTATEVEC_MATRIX_MAP_TYPE_MATRIX_INDEXED` 时,`matrixIndices` 应包含 `nSVs` 个整数;如果 Open MPI 或 MPICH 库直接链接到应用程序,并且为 `communicatorType` 参数指定了 `CUSTATEVEC_COMMUNICATOR_TYPE_OPENMPI` 或 `CUSTATEVEC_COMMUNICATOR_TYPE_MPICH`,则 `soname` 参数应设置为 `NULL`。
2025-12-18 01:20:08
842
原创 11章 像素和顶点数据导出 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
除了将数据复制到颜色或深度输出缓冲区外,此导出还通知颜色缓冲区哪些像素有效,哪些已被丢弃。如果发送了多个VM设置为1的导出,则使用最终导出的掩码。硬件执行导出指令分为两个阶段。使用S_WAITCNT等待EXPCNT,以防止着色器程序在导出操作完成之前覆盖EXEC或保存要导出数据的VGPR。导出指令将像素或顶点着色器数据从VGPR(向量通用寄存器)复制到专用的输出缓冲区。相同类型的导出(例如:位置)按顺序完成,但不同类型的导出可以乱序完成。顶点着色器使用导出指令将顶点位置数据和顶点参数数据输出到输出缓冲区。
2025-12-16 19:54:19
1039
原创 10章 数据共享操作 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
然后,执行一次到LDS的存储操作。由于LDS内部的分库结构,操作最快可在两个周期内完成,最多可能需要64个周期,具体取决于存储体冲突(映射到同一内存存储体的地址)的数量。LDS直接读取发生在向量ALU(VALU)指令中,允许LDS提供一个双字值,该值广播到波前中的所有线程,并用作ALU操作的SRC0输入。原子操作是算术操作,将VGPR的数据与LDS中的数据结合,并将结果写回LDS。如果该位为1,则数据项的偏移量变为每个线程的偏移量,并且是一个从VGPR为索引读取的MSB导出的有符号双字偏移量。
2025-12-16 18:30:00
1345
原创 09章 平面内存指令 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
与缓冲区(buffer)或图像(image)指令不同,平面指令不使用资源常量(resource constant)来定义内存表面的基地址。该内存空间包括显存(video memory)、系统内存(system memory)、LDS(本地数据共享)内存以及暂存(scratch,私有)内存。不进行数据格式转换。由于这些指令不访问LDS,仅使用VM_CNT,而不使用LGKM_CNT。64位地址的存储方式为:低有效位(LSB)存储在ADDR指定的VGPR中,高有效位(MSB)存储在ADDR+1指定的VGPR中。
2025-12-15 19:39:20
989
原创 08章 向量内存操作 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
向量内存(VMEM)指令将每个工作项的数据分别读取或写入VGPR中。这与标量内存指令形成对比,标量内存指令移动的是波前中所有线程共享的单个数据块。所有向量内存(VM)操作都由纹理缓存系统(一级和二级缓存)处理。:内存类型化缓冲区操作:内存非类型化缓冲区操作:内存图像操作指令定义了哪些VGPR为操作提供地址,哪些VGPR从操作接收或提供数据,以及一系列包含内存缓冲区描述符(V#或T#)的SGPR。此外,MIMG操作从四个SGPR系列提供纹理采样器;该采样器定义了对从图像读取的数据执行的纹素过滤操作。
2025-12-12 19:55:14
1305
1
原创 cudaEventCreateWithFlags 的 cudaEventInterprocess 和 cudaEventDisableTiming
解释功能,特性。
2025-12-11 23:07:43
337
原创 07章 标量内存操作 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
标量内存读(SMEM)指令允许着色器程序通过标量数据缓存将数据从内存加载到SGPR中,或将数据从SGPR通过标量数据缓存写入内存。指令一次可以读取1到16个双字(Dword),或写入1到4个双字。数据直接读入SGPR,无需任何格式转换。标量单元在内存和SGPR之间读写连续的双字。这主要用于加载ALU常量和间接T#/S#查找。不支持数据格式转换,也不支持字节或短数据。
2025-12-11 13:03:52
1358
原创 samples_mpi -- distributedIndexBitSwap.cpp
这是一个使用 NVIDIA cuQuantum cuStateVec 库实现分布式量子比特交换的基准测试程序。* 4. 创建 cuStateVec 通信器和交换工作器。使用 cuStateVec 进行高效的比特交换。* 3. 分配 GPU 内存和设备资源。* 5. 设置 P2P 通信(如启用)* 6. 创建分布式比特交换调度器。* 1. 初始化 MPI 环境。* 2. 计算比特数和交换模式。* 7. 循环执行比特交换操作。* 8. 测量并输出性能结果。测量和优化分布式量子计算的性能。
2025-12-11 12:44:55
148
原创 Multi-process qubit reordering
对于多进程计算,cuStateVec 提供了用于调度/重排序分布式状态向量元素的 API。此外,cuStateVec 还提供了,用于封装 MPI 库以进行进程间通信。请参阅分布式索引比特交换 API 以获取概述和详细用法。
2025-12-11 12:30:14
972
原创 06章 矢量ALU运算 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
例如,V0=V1+V2的打包加法实际上是两个独立的加法:将每个双字的低16位相加并将结果存储在V0的低16位,以及将高半部分相加。当使用VOP3格式时,具有浮点结果的指令可以应用输出修饰符(OMOD字段),将结果乘以:0.5、1.0、2.0或4.0。V_PK_MAD_I16、V_PK_MUL_LO_U16、V_PK_ADD_I16、V_PK_SUB_I16、V_PK_FMA_F16等。产生进位输出的指令(整数加减)在VOP2格式下将其结果写入VCC,在VOP3格式下写入任意的SGPR对。
2025-12-09 21:15:31
747
原创 3 qubit 量子系统中的单qubit 期望值计算
对于多目标比特的情况,原理相同,只是 S 矩阵的维度从 2×2 变为。S₀₁: 访问 ψ₀, ψ₁, ψ₄, ψ₅(qubit1=0)和 ψ₂, ψ₃, ψ₆, ψ₇(qubit1=1)注意 ψ 在内存中是连续存储的:ψ₀, ψ₁, ψ₂, ψ₃, ψ₄, ψ₅, ψ₆, ψ₇。:当 M 非厄米时,期望值可能是复数,其实部对应 M 的厄米部分的期望值,虚部对应反厄米部分。S₀₀: 访问 ψ₀, ψ₁, ψ₄, ψ₅(这些是 qubit 1 = 0 的分量)对于目标比特 qubit 1,测量矩阵是。
2025-12-08 19:42:03
730
原创 05章 标量ALU操作 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
使用字面量常量的方法是:将源指令字段设置为"literal"(255),然后使用后续的指令双字作为源值。对于加法,溢出 = 两个操作数符号相同,且结果的最高有效位(符号位)与操作数符号不同。对于减法(A-B),溢出 = A和B符号相反,且结果的符号与A的符号不同。如果指令在SGPR中使用64位数据,则SGPR对必须对齐到偶数的边界。例如,使用SGPR 2和3或8和9来表示64位数据是合法的(但使用11和12则不合法)。这些指令比较两个值,如果比较结果为TRUE,则将SCC设置为1。
2025-12-06 17:52:49
965
原创 04章 程序流控制 - “Vega“ 7nm Instruction Set ArchitectureReference Guide
当多个wavefront在一个工作组中时,可以使用S_BARRIER指令强制每个wavefront等待,直到所有其他wavefront到达相同的指令;任何wavefront都可以使用S_ENDPGM提前终止,当剩余的活跃wave到达其屏障指令时,屏障被视为已满足。在这些情况下,程序必须插入S_WAITCNT指令,以确保在继续之前先前的操作已完成。着色器有三个计数器,跟踪已发出指令的进度。相同类型的指令按发出顺序返回,除了标量内存读取,它们可以乱序返回(在这种情况下只有S_WAITCNT 0是唯一合法值)。
2025-12-05 19:44:08
960
NS基础与安装---NS2 是一款开放源代码的网络仿真软件
2008-11-05
bootia32.efi
2018-04-07
tbb2017_20170226oss_win.zip
2017-03-22
chisel官方教程20201010版本.7z
2020-10-11
带几何解释的线性代数讲义
2020-12-02
英中双语版_flex与bison_pdf.7z
2020-11-03
Digital Design With Chisel_20201010edition.7z
2020-10-11
llvm_cookb_LLVM_IR骨架语法领进门资料.7z
2021-04-25
python27_d.lib python27_d.dll python27_d.pdb
2017-09-13
FIRRTL_spec_2020Oct_EditionPDF.7z
2020-10-19
Downloads.zip
2020-07-21
Full Bandwidth broadcast, reduce and scan with only - Logic Synthesis and Verification Algorithms
2025-11-15
ACPI spec 4.0 and 3.0
2024-08-24
bash-shell matrix-computations llvm-cook loader-linker sparse-ma
2024-01-23
Linux kernel 高并发开发
2024-01-14
mpi学习教程等-都志辉-配合下文https环境搭建
2023-12-29
代数多重网格理论资料 AMG AMGX原理
2023-09-28
opencl 学习资源pdf and source code
2023-05-22
常用数值算法集C语言与 Numerical Methods Using Matlab 4th Ed Mathews
2023-04-12
比利时的 鲁汶大学 计算机系教授 Philip Dutré 的全局光照教程,和他与合作者在 2002年 SIGGRAPH ppt
2022-09-17
LLVM IR MLIR: Scaling Compiler Infrastructure for Domain Specifi
2022-05-06
SSA_LLVMCookBook_DirectMethodSparseLinearSystem
2022-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅