话说如果P社出《维多利亚3》用GPU加速CPU计算?

  • d
    dumplingpro
    之前看别人讨论维多利亚3,我就在想这个。

    要是出维多利亚3的话,画面八成还是对显卡没啥需求可言的,但策略复杂度肯定要提高,运算量也会相应变大,足够让CPU0原地升天。
    但这些运算量里面,大头都是人口、商品、消费这些运算,虽然也有IF-ELSE逻辑,但其实是识字率大于10%=1%转换为工人,识字率大于20%=2%转换为工人这样的逻辑,完全是可以改写成多次加法/乘法运算,并且互相没有逻辑因果关系,很适合GPU加速。


    GPU加速在游戏和软件里并不少见,常见的就是GPU辅助计算物理引擎,还有一些科学计算、AI会用N卡的CUDA,算力堪比十几年前的超算(2000年人类最强超算的浮点算力,才超过了现在的1060,NV也是现在超算主要硬件供应商之一,记得提供了新增算力的40%?虽然浮点精度有差距,但游戏也不要求太高精度)。

    真-超算玩游戏了


    你看这维多利亚3要是用上了GPU加速……
  • R
    Redis
    GPU做逻辑运算的还没有把。

    用GPU做SQL这种的不是没有,但是场景和游戏完全不一样。游戏的实时性要求高,逻辑方面的吞吐量却小,GPU没啥优势。
  • s
    sawyer000
    一大堆逻辑计算,不是矩阵运算的话,GPU加不了速
  • アーシェス
    如果是语言的原始语句表达的逻辑那可能有点难度(不是做不到只是做不好),但如果是AI应用调库那就很容易根据不同的硬件后端来组织计算任务了,只不过对高层开发人员来说与硬件交互的这部分也很像汇编了。
  • L
    Lunamos
    游戏里最并行的东西是什么?图形。GPU是干什么的?搞图形的,这就是天然的契合。逻辑拿GPU当然也可以,比如文明、P社的逻辑可以拿GPU算,但要做出无bug的游戏程序出来难于登天。连多核都没用好,就先别想GPU了。
    一般来说除非天然SIMD的工作,如矩阵乘法之类足够robust的计算普及度较高以外,其他需要在大规模SIMD硬件上手写的逻辑因为编程框架繁琐(CUDA/OpenCL),硬件差距过大等等,都有大量的BUG等着你,用在扁平的科学计算里当然很常见,用在商业软件里都不算很多,遑论游戏了。至于现在依然会有人用着GPGPU诞生之前,利用图形API、shader做运算的hack,稳定性甚至都比GPGPU的框架要好。
  • d
    dumplingpro
    恩,但是非逻辑运算也不少,最常见的是辅助物理运算,现在已经整合到GPU了。

    比如维多利亚的POP,还有货物价格,如果优化算法的话,理论上很适合大批量并行运算。
  • 冰箱研会长
    同意, 虽然P社游戏整体有大量ifelse, 但很多数据运算都矩阵化, "Stellaris" 的贸易度, 人口产出这类等等...
    但这样一来, 估计P社对游戏内数据在内存中的调度方式就要改变...
    我没有研究过p社引擎的结构, 有没有懂的人来讲讲....
  • R
    Redis
    除非你的游戏逻辑运算能够变形成一系列的线性代数的集合,否则如果ifesle满天飞,还是不要想用gpu加速了.

    另外GPU的独占性很强,调度相比CPU要原始很多,如果逻辑计算卡了图形运算,这个就糟糕了。

    另一个巨大问题就是,没有统一的编程平台可以用。CUDA是N家独占的,OpenCL半死不活。所以你要做这个优化,要么两套都ship,要么自己开发一个公有的运行时,除非这个运行速度提**到100%,否则很难推
  • n
    notfind404
    还是等量子计算机民用了比较靠谱...
  • 冬眠的龙凰
    你是说以p🐍的技术力玩gpu加速?
  • d
    dumplingpro
    部分策略类游戏比较特殊,比如上面提到的维多利亚2,大量数据都是商品的价格、人口的民族和政治倾向,理论上都可以转换为大规模的矩阵加法乘法。
    (比如之前有人说的,货物价格包含运输成本,这就是个大型矩阵加法乘法)

    其实GPU加速最常见是物理引擎加速吧,也算是很成功了。
  • d
    dumplingpro
    看游戏把,维多利亚那种,大量的商品的价格、人口的民族和政治倾向运算。

    虽然IF-ELSE,但其实是识字率大于10% 转化率1%,识字率大于20%转化率2%这种IF-ELSE,完全可以改成非IF-ELSE运算。
  • f
    frosta
    想多了,商品能有多大量
    只要是人工设计出来的列举项就完全碰不到需要“大量”的边

    — from samsung SM-G975U, Android 10 ofS1 Next Goosev2.2.2.1