gpt4 book ai didi

c++ - 通过使用函数指针在游戏引擎数学库中使用 SIMD ~ 好主意?

转载 作者:太空狗 更新时间:2023-10-29 21:02:02 27 4
gpt4 key购买 nike

我从 14 岁起就开始阅读游戏引擎书籍(那时候我什么都不懂:P)几年后,我想开始为我的游戏引擎编写数学基础。我一直在思考如何设计这个“图书馆”。 (我的意思是“有组织的文件集”)每隔几年就会出现新的 SIMD 指令集,我不希望它们被浪费掉。 (如果我对此有误,请告诉我。)

我希望至少具有以下属性:

  • 让它能够在运行时检查它是否有 SIMD,如果有就使用 SIMD,如果没有就使用普通的 C++ 版本。 (可能会有一些通话开销,这值得吗?)
  • 如果我们在编译时已经知道目标,则使其能够针对 SIMD 或普通 C++ 进行编译。这些调用可以内联并适合交叉优化,因为编译器知道使用的是 SIMD 还是 C++。

编辑 - 我想让源代码可移植,这样它也可以在 x86(-64) 以外的其他设备上运行

所以我认为使用函数指针是一个很好的解决方案,我会在程序开始时将其设为静态并进行初始化。以及合适的函数(例如矩阵/vector 的乘法)将调用。

您认为这种设计的优点和缺点是什么(哪个更重要?),甚至可以创建具有上述两种属性的设计吗?

基督徒

最佳答案

重要的是获得正确的粒度来决定调用哪个例程。如果您在太低的级别执行此操作,那么函数调度开销就会成为一个问题,例如如果通过某种函数指针调度机制调用而不是说只是内联,那么只有一些指令的小例程可能会变得非常低效。理想情况下,特定于体系结构的例程应该处理合理数量的数据,以便函数调度成本可以忽略不计,而不会太大以至于由于为每个支持的体系结构编译额外的非特定于体系结构的代码而导致代码显着膨胀。

关于c++ - 通过使用函数指针在游戏引擎数学库中使用 SIMD ~ 好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16478514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com