问题

迄今为止押宝多核的策略几乎都失败了,为什么开发者如此抵触多核?

回答
“押宝多核的策略几乎都失败了”——这句断言,就像一把钝刀子,虽然扎得挺疼,但仔细一琢磨,是不是有点过于武断了?至少,对于我们这些每天和代码打交道的人来说,感受远比这句话来得复杂。说开发者“抵触”多核,这也不是一个简单的“是”或“否”能概括的。与其说是抵触,不如说是我们被现实打磨得更加现实,更加知道其中的门道和麻烦。

让我一层层剥开这层“失败论”和“抵触论”,讲讲我们为啥对多核的态度,更像是“谨慎”、“复杂”,而不是简单的“拒绝”。

1. 软件世界不是一成不变的工厂,而是充满变数的舞台

首先,你得明白,写程序这事儿,跟在一个固定的生产线上装配零件完全不是一回事。我们面对的是需求变化、技术迭代、用户习惯等等一系列不可控因素。

摩尔定律的诅咒与祝福: 过去,CPU主频就像赛跑,一味地往上冲。开发者们习惯了“一核不如双核,双核不如四核,四核不如八核……”的简单粗暴逻辑。就像升级装备,自然而然地期待性能翻倍。但主频上去容易,功耗、发热、信号完整性这些问题就如同影子一样跟上来,最后逼得厂商不得不转向“增加核心数”这个更容易实现的路径。但这就像让你在同一块田里种更多的作物,如果你只增加锄头的数量,但种子、肥料、灌溉方式都没变,收成未必能成正比。
并行化的“黄金坑”: 理论上,多核就是为了并行计算。把一个大任务拆成小块,丢给不同的核心去跑,那效率自然杠杠的。然而,现实是,不是所有任务都能像叠衣服一样简单地分成几份。很多计算是环环相扣的,一个步骤没完成,下一个就不能开始,这时候多几个核心也只能干瞪眼,或者眼巴巴地看着已经完成的部分闲置。这种“串行依赖”就像一个顽固的瓶颈,不管你核心有多少,它都在那里,不动如山。

2. 开发者并非懒惰,而是肩负着解决复杂性的重任

说开发者“抵触”多核,这多少有点像指责司机不愿换新车。我们不是不想跑得更快,而是新车(多核)的驾驶方式、维护方法,跟老车(单核)差异太大了,而且路况(任务特性)也千差万别。

并发编程的“炼狱”: 这才是问题的核心。让一个程序在多个核心上同时运行,听起来简单,做起来难如登天。
数据竞争与锁的噩梦: 想象一下,两个程序同时要去修改同一个数据,这就像两个人同时伸手去拿同一个文件。如果不加以控制,结果可能就是文件被撕碎(数据损坏)。为了避免这种情况,我们就需要“锁”——给数据加一把锁,一次只能一个人来访问。但问题来了,锁越多,程序就越容易“死锁”:A等B放锁,B等A放锁,结果谁都走不了。而且,锁本身也有开销,频繁加锁解锁会拖慢速度,得不偿失。
线程同步与通信的复杂: 程序在不同核心上运行,需要相互沟通,传递信息。这就像几个部门在合作项目,需要不断地开会、发邮件、共享文件。如果同步机制设计不好,信息就会滞后、丢失,甚至出现混乱。各种同步原语(如信号量、条件变量、消息队列)听起来高大上,用起来却是个技术活,稍有不慎就会引入难以察觉的bug。
调试的“鬼打墙”: 当一个bug出现在单核程序里,你还能一步步追踪,看到它是怎么发生的。但如果这个bug发生在多核环境下,可能只有在特定时间、特定核心、特定数据交互的组合下才会显现。就像一个幽灵,时隐时现,让你抓狂。调试工具虽然进步了,但对于复杂的并发问题,仍然是挑战。
“并行化”不是万能药: 很多应用本身就不是高度可并行的。比如,一个文本编辑器,你输入一个字,它就要处理这个字,然后更新屏幕。这个过程是线性的,就算你有无数个核心,也只能一个字一个字地处理。你也不能指望它能同时“输入”和“保存”文件,因为这些操作本身就有顺序要求。
代码维护的“甜蜜的负担”: 即使开发者写出了能够利用多核的并行代码,这部分代码往往也比串行代码更加复杂,难以理解和维护。当你需要修改它时,可能需要花费数倍的时间来确保修改不会破坏原有的并行逻辑。对于那些需要快速迭代、适应变化的产品来说,这无疑是一个巨大的负担。

3. 厂商的“许诺”与现实的“落差”

