gpt4 book ai didi

cuda - 如何使用 CUDA 在 GPU 上运行 "host"函数?

转载 作者:行者123 更新时间:2023-11-30 17:08:54 24 4
gpt4 key购买 nike

我将在 GPU 上运行,例如 strcmp 函数,但我得到:

error: calling a host function("strcmp") from a __device__/__global__ function("myKernel") is not allowed

printf 可能无法工作,因为 gpu 没有 stdout,但像 strcmp 这样的函数预计可以工作!那么,我应该在代码中插入带有 __device__ 前缀的库中的 strcmp 实现还是什么?

最佳答案

CUDA 有一个标准库,记录在 CUDA 编程指南中。它包括用于支持它的设备(计算能力 2.0 及更高版本)的 printf() 以及assert()。不过,目前它还不包括完整的字符串或 stdio 库。

按照 Jason R. Mick 的建议实现您自己的标准库也许是可能的,但不一定是可取的。在某些情况下,将函数从顺序标准库移植到 CUDA 可能是不安全的——尤其是因为其中一些实现并不是线程安全的(例如 Windows 上的 rand())。即使它是安全的,也可能效率不高——而且它可能不是您真正需要的。

在我看来,最好避免使用 CUDA 中不受官方支持的标准库函数。如果您的并行代码中需要标准库函数的行为,请首先考虑您是否真的需要它:* 你真的要并行执行数千个 strcmp 操作吗?* 如果没有,您是否有数千个字符长的字符串可供比较?如果是这样,请考虑使用并行字符串比较算法。

如果您确定确实需要并行 CUDA 代码中标准库函数的行为,请考虑如何并行实现它(安全且高效)。

关于cuda - 如何使用 CUDA 在 GPU 上运行 "host"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33474339/

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