问题标签 [memory-bandwidth]
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.
gpu - 澄清 GPU 带宽与 PCI Express 插槽传输率 (v1.x - x16) 的关系
只需要对与 PCI Express 传输速率相关的 GPU 带宽进行一些说明。它将帮助我了解显卡的实际工作原理......
所以要计算带宽:
因此,如果我的显卡在 GDDR3 上的总线宽度为 256 位,内存速度为 900MHz:
PCI Express v1.0 上的单通道具有 250MB/s 的传输速率,因此 16 通道将是 4GB/s。
令我困惑的是,接口(PCIe)的传输速率为 4GB/s,而显卡的传输速率为 57GB/s。
问:那么这不会因为接口只能传输4GB/s而造成瓶颈吗?
testing - STREAM 基准的向量函数
我目前正在为学校做一个小型研究项目,与它创建和管理的虚拟机相比,我要测试 Hypervisor 的内存性能带宽。
由于项目的时间框架,将只分析 STREAM 测试的向量函数之一。我的思考过程是查看“复制”函数的结果,因为这是最基本的函数,它不执行任何算术运算,如https://www.cs.virginia.edu/stream/ref 底部所述。 html 毕竟这是内存带宽性能测试。
我还没有找到任何可以证明或反驳我的理论的谷歌帖子。这里有没有人可以对这个话题有所了解?
c++ - 将字节转换为无符号整数的最快方法
unsigned char *
我有一个必须转换为整数的字节数组( )。整数用三个字节表示。这就是我所做的
这段代码很好地完成了它的工作,但是由于内存中的三个访问(特别是对于大的值size_tot
,按顺序3000000
),它非常慢。有没有办法更快地做到这一点并提高性能?
c++ - 我可以使用软件来测量发送信息的频率(以赫兹为单位)吗?
我有两台计算机,它们通过反射内存相互发送和接收数据。
使用时间戳我已经能够确定传输 32 位 int 的时间(在本例中为 0.2313 毫秒)。我需要知道以赫兹 (Hz) 为单位使用了多少带宽,以确保满足项目要求。是否有基于软件的方法(最好是 C++)来确定这一点?据我所知,我不能简单地在 bps 和赫兹之间转换。
gpu - 每个周期可以从 GDDR5 加载多少数据?
nVidia GTX980 拥有 224GB/s 带宽和 7Gbps 内存时钟。它的总线宽度是256bit。
我们能否计算出可以从 GDDR5 并行加载多少最大/最小数据?
我能从 224GB/s 除以 7Gbps 得到答案吗?
fortran - 使用内存带宽信息计算 HPC 应用程序的 mflop/s
我想在不运行应用程序的情况下计算 HPC 应用程序(NAS 基准测试)的 mflops(每个处理器每秒百万次操作)。我已经使用 Stream Benchmark 测量了我的系统(超级计算机)每个核心的内存带宽。我想知道如何通过获得内核的内存带宽信息来获得应用程序的每个处理器的 mflops。我的节点有 64GiB 内存(包括 16 个核心 - 2 个插槽)和使用所有物理核心的 58 GiB/s 聚合带宽。我的内核的内存带宽从 2728.1204 MB/s 到 Triad 功能的 10948.8962 MB/s 不等,这一定是因为 NUMA 架构。
任何帮助将不胜感激。
performance - 使用实际内存带宽时计算实际触发器/内核
我想使用以下信息计算 mflop/s/core 的实际数量:
我测量了 1 个节点中每个内核的实际内存带宽量,即 4371 MB/s。
如果我在一个节点上只使用一个内核(在这种情况下,节点的整个内存都可用于该内核),我还在一个节点上测量了 mflop/s/core,结果为 2094.45。所以我测量了该内核可用的内存带宽 = 10812.3 MB/s
所以现在我想计算内核具有实际内存带宽(4371MB/s)时的实际 mflop/s/core。
如果我这样计算,你认为它是否正确:
实际 mflop/s/core= (mflop/s/core * 实际内存 bw) / 已用内存带宽
任何帮助,将不胜感激。
c - 如何使用源代码测量每个节点的 MPI 基准?
我想知道如何测量每个节点的内存带宽(流基准)。我拥有的这个程序仅在一个节点上测量它,进程和线程的数量将如下所示:
它实际上是 mpi 和 openmp 的混合体。有没有办法指定节点并对每个节点进行测量?(假设我有 4 个节点)我想使用源代码而不是 slurm-batch 脚本来完成。我可以使用 process-ID 指定每个节点的第一个核心,但它如何每次在整个节点上运行测量(包括任意数量的核心)?
任何建议将不胜感激。
cuda - 跨步内存访问的有效内存带宽
假设我有一个执行跨步内存访问的内核,如下所示:
我知道步长为 2 的访问将导致 50% 的加载/存储效率,因为事务中涉及的一半元素没有被使用(成为浪费的带宽)。我们如何继续计算更大步幅的加载/存储效率?提前致谢!
c++ - Roofline 模型:计算运营强度
假设我有一个这样的玩具循环
我假设我的缓存线是64 字节(即足够大)。然后我将(每帧)基本上 2 次访问 RAM 和 3 次 FLOP:
- 1(缓存)读取访问:加载所有 3
x[i-1], x[i], x[i+1]
- 1个写访问:存储
y[i]
- 3 FLOP (1 mul, 1 add, 1 sub)
操作强度是ergo
OI = 3 FLOP/(2 * 4 字节)
现在如果我做这样的事情会发生什么
请注意,现在没有y
了。这是否意味着我现在只有一个 RAM 访问权限
- 1(缓存)读/写:加载
x[i-1], x[i], x[i+1]
,存储x[i]
或仍然有 2 个 RAM 访问
- 1(缓存)读取:加载
x[i-1], x[i], x[i+1]
- 1(缓存)写入:存储
x[i]
因为在任何一种情况下,操作强度OI都会不同。任何人都可以谈谈这件事吗?或者也许澄清一些事情。谢谢