单 cpu 多核为啥不用并行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
forgottenPerson
V2EX    问与答

单 cpu 多核为啥不用并行

  •  
  •   forgottenPerson 282 天前 via Android 1911 次点击
    这是一个创建于 282 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为何现在多核,不用并行,要用并发,是因为,l1,l2 是独立的,l3 缓存是共享的吗?在程序语言上也是支持并发,为啥程序语言上并发比比并行说的多?

    有懂的老哥解点惑吗?

    21 条回复    2025-01-07 00:03:46 +08:00
    forgottenPerson
        1
    forgottenPerson  
    OP
       282 天前 via Android
    单核并发好理解,多核为啥不用并行啊,之前上课的时候多核并不一定比单核快,但是在程序语言上并发为啥比并行流行。懂的老哥可以解点惑吗,我给金币。
    sagaxu
        2
    sagaxu  
       282 天前   1
    并发在多核 CPU 上就是并行,多核不能并行,那还要多核何用?
    forgottenPerson
        3
    forgottenPerson  
    OP
       282 天前 via Android
    @sagaxu 那为啥讨论的都是各种并发模式,明明现在都是多核,不应该讨论并行吗
    minami
        4
    minami  
       282 天前 via Android   1
    并行并发不是根据你的任务来的吗?说并发的多是因为 web 这块就是并发多,你要是搞科学计算就是并行多了
    forgottenPerson
        5
    forgottenPerson  
    OP
       282 天前 via Android
    但是多核,你程序被不同核执行,那不就是并行吗,咋还是再说并发。你不可能程序跑起来了,只在单核上执行啊,你在多核上执行,不就是并行吗。
    forgottenPerson
        6
    forgottenPerson  
    OP
       282 天前 via Android
    sagaxu
        7
    sagaxu  
       282 天前   1
    @forgottenPerson 怎么没有 https://www.jd.com/hprm/1713ebfed0a5edba7044.html

    通用编程语言,考虑的是并发,CPU 上的并行是 OS 任务调度器在多核 CPU 上的调度结果,这个过程不需要程序员感知。

    并行需要特定硬件支持,它不能自动获得,需要程序员编写特定代码才能实现,CUDA 和 OpenCL 就是例子。
    thingingWoods
        8
    thingingWoods  
       282 天前   1
    io 密集型任务并行用处不大??不懂瞎猜的。。
    leonshaw
        9
    leonshaw  
       282 天前 via Android   1
    CPU 核数和并发任务数是一个量级吗?
    foool
        10
    foool  
       282 天前   1
    "为何现在多核,不用并行,要用并发,
    为啥程序语言上并发比比并行说的多?"

    你这两个问题前提都错了。
    forgottenPerson
        11
    forgottenPerson  
    OP
       282 天前 via Android
    @leonshaw 是的,但是想不通的是,比如你有 8 个逻辑核,4 个物理核,我有 8 个 goroutine,每个 goroutine 执行一个任务,每个逻辑核执行 1 个 goroutine ,这不是并行吗,它的行为我如何预测,预测我不就涉及并行了。
    forgottenPerson
        12
    forgottenPerson  
    OP
       282 天前 via Android
    @foool 那老哥,正确的表述应该是什么
    mumbler
        13
    mumbler  
       282 天前   1
    我猜你的意思是多线程和多进程区别吧,多线程是自己管理线程之间的调度,多进程是操作系统来管理进程之间的调度

    这个问题,你跟大模型聊过吗,聊一会就清晰了吧
    minami
        14
    minami  
       282 天前   1
    @forgottenPerson #4 是个锤子,你到底想讨论什么层级的并行并发,不同层级上的 task 完全是不同的含义。就单纯并行和并发两个词的区别,你看看 StackOverflow 的高赞就知道了
    https://stackoverflow.com/questions/1050222/what-is-the-difference-between-concurrency-and-parallelism
    leonshaw
        15
    leonshaw  
       282 天前 via Android   1
    @forgottenPerson 如果恰好被 Go runtime 和操作系统调度到几个核上同时运行就是并行。一般大家更关心系统能并发处理的任务数,而不是并行数。
    hefish
        16
    hefish  
       282 天前
    哈哈哈哈哈哈。。。。
    forgottenPerson
        17
    forgottenPerson  
    OP
       282 天前 via Android
    @leonshaw 但是老哥,那你的言外之意不就是 go 运行时和操作系统调度器把协程调度到多个核上是个不常见的情况吗,但是问题来,了如果调度到多核这种情况不是普遍现象,而是恰好,那我其他的核不是浪费了,性能不是损失了吗
    wy315700
        18
    wy315700  
       282 天前   1
    @forgottenPerson #17
    如果想要精准调用多核进行并行操作。可以手动绑定核心的啊。

    https://www.duguying.net/article/set-cpu-affinity-binding-for-golang-program
    YsHaNg
        19
    YsHaNg  
       282 天前   2
    那你去读科学计算 openmp 文档不就满眼并行了 你不去看==人不说?
    RighHand
        20
    RightHand  
       282 天前 via Android   1
    可能是因为现代编程都是各种框架,隐藏了线程调度。导致感知不到并行能力。只能简单的说并发
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5813 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:19 PVG 14:19 LAX 23:19 JFK 02:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86