• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lwjef
7.72D
V2EX  ›  程序员

高通 CPU 浮点这么快吗。。。

  •  
  •   lwjef · Nov 24, 2023 · 13260 views
    This topic created in 1074 days ago, the information mentioned may be changed or developed.
    wget https://github.com/xiexiexx/PPLA/raw/main/billionsort/billionsort.cpp
    
    clang++ -O3 billionsort.cpp
    
    ./a.out
    
    • redmi note12t 7+gen2 16+1t miui14.0.25 termux witout root

    有没有 8gen3 和 9300 的老哥跑一下让我长长见识

    • iphone11 a13 4+128g ios17.1.1 a-shell 跑的 1 亿
    [Documents]$ ./1x_millionsort_with_output 100
    Data size: 100000000
    0.0027 minutes
    0.02695 minutes
    0.478667 minutes
    
    • 7700k 32g xubuntu2204

    Supplement 1  ·  Nov 26, 2023
    • 浮点性能快表达不准确,换个问题,为啥这台手机上这么快呢?
    67 replies  •  2023-11-27 00:13:59 +08:00
    pubby
    pubby
    Nov 24, 2023
    1
    $ uname -a
    Darwin Mac-mini.local 22.6.0 Darwin Kernel Version 22.6.0: Wed Oct 4 21:25:26 PDT 2023; root:xnu-8796.141.3.701.17~4/RELEASE_X86_64 x86_64
    $ sysctl machdep.cpu.brand_string
    machdep.cpu.brand_string: Intel(R) Core(TM) i9-9900T CPU @ 2.10GHz
    $ ./a.out
    0.0942143 minutes
    0.277907 minutes
    2.31389 minutes
    lwjef
    lwjef
    OP
    Nov 24, 2023
    2
    @pubby #1 这个 i9 也太慢了。。。
    pubby
    pubby
    Nov 24, 2023
    3
    @lwjef 低压 u, 内存频率也不高 :D
    kikitte
    kikitte
    Nov 24, 2023
    4
    AMD 5950x ArchLinux

    [kikitte@archlinux test]$ clang++ -O3 billionsort.cpp
    [kikitte@archlinux test]$ ./a.out
    0.0128345 minutes
    0.954518 minutes
    1.46679 minutes
    hefish
    hefish
    Nov 24, 2023
    5
    这个 sort 也跟 cpu 线程数有关吧
    penzi
    penzi
    Nov 24, 2023
    6
    首先这个 sort 是单线程的
    lslqtz
    lslqtz
    Nov 24, 2023
    7
    M1 Pro 感觉差不多.
    这是单核浮点吧.
    lwjef
    lwjef
    OP
    Nov 24, 2023
    8
    @maggch97 #6 不是 io 项目单核下多线程也没用吧
    lwjef
    lwjef
    OP
    Nov 24, 2023
    9
    @lslqtz #7 嗯嗯,就是高通的 fpu 有点离谱
    beetlerx
    beetlerx
    Nov 24, 2023
    10
    OS: Debian GNU/Linux trixie/sid x86_64
    CPU: AMD Ryzen 7 7840H w/ Radeon 780M Graphics (16) @ 5.137GHz

    $ clang++-16 -std=c++2a -O3 ./billionsort.cpp
    $ ./a.out
    0.00709458 minutes
    0.757148 minutes
    1.45406 minutes
    看起来 7840H 单核浮点可以和 5950x 掰掰
    Philippa
    Philippa
    Nov 24, 2023
    11
    .., larry@DESKTOP-OVBIJM9
    ....,,:;+ccllll ---------------------
    ...,,+:; cllllllllllllllllll OS: Windows 10 רҵ□□ x86_64
    ,cclllllllllll lllllllllllllllllll Host: ASUS
    llllllllllllll lllllllllllllllllll Kernel: 10.0.19045
    llllllllllllll lllllllllllllllllll Uptime: 14 hours, 59 mins
    llllllllllllll lllllllllllllllllll Packages: 3 (scoop)
    llllllllllllll lllllllllllllllllll Shell: bash 5.2.15
    llllllllllllll lllllllllllllllllll Resolution: 3840x2160
    DE: Aero
    llllllllllllll lllllllllllllllllll WM: Explorer
    llllllllllllll lllllllllllllllllll WM Theme: Custom
    llllllllllllll lllllllllllllllllll Terminal: Windows Terminal
    llllllllllllll lllllllllllllllllll CPU: AMD Ryzen 9 7950X3D (32) @ 4.200GHz
    llllllllllllll lllllllllllllllllll GPU: Caption
    `'ccllllllllll lllllllllllllllllll GPU: NVIDIA GeForce RTX 4090
    `' \*:: :ccllllllllllllllll GPU
    ````''*::cll Memory: 16818MiB / 130802MiB
    ``

    clang++ -std=c++2a -O3 main.cpp

    0.0153925 minutes
    0.683383 minutes
    1.30065 minutes

    不是很懂,为什么这么慢
    lwjef
    lwjef
    OP
    Nov 24, 2023
    12
    @Philippa #11 还有 15 个核在围观 QAQ
    Philippa
    Philippa
    Nov 24, 2023
    13
    @lwjef 哈哈哈,那要怎么设
    penzi
    penzi
    Nov 24, 2023
    14
    @lwjef ? 我不知道你是不是了解 CPU 性能,了解代码。

    你这个代码只能测出 CPU 跑 std::sort 这样的单线程负载的性能,速度受到 Memory, Cache 的影响
    lwjef
    lwjef
    OP
    Nov 24, 2023
    15
    @maggch97 #14 那么是高通不够快吗 (狗头
    penzi
    penzi
    Nov 24, 2023❤️3
    16
    这能叫做"浮点性能"吗,下面的回帖很多人也被误导了
    lwjef
    lwjef
    OP
    Nov 24, 2023
    17
    @Philippa #13 就是跑的一个核,已经是贴子里 x86 最快的了
    lwjef
    lwjef
    OP
    Nov 24, 2023
    18
    @maggch97 #16 那为啥高通这么快啊,请教下。。。
    Philippa
    Philippa
    Nov 24, 2023
    19
    @lwjef 感谢科普
    bigtan
    bigtan
    Nov 24, 2023
    20
    我这个 14700KF 怎么这么慢

    0.0179123 minutes
    0.263897 minutes
    3.26288 minutes
    lwjef
    lwjef
    OP
    Nov 24, 2023
    21
    @bigtan #20 系统平台或者编译器的影响吧。
    penzi
    penzi
    Nov 24, 2023
    22
    @lwjef 大概是你跑错代码了吧,跑了个 1e8 的
    bigtan
    bigtan
    Nov 24, 2023
    23
    @lwjef 没开优化//
    lwjef
    lwjef
    OP
    Nov 24, 2023
    24
    @maggch97 #22 ...跑了好多次 可以参考这里 https://weibo.com/5819320755/NtlsOeNah
    lwjef
    lwjef
    OP
    Nov 24, 2023
    25
    @bigtan #23 感觉跑出来应该会超过上面的 7950
    forgottenPerson
    forgottenPerson
    Nov 25, 2023 via Android
    26
    Xiaomi 11 termux without root
    0.133285 minutes
    0.286336 minutes
    1.66493 minutes
    penzi
    penzi
    Nov 25, 2023
    27
    @lwjef 那打一条日志把 V.size()打出来吧
    lwjef
    lwjef
    OP
    Nov 25, 2023
    28
    @maggch97 #27 你找个安卓跑一下
    billlee
    billlee
    Nov 25, 2023
    29
    这和浮点有关系吗?测的是缓存和内存性能
    lwjef
    lwjef
    OP
    Nov 25, 2023
    30
    @billlee #29 那意思是高通缓存内存赛高?。。。
    Philippa
    Philippa
    Nov 25, 2023
    31
    7950x3D 加了编译优化后……

    clang++ -std=c++2a -O3 -Ofast -march=native -funroll-loops -flto main.cpp

    0.0153663 minutes
    0.0828322 minutes
    1.29281 minutes
    nuk
    nuk
    Nov 25, 2023
    32
    感觉和浮点数的精度有关,建议生成 1.0 2.0 3.0 ...的浮点数组,然后用整数随机数把他们打乱。如果随机数分布均匀的话,排序时间应该是稳定的。
    felixlong
    felixlong
    Nov 25, 2023
    33
    分配 7.5G 内存。然后只字不提每台设备的内存大小,那还比个毛线啊。
    BBBOND
    BBBOND
    Nov 25, 2023 via Android
    34
    s23 跑完闪退了,爆内存了吧
    bigtan
    bigtan
    Nov 25, 2023
    35
    @lwjef windows 平台的 cl 编译的,开的 O2

    0.0180589 minutes
    0.0676992 minutes
    1.45122 minutes
    xiaotianhu
    xiaotianhu
    Nov 25, 2023
    36
    2017 的 16 寸 MBP ,2.6G 的 i7-6920HQ
    0.069159 minutes
    0.151773 minutes
    2.32275 minutes
    比手机都慢啊~
    xiaofeilongyy555
    xiaofeilongyy555
    Nov 25, 2023
    37
    xiaomi 13ultra 8gen2 16+512 termux without root 性能模式
    0.0415852 minutes
    0.114332 minutes
    0.441386 minutes
    xiaofeilongyy555
    xiaofeilongyy555
    Nov 25, 2023
    38
    13u 清理缓存后有进一步提升
    0.0221216 minutes
    0.118988 minutes
    0.465569 minutes
    L4Linux
    L4Linux
    Nov 25, 2023 via Android
    39
    用标准库里面的函数来比 fpu 性能没啥意义。
    bsfx2
    bsfx2
    Nov 25, 2023
    40
    基础款 M3 (24 GB)

    $ ./a.out
    0.00883733 minutes
    0.108414 minutes
    1.31298 minutes
    penzi
    penzi
    Nov 25, 2023
    41
    @xiaofeilongyy555 和楼主一样的 cortex X2 的大核,那看来这个核心跑这个任务异乎寻常的快。比上面另一个小米 11 888 的 cortex x1 快了不止一倍
    xiaofeilongyy555
    xiaofeilongyy555
    Nov 25, 2023
    42
    @maggch97 8gen2 用的是 3.2 GHz – Cortex-X3 ,888 是 2.84GHz (Cortex-X1)
    penzi
    penzi
    Nov 25, 2023
    43
    @xiaofeilongyy555 不知道有没有非小米机型的数据
    lwjef
    lwjef
    OP
    Nov 25, 2023
    44
    @nuk #32 我抽空用 int 改写个试试,业余程序员具体细节不是很懂。
    @felixlong #33 都来比高低了那不整个 16G 内存
    @BBBOND #34 s23 就 8g 太抠门了
    @maggch97 #41 我没少个 0 跑算是清白了。。。
    lwjef
    lwjef
    OP
    Nov 25, 2023
    45
    @L4Linux #39 至少说明高通的 fpu 配安卓做了一些微小的工作让数据看起来不错。
    lovestudykid
    lovestudykid
    Nov 25, 2023
    46
    看到 iPhone 11 比 M1 Max 快的时候就应该明白一定是哪里出了问题
    lovestudykid
    lovestudykid
    Nov 25, 2023
    47
    @lovestudykid 看错了,跑的不是一个东西...
    tool2d
    tool2d
    Nov 25, 2023
    48
    2014 年的 PC 电脑

    0.021993 minutes
    0.132118 minutes
    1.66888 minutes

    打不过年轻人了。
    msg7086
    msg7086
    Nov 25, 2023
    49
    浮点性能不是应该看 AVX/AVX512 之类 SIMD 跑浮点的性能吗?
    L4Linux
    L4Linux
    Nov 25, 2023 via Android
    50
    @lwjef 先控制一下变量吧。你难不成觉得 std::vector 实现都是一样的、而且是 header only 的?
    c0xt30a
    c0xt30a
    Nov 25, 2023
    51
    单线程,而且是 sort ,跟浮点数表现无关,主要看 CPU 频率的样子。
    katsusan
    katsusan
    Nov 25, 2023
    52
    同 arch 比较,像 Zen 和 xxLake 看指令吞吐延迟. 如果是 x86 和 arm 相比,这时候都是 tight loop,x86 的前端解码瓶颈被弱化,应该不会比 arm 阵营差那么多.
    dahakawang
    dahakawang
    Nov 25, 2023
    53
    7.4G 的数据量,即便不考虑内存不够的情况,也有可能是内存性能 bounded 的原因,不妨试试比较用 cache 大小的数据量进行多轮 benchmark ?
    iwdmb
    iwdmb
    Nov 25, 2023
    54
    $ lscpu | grep Model\ name
    Model name: 13th Gen Intel(R) Core(TM) i7-13700K
    $ ./billionsort
    0.0281303 minutes
    0.0913962 minutes
    1.14076 minutes
    iwdmb
    iwdmb
    Nov 25, 2023
    55
    Rorysky
    Rorysky
    Nov 25, 2023
    56
    莫非你是 算法老师?
    e3c78a97e0f8
    e3c78a97e0f8
    Nov 25, 2023
    57
    浮点性能都是看加减乘除乃至线性代数的,哪有用浮点数比较来定义浮点性能的
    Donahue
    Donahue
    Nov 25, 2023
    58
    3700x @4.2Ghz

    0.0260537 minutes
    0.115618 minutes
    1.66068 minutes

    虽然时间用了比较长,但是日常感知不大,软件都挺流畅的
    lwjef
    lwjef
    OP
    Nov 26, 2023
    59
    浮点性能快表达不准确,换个问题,为啥这台手机上这么快呢?

    @msg7086 #49 是的,高通这么快可能是 Hexagon DSP 有加速
    @L4Linux #50 具体细节我是真不懂,但是快是为啥
    @c0xt30a #51 高通的频率也不是最强的啊
    @katsusan #52 高通和苹果 m1 比数据上也有差距
    @dahakawang #53 高通的内存性能从前两个时间来看相较 x86 和 m1 不太行,为啥最后一个时间那么短。。。
    @Rorysky #56 这个程序是算法老师写的,估计是为了测试 std::sort 的时间复杂度是线性对数 O(nlogn)
    @e3c78a97e0f8 #57 是的,是我表达错误,你说的没问题
    billlee
    billlee
    Nov 26, 2023
    60
    会不会是随机数生成器有区别,先预先生成一个固定的数据序列保存在文件里,各个平台用同一份数据跑排序试试?
    cyy911
    cyy911
    Nov 26, 2023
    61
    M3MAX
    0.00784537 minutes
    0.113421 minutes
    1.39678 minutes
    cyy911
    cyy911
    Nov 26, 2023
    62
    8Gen3
    0.0407101
    0.131629
    2.03484
    是不是降频了啊
    holulu
    holulu
    Nov 26, 2023
    63
    随机生成的数组乱序程度都不一样,std::sort 的排序过程也不一样。这个代码即使在同一个机器上跑多次,结果都会差距很大。应该用同一份数据在不同机器上跑的结果来比较才有意义。
    paopjian
    paopjian
    Nov 26, 2023
    64
    risc 短指令的优势?试试有没有其他高级指令的?
    xixun
    xixun
    Nov 26, 2023 via iPhone
    65
    高通有堆浮点吧,跑分好看
    hez2010
    hez2010
    Nov 26, 2023
    66
    Windows 11, i7-13700K, DDR5 内存但频率只有 4000MHz:

    msvc /O2:
    0.0217156 minutes
    0.072249 minutes
    1.54053 minutes

    clang -O3:
    0.021577 minutes
    0.0523916 minutes
    1.54663 minutes
    memorycancel
    memorycancel
    Nov 27, 2023
    67
    12th Gen Intel(R) Core(TM) i9-12900T
    ❯ ./a.out
    0.0288894 minutes
    0.760386 minutes
    1.34341 minutes
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1309 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 21:02 · PVG 05:02 · LAX 13:02 · JFK 16:02
    ♥ Do have faith in what you're doing.