【转】为什么大多数游戏都不做多线程/多核优化?难点是什么?

这个回答非常形象,系统思维的模式。

------------------------------------------------------

作者:既让
链接:https://www.zhihu.com/question/52957429/answer/272333887
来源:知乎
多核肯定是难的。

主要是任务可分解性和结果可预期性。数据类的工作是很容易做到这点的。游戏并不是这种类型。

多核、多线程、多gpu也好。多并不能解决一切。甚至根本没用。多线操作良好与否主要还是软件的问题。或者说是逻辑设计的问题。机器可不知道你下面要干什么。


我觉得用交通来比拟是合理的。一个城市堵不堵,看什么?一是路面质量;二是道路宽度;三是路线分布;四是道路数量。你会发现堵的路总是那么几条。你额外增加其他道路并不能加速运转。这时候反而是道路宽度和质量更能直接体现作用了。相比而言就是频率和缓存。不合理的架构使得本来可以走另外可能存在路线的车也走了已经拥挤的路,这样也不会很快。

此外,为什么不是分得越多越好呢?用最简单的例子来说明。假设只有a,b两个点,那么他们来往就是2个线路。如果是a,b,c,那么是6条。如果是a,b,c,d,那么是12条。想想这个增长会有什么结果。任务分布给更多的点,就需要更多的交互。

交互越多,额外的事务就越多。就像网络一样,经过节点越多,延迟越高。

对于不可分解的任务。其他的都要等待。就算有能力也没用。

而且任务可能存在互锁的情况。你等别人,别人等你(或者其他人),然后最后别人又等你。这种东西是逻辑性的。不可预期。

还有就是万一不是核数问题呢?cpu和gpu任务不同。如果一部分任务本来是另一部分要做的,你怎么抬也没用。


我认为模糊性的,数量有大的复杂性肯定是很高的。首先模糊的,你难以确定问题到底是什么样。就像球队组建一样。不就是几个人吗?但是交易之后结果基本上没多少会和预期一样的。人就是这样,这种隐藏的交互效果的逻辑并不能看出来。量大,这种更加难以估计了。


不过我觉得,这也不是问题。主要是这方面经验太少了。游戏硬件、软件引擎、游戏本身都在变化。根本就没足够时间来寻找固定的模式。针对特定的硬件,设计高效引擎,应该能大幅提高性能。另外玩家都是从单核,简陋图形处理部件过来。设计思路当然也是跟着过去来的。如果多核、多gpu的玩家多,那么问题可能会集中处理,因而会有所改进。

好像图形技术并不是很久远的科技。可能和这个不成熟也有关系。cpu是科学计算相联系的。这些的基础研究早在几十年前就完成了。图形,尤其是虚拟现实都还是新东西。


还有就是最关键的一点。多核设计本身是反人类的。因为人的脑子是单核的。我们玩游戏都是操作一个逻辑主体在运行----我们都是单线程生物。设计者不也是这么想的吗?这种情况下,多核就是把原来是一件事硬生生分成几件事。有人以计算为例,说明如何多线程。不过你仔细想想,如果人没有刻意那么想,会那样操作吗?肯定是直接加减乘除的。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值