问题标签 [kepler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - 全局写入中的内存合并
在 CUDA 设备中,全局内存写入中的合并与全局内存读取中的合并一样重要吗?如果是,如何解释?在这个问题上,早期的 CUDA 设备和最新的设备之间是否存在差异?
cuda - 增加实现的占用率并不会线性提高计算速度
我有一个 CUDA 程序,其中内核寄存器将最大理论达到的占用率限制为 %50。因此,我决定对那些在块线程之间保持不变并且在整个内核运行期间几乎是只读的变量使用共享内存而不是寄存器。我不能在这里提供源代码;我所做的在概念上是这样的:
我的初始程序:
我将上面的程序更改为:
现在块内的扭曲线程执行广播读取以访问新创建的共享内存变量。同时,线程不会使用过多的寄存器来限制实现的占用。
第二个程序的最大理论占用率等于 %100。在实际运行中,第一个程序的平均占用率为 ~%48,第二个程序的平均占用率为 ~%80。但问题是净加速的提高大约是 %5 到 %10,这比我预期的提高入住率的预期要低得多。为什么这种相关性不是线性的?
考虑下面来自 Nvidia 白皮书的图片,我一直在想,当实现占用率为 %50 时,例如,一半的 SMX(在较新的架构中)内核一次处于空闲状态,因为其他内核请求的资源过多会阻止它们积极的。我的理解有问题吗?还是对上述现象的解释不完整?还是添加__syncthreads();
和共享内存访问成本?
cuda - 关于 Kepler K20Xm 上的双精度单元 (DPU)
根据Kepler 架构白皮书,SMX 具有192
CUDA 内核和64
双精度单元 (DPU)。对于 K20Xm,14
SMX 的内核总数2688
,这意味着只计算 CUDA 内核。那么 DPU 的用途到底是什么,它们的用途与内核有什么关系?
我的想法:
a) CUDA 核心不能进行双精度运算,只有 DPU 可以。因此,当 DPU 忙时,CUDA 内核可用于其他工作。
b) CUDA 内核不知何故需要一个双精度单元来执行双精度操作,因此只有128
CUDA192
内核可用于其他东西。
干杯安迪
cuda - Kepler 架构的加载/存储单元 (LD/ST) 和特殊功能单元 (SFU)
在Kepler 架构白皮书中,NVIDIA 声明 SMX 上有32
特殊功能单元 (SFU) 和32
加载/存储单元 (LD/ST)。
SFU 用于“快速近似超越运算”。不幸的是,我不明白这应该是什么意思。另一方面,在SFU 的特殊 CUDA 双精度三角函数中,据说它们只能在单精度下工作。这在 K20Xm 上仍然正确吗?
LD/ST 单元显然是用于存储和装载的。通过其中一项是否需要任何内存加载/写入?它们也被用作单一经线吗?换句话说,当前是否只有一个 warp 正在写入或读取?
干杯,安迪
java - 如何在 Eclipse 4.3 (Kepler) 应用程序中实现帮助?
我有一个 E4 RCP 应用程序,我需要向它添加一个帮助系统。正如我从同一个论坛中的一篇名为Eclipse e4 和 org.eclipse.help.ui的帖子中了解到的那样,“似乎目前纯 Eclipse 4 代码(如 Eclipse juno 4.2 中)缺乏对帮助的支持...... ”。这个问题在开普勒中解决了吗?我添加了 org.eclipse.help.ui 和 org.eclipse.help.webapp 但我不知道如何实现处理程序来打开帮助内容。
orbit - vpython) 如何模拟开普勒第二定律?
我对python很陌生,但我需要通过vpython模拟开普勒第二定律!到目前为止,我已经完成了轨道,但我不知道如何对扫掠运动进行编码以及如何对 r、theta 等进行编码。有人可以帮忙吗?
http://en.wikipedia.org/wiki/File:Kepler-second-law.gif 这就是我想做的事情!谢谢您的帮助!
cuda - Nvidia 的 Kepler 的 L1 缓存吞吐量是多少?
我想知道 Kepler 的 L1 缓存(只读“纹理”和普通缓存)中的吞吐量、延迟和银行数量。
在 CUDA 程序中,我通过不同的线程多次读取相同的数据,我需要知道我是否受 L1 吞吐量的约束,我在任何 Nvidia 的文档中都找不到此信息,任何帮助将不胜感激.
编辑:我使用的是 K20 卡。
caching - 使用 nvprof 在 CUDA 计算能力 3.x 上分析 L2 缓存
我在分析计算能力 3.5 的 CUDA 卡上的 L2 缓存时遇到问题。在 Kepler (3.x) 中,来自全局内存的负载只缓存在 L2 中,从不在 L1 中。我的问题是如何使用 nvprof(命令行分析器)来查找我的全局负载在 L2 缓存中达到的命中率?我已经查询了我可以收集的所有指标,涉及 L2 疼痛的指标是:
我得到的唯一命中率是来自 L1 的读取。但是对全局内存的读取永远不会来自 L1,因为它们没有缓存在那里!还是我在这里错了,这正是我想要的指标?
令人惊讶的是(或没有)有一个指标给出了全局内存读取的 L1 命中率。
对于开普勒来说,这可能是非零的吗?
干杯!
cuda - 每 mp 的开普勒块数?
我在 这里阅读开普勒白皮书
开普勒最多支持 16 块 / mp。
但是 threads/blocks = 1024 和 threads/mp = 2048 ,因此 blocks/mp = 2 。
我在这里错过了什么吗?
cuda - 英伟达开普勒洗牌是“破坏性的”吗?
我正在使用新开普勒的 shuffle 指令在 CUDA 上实现并行缩减,类似于: http ://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/
我正在搜索给定矩阵中的行的最小值,在内核的末尾我有以下代码:
我的块是 16*16,所以一切正常,使用该代码,我在同一个内核的两个子行中得到了最小值。
现在我还需要返回矩阵每一行中最小元素的索引,所以我打算用“if”语句替换“min”并以类似的方式处理这些索引,我被困在这段代码中:
没有任何 cudaErrors,但内核现在返回垃圾。尽管如此,我已经解决了这个问题:
因此,分配新的 tmp 变量以潜入相邻的寄存器为我节省了一切。现在的问题是:开普勒洗牌指令是否具有破坏性?从某种意义上说,两次调用相同的指令不会发出相同的结果。我没有为那些说“my_reg > __shfl_down(my_reg,8,16)”的寄存器分配任何东西——这增加了我的困惑。谁能解释我两次调用 shuffle 有什么问题?我几乎是CUDA的新手,所以欢迎对傻瓜进行详细解释