gpt4 book ai didi

CUDA:调用内核中的库函数

转载 作者:行者123 更新时间:2023-12-02 17:51:47 26 4
gpt4 key购买 nike

我知道内核中存在只能调用 __device__ 函数的限制。这会阻止我在内核中调用诸如 strcmp() 等标准函数。
此时我无法理解/找到原因。编译器不能只遵循 strings.h 等中的每个包含内容,同时内联对内核中的 strcmp() 的调用吗?我想我正在寻找的原因很简单,但我在这里遗漏了一些东西。
这是重新实现内核计算中所需的所有函数和数据类型的唯一方法吗?是否有具有此类重新实现的代码库?

最佳答案

是的,从内核使用 stdlib 函数的唯一方法是重新实现它们。但我强烈建议您重新考虑这个想法,因为您不太可能需要在 GPU 上运行使用 strcmp() 的代码。请添加有关您的问题的其他详细信息,以便提出更好的解决方案(我非常怀疑 GPU 上的串行字符串比较是您真正需要的)。

简单地为 GPU 重新编译所有 stdlib 几乎是不可能的,因为它很大程度上依赖于某些系统调用(例如内存分配),而这些系统调用无法在 GPU 上使用(嗯,在最新版本的 CUDA 工具包中,您可以从内核分配设备内存,但它不是“cuda-way”,仅受最新硬件支持,并且对性能非常不利)。此外,大多数功能的 CPU 版本对于 GPU 来说还远远不够“好”。因此,在绝大多数情况下,将普通 CPU 函数编译为 GPU 不会带来任何好处,因此编译器甚至不会尝试它。

关于CUDA:调用内核中的库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311288/

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