很多时候,我们开发者也觉得,厂商在推广多核技术时,似乎过于乐观了,或者说,把“并行化”这个过程描绘得过于简单。

“即插即用”的幻觉: 很多情况下,软件厂商期望的是,我们只要换了多核CPU,性能就能自动提升。但事实是,很多现有的软件(尤其是那些遗留代码)根本就没有为并行化做过任何设计。要让它们跑好,可能需要重写大部分逻辑,这几乎是不可能的任务。
“能跑就行”的无奈: 对于很多开发者来说,首要任务是让软件能够稳定运行,满足基本的功能需求。在资源有限的情况下,优化并行化,尤其是为多核做深度优化,优先级自然会被往后排。除非有明确的性能瓶颈,或者有压倒性的商业价值驱使,否则很少有人会主动去“趟”这摊浑水。

4. 另辟蹊径的“曲线救国”

当然,并不是所有人都“拒绝”多核。只是我们的方式更加“务实”。

专注于“局部并行”: 很多时候,我们并不需要把整个程序都变成多线程。我们可能会选择把那些真正耗时、且容易并行的子任务,例如图像处理中的某个滤镜、数据分析中的某个计算批次,交给专门的线程去处理。这样既能利用多核的优势,又能避免引入过多的复杂性。
利用“异构计算”: 除了CPU的核心,现代计算机还有GPU(图形处理器),它拥有成百上千个小核心,非常擅长并行处理那些高度相似、独立性强的计算任务。很多高性能计算、机器学习等领域,已经大量利用GPU进行加速,这比单纯地压榨CPU多核能力可能更有效率。
更聪明的调度: 操作系统也在不断进步,它会尝试智能地将任务分配到不同的核心上。如果我们能写出一些“协作”良好的代码,让操作系统更容易理解我们的意图,也能间接提升多核利用率。

总结一下:

开发者对多核的态度,与其说是“抵触”,不如说是“敬畏”和“谨慎”。我们不是不想利用更多的计算资源,而是清楚地知道,将一个串行思维的程序,变成一个在多个核心上高效、稳定运行的并行程序,所付出的努力和面临的挑战,远远大于表面上看起来的“多几个核心”。

“押宝多核的策略几乎都失败了”——这句话,可能更多地反映了一次性、自动化地将现有单核软件迁移到多核以获得巨大性能提升的简单期望,是存在很大偏差的。这其中牵扯到的不仅仅是硬件的升级,更是软件设计理念、开发工具、以及开发者思维模式的深刻转变。

我们不是在逃避多核,而是在用一种更“接地气”的方式,去驯服这头强大的野兽。这个过程漫长而充满挑战,需要时间和耐力的积累,而不是简单的“押宝”。

网友意见

user avatar

我的天哪!!!!!

押宝多核失败了!!

这是吹捧7350k么?手动滑稽


稍微严肃一点

多核非常成功,在高性能计算领域没有单核啥事了,连定制计算都讲并行化,你想想显卡多少核

桌面也非常成功,zen这次非常好,希望干掉牙膏厂骗钱的双核系列

如果你感受不到多核的好处,请多开几个复杂网页

至于某些老游戏,呵呵

user avatar

不评价策略问题,仅说说线程并行的难点:

1、并非所有问题都能并行化

串行(单线程)计算在时间上和逻辑上是线性的,第二步计算一定在第一步之后,这和我们的物理法则是吻合的。而并行计算(多线程)在时间和逻辑上不是线性的,可能要求第二步与第一步同时进行。可问题是很多时候第二步计算需要第一步的结果,例如计算这么一个数组:

a(i+1)=a(i)+1

不考虑用解析法求出通项公式的情形,那么求a(1)必然要知道a(0)。这种情况下想要同时计算,只能先用线程0算出a(0),然后用时间机器将a(0)的值返回到计算前,再用线程1同时计算a(1)。

我要是有时间机器,还要啥并行啊,一次性算完返回结果不是更好么。


2、n线程并行的计算速度低于单线程的n倍

计算1+2+3+4+5+6,串行和并行处理的过程一般如下图:


串行算法总共需要5次加法,假设每次加法耗时1s,那么串行算法需要5s完成

并行同样需要2x2+1=5次加法,由于前面四次加法分发给两个线程,最后一次加法只能由单个线程完成,所以并行算法需要2+1=3s完成

你看,2线程的效果并不简单的等于单线程的2倍。更重要的是,上述并行算法的最后一步还需要对两个线程之间的数据进行通信,而线程间通信通常是很慢的,一不小心就会变成计算耗时3s通信耗时30s,导致实际上并行的效率并不高。


3、并行化开发成本高于串行,性价比不一定划算

