繁体   English   中英

M2 的循环计数霓虹灯?

[英]Cycle count neon for M2?

是否有关于 SIMD 在苹果 M1/M2 上有多少个周期的资源? 像 x86 https://uops.info/table.html或 agner fog? 我希望我能给予更大的赏金,但这就是我所有的代表

我从未在 ARM 机器上编程。 我看了一下 sse2neon
https://github.com/DLTcollab/sse2neon/blob/7bd15eac51e36bf7426052f8515358cb665d8c04/sse2neon.h

我首先查找的是 setzero。 我怀疑 dup 是通往 go 的方式,所以我尝试了 nanobench,发现 xor 速度更快,而 sub 本身并不相同。

有什么我可以查一下以获得一个大概的想法吗? 我的目标是M2

#include <arm_neon.h>
#define ANKERL_NANOBENCH_IMPLEMENT
#include "nanobench.h"

int32x4_t setzeroA()
{
    return vdupq_n_s32(0);
}
int32x4_t setzeroB()
{
    int32x4_t v;
    return vsubq_u32(v, v);
}
uint8x16_t setzeroC()
{
    uint8x16_t v;
    return veorq_u8(v, v);
}

int main() {
    ankerl::nanobench::Bench().run("Set", [&] {
        auto v = setzeroA();
        ankerl::nanobench::doNotOptimizeAway(v);
    });
    ankerl::nanobench::Bench().run("sub", [&] {
        auto v = setzeroB();
        ankerl::nanobench::doNotOptimizeAway(v);
    });
    ankerl::nanobench::Bench().run("xor", [&] {
        auto v = setzeroC();
        ankerl::nanobench::doNotOptimizeAway(v);
    });
}

这些来自 M1,但我怀疑 M2 是否有任何重大变化。

大: https://dougallj.github.io/applecpu/firestorm-simd.html

小: https://dougallj.github.io/applecpu/icestorm-simd.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM