![]() |
挑战卡皇TITAN!GTX 780 SLI巅峰测试 |
(2013-6-6)
|
GK110核心新编码和指令优化 新ISA编码:每个线程255个 存放器 可由线程 拜访的 存放器的数量在 GK110 中已经翻了两番,同意线程最多 拜访 255 个 存放器 。由于添加了每个线程可用的 存放器数量,Fermi 中 承受很大 存放器压力或泄露行为的代码的速度能大大的 普及 。典型的例子是在 QUDA 库中 使用 CUDA 执行格点 QCD(量子色动力学)计算 。基于 QUDA fp64 的算法由于 可以让每个线程 使用更多 存放器并削减的当地内存 透露,所以其性能 普及了 5.3 倍 。 Shuffle 指令 为了进一步 普及性能,Kepler 采纳 Shuffle 指令,它同意线程在 Warp 中共享数据 。此前,Warp 内线程中间的数据共享需要存储和加载操作以通过共享内存传递数据 。 使用 Shuffle 指令,Warp 可以读取来自Warp 内 其余线程中任意罗列的值 。Shuffle 支撑任意索引 引用(即任何线程读取任何 其余线程) 。有用的 Shuffle 子集包括下一线程(由固定量 补偿 对消)和 Warp 中线程间 XOR “蝴蝶”式罗列,也称为 CUDA 性 。 Shuffle 性能优于共享内存, 因此存储和加载操作 可以一步 实现 。Shuffle 也 可以削减每个线程块所需共享内存的数量,由于数据在 Warp 级 交换也不需要 搁置在共享内存中 。在 FFT 的状况下,需要共享一个 Warp 内的数据,通过 使用 Shuffle 获得 6%的性能增益 。 ![]() 此示例表明某些变量 可以在 Kepler 中 使用 Shuffle 指令 。 原子运算 原子内存运算对并行编程十分主要,同意并发线程对共享数据 构造执行正确的读‐ 批改‐写运算 。原子运算如 add、min、max 和 compare,swap 在某种 意思上也是也是原子运算,假如在没有 其余线程 烦扰的状况下执行读、 批改和写运算 。原子内存运算被 宽泛用于并行排序、归约运算、建制数据 构造而同时不需要锁定线程顺序执行 。 Kepler GK110 全局内存原子运算的吞吐量较 Fermi 时代有大幅的 普及 。一般全局内存地址的原子运算吞吐量 有关于每频率一个运算来说 普及了 9 倍 。独立的全局地址的原子运算的吞吐量也显而易见加速,而且 解决地址 摩擦的逻辑已经变得更有效 。原子运算通常 可以依照 类似全局负载运算的速度进行 解决 。此速度的 普及使得原子运算足够快得在内核内部循环中 使用, 肃清之前一些算法整合结 果所需要的 径自的归约传递 。Kepler GK110 还 扩大了对全局内存中 64‐位原子运算的本机 支撑 。除了 atomicAdd、atomicCAS 和 atomicExch(也受 Fermi 和 Kepler GK104 支撑)之外,GK110 还 支撑以下 性能: atomicMin、atomicMax、atomicAnd、atomicOr、atomicXor 其余不受本机 支撑的原子运算(例如 64 位浮点原子运算) 可以 使用 compare‐and‐swap (CAS) 指令 模仿 。 纹理改良 GPU 的专用硬件纹理单元关于需要取样或过滤图像数据的计算机程序来说是珍贵的资源 。Kepler中的纹理吞吐量与 Fermi 相比有显而易见 普及,每个SMX单元包括16纹理过滤单元,对照Fermi GF110 SM 普及了4倍 。 此外,Kepler转变了治理纹理状态的 步骤 。在Fermi时代,为让GPU 引用纹理,必须在固定大小绑定表中 调配“槽” 威力启动 Grid 。表中槽数量最后 制约程序一次 可以读取多少个独特的纹理 。最后,在 Fermi 中 制约程序仅 可以同时 拜访128纹理 。 Kepler中有无绑定纹理,不需要额外步骤:纹理状态已 保留为内存中的对象,硬件按需猎取这些状态对象,绑定表 过期 。这有效地 肃清了计算程序 引用独特纹理数量的任何 制约 。相反,程序 可以在任何 工夫映射纹理和通纹理 解决 四周 。 Kepler 内存子系统:L1、L2、ECC Kepler的内存 品位 构造与Fermi 类似 。Kepler架构 支撑统一内存加载和存储的 申请路径,每个SMX 多 解决器有一个L1缓存 。Kepler GK110 还使编译器 批示为只读数据增设一个新的缓存,如下所述 。 ![]() 64KB可配置共享内存和L1缓存 在 Kepler GK110 架构(如在上一代 Fermi 架构)中,每个 SMX 有 64 KB 的片上存储器,可配置为 48 KB 的 共享存储器和 16 KB 的 L1 缓存,或配置为 16 KB 的共享存储器和 48 KB 的 L1 缓存 。Kepler 目前在配置共享存储器的 调配和 L1 缓存方面的灵便性更大,同意共享存储器和 L1 缓存中间以 32KB/32KB 划分 。为了 支撑 SMX 单元添加的吞吐量,用于 64 位或更大负载运算的共享存储器带宽 绝对 Fermi SM 也添加一倍,到每主频 256B 。 48KB只读‐数据缓存 除 L1 缓存之外,Kepler 为只读数据引入 48 KB 缓存为了函数的 连续 工夫 。在 Fermi 时代,该缓存不得不由纹理单元 拜访 。专家程序员通常发现它的优势是通过将数据映射为纹理来加载数据,但这种 步骤有众多局限性 。 在 Kepler 中,除了大大 普及了该缓存的容量之外,还 伴随着纹理功力的 普及,我们决定让缓存为一般负载运算直接 拜访 SM 。 使用只读的路径 好处极大,由于它使负载和工作组的影响远离共享/L1缓存路径 。此外, 其余状况下,只读数据缓存更高的标签带宽 支撑全速非对齐内存 拜访模式 。 该路径的 使用是由编译器自动治理(通过参数 C99 拜访任何变量或称为常量的数据 构造) 。 标准 要害字 “const_restrict” 将被编译器标记以通过只读数据缓存加载 。 改良的L2缓存 Kepler GK110 GPU 存在 1536KB 的专用 L2 缓存内存,是 Fermi 架构中 L2 的 2 倍 。L2 缓存是SMX 单元中间主要数据统丝毫, 解决所有加载、存储和纹理 申请并提供跨 GPU 中间有效、高速的数据共享 。Kepler 上的 L2 缓存提供的每时钟带宽是 Fermi 中的 2 倍 。之前不晓得数据地址的算法,如物理求解器、光线追踪以及 稀薄矩阵乘法,从高速缓存 品位 构造中获益匪浅 。需要多个SM读取 雷同数据过滤和卷积内核也从中受益 。 内存 掩护 支撑 与 Fermi 雷同,Kepler的注册文件、共享内存、L1 缓存、L2 缓存和 DRAM 内存受单错纠正双错检测 (SECDED) ECC 代码 掩护 。此外,只读的数据缓存‐通过奇偶校验 支撑单错纠正,在奇偶校验 舛误的状况下,缓存单元自动使失效,迫使从 L2 读取正确的数据 。 ECC 校验位从 DRAM 猎取必然 消费 定然量的带宽,这会招致启用 ECC和停用 ECC的运算中间的差别,尤其关于内存带宽敏感的 利用程序 。基于 Fermi 的 教训,Kepler GK110 对 ECC 校验位猎取 解决进行了几项优化 。 后果,经内部的计算 利用测试套件测量,开启和关闭 ECC 的性能三角洲已经 均匀减低 66% 。 智能细化运算:Dynamic Parallelism 在混合 CPU‐GPU 系统中,由于 GPU 的性能/ 功率比 普及,使 利用程序中大量并行代码 彻底在GPU 高效运行, 普及了可 扩大性和性能 。为了加速 利用程序的额外并行 部分的 解决,GPU必须 支撑更加多样化的并行工作负载类型 。 Dynamic Parallelism 是 Kepler GK110 引入的新 性能, 可以让 GPU 在无需 CPU 介入的状况下,通过专用加速硬件路径为自己制造新的工作,对 后果同步,并操纵这项工作的调度 。 在内核启动时,假如问题的规模和参数已知,那么 Fermi 在 解决大型并行数据 构造时 动机十分好 。所有的工作是从主机 CPU 启动,会运行到 实现,并返回 后果返回到 CPU 。 后果将被用来作为最后的解决 方案的一 部分,或通过 CPU 进行 综合, 而后向 GPU 发送额外的 解决 申请以进行额外 解决 。 在 Kepler GK110中,任何一个内核都 可以启动另一个内核,并 缔造 解决额外的工作所需的必要流程、事件以及治理依赖,而无需主机 CPU 的介入 。T 该架构能让开发人员更方便 缔造和优化递归和数据依赖的执行模式,并同意更多的程序直接运行在 GPU 上 。 可 认为 其余 使命 开释系统CPU,或 可以用 性能少的 CPU 配置系统以运行 雷同的工作负载 。 ![]() Dynamic Parallelism 同意 利用程序中更多的并行代码直接由 GPU 本身启动(右侧图像),而不需要 CPU 的 干涉(左侧图像) 。 Dynamic Parallelism 同意更多种并行算法在 GPU 上执行,包括不同数量的并行嵌套循环、串行操纵 使命线程的并行队或或卸载到 GPU 的 方便的串行操纵代码,以便 增长 利用程序的并行 部分的数据 部分化 。 由于内核 可以依据GPU 中间 后果启动额外工作负载,程序员现在 可以智能 解决负载 均衡的工作,以集中其大量资源在需要 解决 威力最大或与解决 方案最有关的问题上 。 一个例子是动态设置数值 模仿的 Grid 。 通常 Grid 主要集中在 变迁最大的地域,需要通过数据进行高昂的前 解决 。另外, 匀称粗 Grid 可以用来 预防 浪费的 GPU 资源,或 匀称细 Grid 可以用来确保 拿获所有 性能,但这些选项的风险是在不太被 留神的地域 缺乏 模仿 性能或“ 适度消费”的计算资源 。 有了 Dynamic Parallelism, 可以在运行时以数据依赖 模式动态确定‐Grid解决 方案 。以粗 Grid开始, 模仿“放大” 留神的区域,同时幸免在 变迁不大区域中 毋庸要的计算 。 固然这 可以通过 使用一系列的 CPU 启动的内核来 实现,然而通过 综合数据、作为单个 模仿内核 部分启动额外工作让 GPU 细化 Grid 本身要 方便的多, 肃清了 CPU 的中断以及CPU和GPU中间的数据传输 。 ![]() 上面的例子 注明了在数值 模仿,采纳动态调整 Grid 的 好处 。为了满足峰值的精度要求,固定的分辩率仿真必须运行在整个 模仿域过于 详尽的分辩率上,而多分辩率 Grid 依据当地的 变迁为每个区域 利用正确的 模仿分辩率 。 |
![]() |
百度中 挑战卡皇TITAN!GTX 780 SLI巅峰测试 相关内容 |
![]() |
Google搜索中 挑战卡皇TITAN!GTX 780 SLI巅峰测试 相关内容 |