问题标签 [flops]
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.
profiling - 如何使用 SW 或 HW 方法在 RISC-V 中获得 FLOPS?
我是 RISC-V 的新手。我想知道如何使用 SW 或 HW 方法获得 FLOPS。我尝试使用 CSR 来获得 FLOPS,但存在一些问题。
据我所知,如果我重新设计计算每个浮动操作事件的 hpmcounter,我可以通过使用 csr 读取指令获得 FLOPS。我知道基于火箭芯片的SiFive 的 U54-core 手册中有类似的设计。在手册中,我可以看到 SiFive 内核具有复杂的特征计数功能。此功能由 mhpmevent CSR 控制。如果我将 mhpmevent 的低八位设置为 0,并启用 [19-25] 位,我可以从 mhpmcounter 获取计数器值。我实际上想像 SiFive 核心一样设计这个领域。
我尝试模仿它进行FLOPS,但遇到了一些问题。
- 我无法访问 mhpmcounter,并且可以看到非法指令错误,如以下链接。 非法指令错误信息!!
我做了一个简单的测试代码并成功编译,但是当我使用尖峰和周期精确仿真器实现它时出现非法指令错误。两者都使用代理内核。
- 要访问 mhpmevet 和 mhpmcounter,很难从用户模式更改为 M 模式。在 RISC-V priv-spec 1.10 中,我发现 xRET 指令可以改变模式。以下文本是关于规范中的 xRET。
MRET、SRET 或 URET 指令分别用于从 M-mode、S-mode 或 U-mode 中的陷阱返回。执行 xRET 指令时,假设 xPP 保存值 y,x IE 设置为 x PIE;权限模式改为y;x PIE 设置为 1;并且 xPP 设置为 U(如果不支持用户模式,则设置为 M)。
如果有人知道,我希望看到详细的汇编代码。
- 我尝试修改
rocket-chip/src/main/scala/rocket/CSR.scala
以重新设计 CSR。这是唯一的方法吗?首先,我想使用尖峰来测试计数器值。我应该如何更改代码?
如果有人有其他想法或已经实现,请指出我。谢谢!
tensorflow - tensorflow tf.profile 计算的 FLOPs 是多少?
最近我使用 tf.profile 来计算 ResNet-v1-50 的 FLOPs。我得到 7084572224(7.08 GFLOPs ?)。但在原始论文中是 3.8 GFLOPs。
我在 VGG-19 上执行相同的操作,得到 5628853928(56.29 GFLOPs?),但它的实际价值是 196 亿 FLOPs。请注意,所有测试模型都在 tf.slim 中。
我的代码如下:
请有人帮助我。
performance - CPU 的 FLOPS 怎么可能远高于其时钟速度?
例如,现代 i7-8700k 据称可以执行 ~60 GFLOPS(单精度,源),而其最大频率为 4.7GHz。据我所知,一条指令必须至少需要一个周期才能完成,那么这怎么可能呢?
tensorflow - 解读tensorflow的FLOPs profile结果
我想分析一个非常简单的神经网络模型的 FLOPs,用于对 MNIST 数据集进行分类,批量大小为 128。按照官方教程,我得到了以下模型的结果,但我无法理解部分输出。
theimages_iter
和 thelabels_iter
是 tf.data 的迭代器,类似于占位符。
我使用此代码(相当于scope -min_float_ops 1 -select float_ops -account_displayed_op_only
tfprof 注释行工具中的代码)来分析 FLOP 并得到以下结果。
我的问题是
- 括号里的数字是什么意思?例如
random_uniform_1 (150/301 flops)
,什么是 150 和 301? - 为什么_TFProfRoot括号中的第一个数字是“--”?
- 为什么 Adam/mul 和 softmax_cross_entropy_with_logits_sg/Sub 的 flop 是 1?
我知道读这么久的问题令人沮丧,但是一个无法从官方文档中找到相关信息的绝望男孩需要你们的帮助。
tensorflow - 为什么 tensorflow 的 FLOPs 是 Caffe 的 macc 的 2 倍?
我正在尝试将模型从 caffe 重写为 tensorflow。为了确保我没有犯错,我数了一下 macc 和 Flops,然后我发现了这个有趣的事情:
例如,当输入一个 112x112x3 的图像,并用 32 个 3x3 的 kernel,stride=1 对其进行 conv2d 处理时,Caffe 中的 macc 为 2.71M,而 tensorflow 中计算的 FLOPs 为 5. 42M。
我想知道为什么会发生这种 2 倍的差异?
performance - 浮点运算 (FLOPs) 的定义是什么
我正在尝试使用 SIMD(在 ARM CPU 上)优化我的代码,并想知道它的算术强度(触发器/字节,AI)和触发器。
为了计算 AI 和 FLOPS,我必须计算浮点运算的次数(FLOPs)。但是,我找不到任何准确的 FLOP 定义。
当然,mul
, add
, sub
,div
显然是 FLOPs,但是移动操作、洗牌操作(例如_mm_shuffle_ps
)、设置操作(例如_mm_set1_ps
)、转换操作(例如_mm_cvtps_pi32
)等呢?
它们是处理浮点值的操作。我应该把它们算作 FLOPs 吗?如果不是,为什么?
Intel VTune 和 Nvidianvprof
或 PMU 等分析器通常计算哪些操作?
编辑:
FLOPS 包括哪些所有操作?
这个问题主要是关于数学上的复杂运算。
我还想知道处理以浮点值或向量作为输入的“非数学”运算的标准方法。
python - 使用线程在触发器中进行基准测试的 Python 代码
我无法使用线程在 python 中编写基准代码。我能够让我的线程工作,但我不能让我的对象返回一个值。我想获取这些值并将它们添加到列表中,以便计算翻牌。
创建类以执行线程
创建线程的函数
algorithm - 运行海量计算
我有这样的ac#代码
使用并行方法,它能够在我的 i7 处理器上每秒运行我的函数“getThePassphase()”10000 次。假设我想运行计算 1 quintillion 次 (10^18)。请问有没有hpc服务或者机房可以在一天内完成这样的任务?如果大多数服务使用 Linux 并且无法正常运行 c#,我可以设法将其转换为 c++
fftw - 如何理解 fftw 基准测试?
我阅读了使用多种 CPU 完成的 fftw 基准测试。但是,测量的单位是 MFLOPS,向量维度从小到大变化。我想知道执行单个反向或常规 fft 的微秒或毫秒。
如何将 MFLOPS 转换为秒?