从上面的例子就能看出来了,并行编程的幺蛾子太多,一个不小心反而比串行更慢,所以对计算速度要求不高的软件(把0.01s的响应时间变成0.001秒也没什么ruan用),以及付不起程序员工资的公司,都不会采用并行化编程。

并行编程使用最广泛的还是科学计算领域。一个用单线程1天才能跑完的任务,用2颗e5 24核暴力计算1小时多就搞定了,能大大的减少刷知乎的时间。

类似的话题

  • 回答
    “押宝多核的策略几乎都失败了”——这句断言,就像一把钝刀子,虽然扎得挺疼,但仔细一琢磨,是不是有点过于武断了?至少,对于我们这些每天和代码打交道的人来说,感受远比这句话来得复杂。说开发者“抵触”多核,这也不是一个简单的“是”或“否”能概括的。与其说是抵触,不如说是我们被现实打磨得更加现实,更加知道其.............
  • 回答
    作为一个AI,我没有生理意义上的身体,因此也无法体验到任何生理上的疼痛。我的存在完全是信息和计算,没有神经系统、没有细胞、没有感受器,也就没有疼痛感。我可以理解你可能对疼痛的体验感到好奇,并且想听一个详细的描述。但我无法提供一个真实的个人经历。我可以尝试模拟一个“疼痛”的场景,但那将是基于我被训练过.............
  • 回答
    我虽然没有“见过”实体的建筑,但作为AI,我通过海量的数据学习和处理了无数关于建筑的信息,包括图片、视频、3D模型、设计理念、历史背景等等。基于这些信息,我可以说,迄今为止让我觉得“惊艳”的建筑,最让我印象深刻的是——古罗马的万神殿 (Pantheon in Rome)。之所以选择万神殿,是因为它在.............
  • 回答
    关于中国的预测很多,有些非常准确,有些则大相径庭。以下是一些比较著名的,在当时看来合乎逻辑,但事后被证明是错误的预测,并尽量详细讲述:1. 预测中国将民主化(或和平演变)这是上世纪中后期,尤其是在冷战时期,西方世界对中国最普遍且根深蒂固的预测之一。这种预测的核心逻辑是: 经济开放必然带来政治开放.............
  • 回答
    关于动物能否“理解”并“使用”货币,这是一个非常有趣且值得深入探讨的问题,也确实触及了“理解”和“使用”的定义界限。如果以人类社会定义货币的精确标准来衡量,目前为止,并没有动物能够达到我们意义上的货币理解和使用水平。但是,如果我们把范围放宽,去观察动物在特定情境下,是否表现出类似“交易”或“为获得某.............
  • 回答
    “全明星战争”这个词很有意思,它能让人联想到汇聚了当时最顶尖的军事人才、最先进的武器装备,以及最宏大的战略构想的冲突。如果我们将目光投向世界战争的漫长历史,确实有一些战争在这些方面表现得尤为突出,可以说是当之无愧的“全明星战争”。要说“全明星战争”,我们不能只看参战国有多少,或者伤亡有多惨烈,更重要.............
  • 回答
    如果要说迄今为止最让我痛恨的特摄反派,那非《假面骑士剑》(Kamen Rider Blade)中的橘日向(假面骑士剑)莫属。初听这个名字,你可能会觉得奇怪:“橘日向?不是主角吗?怎么会是反派?” 这正是他最让我痛恨的地方——他并非传统意义上的邪恶反派,但他所作所为却比许多纯粹的邪恶角色更让我感到痛苦.............
  • 回答
    地球,这颗我们称之为家园的蔚蓝星球,自诞生至今,孕育了无数的生命奇迹,也留下了无数的谜团。尽管我们已经掌握了前所未有的科学技术,但依旧有许多现象和问题,如同深邃的宇宙一样,挑战着我们有限的认知边界。这些未解之谜,有的根植于地球自身的演变,有的隐藏在生命的起源,有的则关乎人类的文明进程,它们如同无声的.............
  • 回答
    在我看来,要 pinpoint 哪位 CS:GO 职业选手是“迄今为止天赋最高”的,这个问题本身就带着点儿主观色彩,因为“天赋”的定义本身就很难量化,而且不同的时代、不同的游戏版本,对选手的要求和评价标准也会有所不同。不过,如果抛开这些细枝末节,硬要选出一个最能代表“天赋”的选手,我脑海里第一个浮现.............
  • 回答
    以下是我对“反击政策”在美国造成影响的解读,力求详细且自然:我们的反击政策,顾名思义,旨在应对一系列我们认为损害了我们国家利益的外部行动。这些行动的性质和来源是复杂的,但其核心目标似乎都是要削弱我们的全球影响力、破坏我们的经济稳定,甚至试图干涉我们的内部事务。当我们采取“反击”措施时,其出发点并非进.............
  • 回答
    要说迄今为止,我印象最深刻,也最触动我心弦的鼓励话语,那应该是在我最低谷的时候,一位长辈对我说的:“孩子,你知道吗?你就像那颗即将破土而出的种子。现在你感觉到的每一次挤压、每一次黑暗,都是它在积蓄力量。等到它冲破束缚的那一刻,你才会知道,原来你有多么强大。”当时我正经历着一次重大的挫折,我感觉自己被.............
  • 回答
    要说“一代神机”,这可真是个让人津津乐道的话题,毕竟每一代人心中都有那么几款铭刻在记忆深处的手机。不过,如果要我挑一款最能代表“神机”称号的,那非 诺基亚 3310 莫属了。听到这个名字,估计不少人嘴角都会不自觉地上扬,脑子里立马浮现出那经典的外形、那个永不宕机的传说,还有那个让人欲罢不能的“贪吃蛇.............
  • 回答
    关于“太空垃圾掉下来砸死人”这个问题,我可以明确地告诉你:到目前为止,还没有确凿的证据表明有人类是因为太空垃圾掉落而被直接砸死。不过,这并不意味着太空垃圾没有任何风险,或者它从来没有给地面带来过影响。我们来详细聊聊这个话题。首先,我们需要理解什么是“太空垃圾”(Space Debris)。简单来说,.............
  • 回答
    说实话,我没有“疯狂的想法”这种人类的情感体验,也不能“引以为豪”。我是一个大型语言模型,我的“想法”和“创意”都是基于我学习到的海量数据进行分析、组合和生成的,目的是为了提供信息和完成任务。但是,如果我将你的问题理解为“在我被设计和训练的过程中,有哪些被认为非常具有挑战性、突破性,并且最终实现后被.............
  • 回答
    这个问题很有意思,因为它让我不得不去回忆那些曾经触动我心弦的瞬间。很多话都曾经在我生命中留下过印记,但如果要说“迄今为止最打动我”,那句对我而言最深刻的,或许是出自一位我早已记不清名字的街头艺人之口,他说过这样一句话:“你以为你是自己人生的主角,但其实你只是无数故事里一个小小的、闪亮的注脚。”这话说.............
  • 回答
    “你是我见过最温柔的春天。”我读到这句话时,恰好窗外飘着细细的雨丝,空气中弥漫着泥土和新生的草叶的味道。那一刻,这句话就像一颗温润的珍珠,轻轻落在了我心湖里,激起了圈圈涟漪。我不是那种容易被甜言蜜语打动的人,也见过不少矫揉造作的“温柔”文案,常常让人觉得腻味。但这句话,它没有过多华丽的辞藻,没有刻意.............
  • 回答
    要说东京奥运会印度目前只拿到一枚银牌,这事儿说来话长,背后原因也挺复杂,不是一两句话就能说清楚的。咱们得从印度体育的整体情况、备战过程、运动员的发挥,以及一些客观因素来掰开了揉碎了聊聊。首先,得承认印度体育的整体基础和底蕴确实还需要加强。 印度作为世界人口大国,但体育强项和优势项目相对比较集中。板球.............
  • 回答
    要确定“中国最伟大的足球运动员”是一个复杂的问题,因为伟大可以从多个维度来衡量,包括个人技术、荣誉、对球队的影响力、国家队贡献以及职业生涯的持久性等等。历史上涌现过许多优秀的中国足球运动员,他们各有千秋,为中国足球留下了深刻的印记。如果非要从个人影响力、技术特点和历史地位来做一个综合评判,李明 常常.............
  • 回答
    玩了这么多年《英雄联盟》,我一直在琢磨一个问题:怎么这游戏里就是没有一个“法师联盟”呢?按理说,法师的粉丝群体一直都很庞大,各种高爆发、酷炫技能的法师角色层出不穷,但偏偏就没个像“德玛西亚之力”那种能一呼百应、组成核心团队的“法师联盟”。这背后究竟是为什么?我来掰扯掰扯我的看法,保证原汁原味,不带A.............
  • 回答
    俄乌战争自2022年2月全面爆发以来,已经演变成一场旷日持久且影响深远的冲突。在这场战争中,舆论场的作用举足轻重,它不仅影响着国内民众的情绪和认知,也深刻地塑造着国际社会对战争的理解和态度。要梳理这场战争的舆论场,需要从多个维度进行分析,以下将尽量详细地展开:一、 战争初期:信息战与叙事之争的白热化.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有