编程科技探索

分工合作更快

一件事拆成几份一起做,这就是并行计算。

7-10岁6分钟编程 · 并行计算 · 计算机
分工合作更快

一个人搬 100 块砖要一天,10 个人一起搬只要一小时——这就是分工合作的力量。电脑也一样:一件事拆成几份,让几个 CPU 核心一起做,能快好几倍。这种“同时干好几件事”的计算方式,叫“并行计算”。天气预报、动画渲染、AI 训练,都靠它才能跑得动。

你知道吗

你知道吗?超级计算机有几十万个核心同时干活,一秒能算几十亿亿次!中国“天河”和“神威”超级计算机都曾是世界最快。

怎么拆怎么合

并行计算要把任务拆成几份,分给不同核心同时算,最后再把结果合起来。比如算 1 加到 100,可以让一个核心算 1 到 50,另一个算 51 到 100,两个加起来——快一倍。渲染一部动画电影,每帧可以分给不同电脑同时画。搜索网页时,几千台电脑同时找,再把结果合给你。

不过并行也不简单。如果几个核心要改同一个数据,可能打架:一个在加、一个在减,结果乱套。所以要加“锁”,让它们排队改。而且不是所有任务都能拆——比如“先做完 A 才能做 B”的任务,就没法并行。所以并行计算提升有限:10 个核心不一定快 10 倍,可能只快 5 倍,因为有些部分必须串行。

  • 并行计算:任务拆几份,多核心同时做
  • 多核 CPU、显卡 GPU 都能并行
  • 并行要小心“抢同一数据”的冲突
  • 有些任务能拆、有些不能拆
  • 超级计算机有几十万核心并行

并行计算让很多不可能变可能。AI 训练要算几十亿次,靠一个核心要算几百年,但几万个核心并行只要几天。天气预报要把全球切成无数小块算,也靠并行。你玩的大型游戏画面,靠显卡里几千个小核心并行画。可以说,没有并行计算,就没有今天的 AI 和 3D 游戏。

动手试试

动手玩:找 3 个朋友,每人分一摞牌数有多少张。一个人数 30 张要 30 秒,3 个人同时数各 10 张只要 10 秒——体会并行的加速。再想想:如果牌要先按大小排好,3 个人能一起排吗?(可以分份排再合并)。但如果要“一张一张按顺序数”,能并行吗?(不能,必须串行)。把能并行和不能并行的家务列出来,想想为什么。

人多力量大,核心多算得快。——编程小语