【发布时间】:2018-10-24 23:08:57
【问题描述】:
NPP 函数,更具体的 npps (https://docs.nvidia.com/cuda/npp/group__npps.html) 可以作为设备函数调用吗?
如果我创建一个全局函数,我可以在内部调用 npps 函数为 nppsMaxIndx_32f(计算向量的最大值)吗?
示例: 我有 100 个向量,每个向量有 10000 个浮点数,如果我在主机代码中执行此操作,我必须对 npp 函数进行 100 次调用
如果我创建一个包含 100 个线程的全局函数并在内部为每个向量调用 npp 函数,以便它们同时启动,这会起作用吗? nppsMaxIndx_32f可以作为设备函数调用吗?
【问题讨论】:
-
不,NPP 函数不能在设备代码中使用。 CUDA 工具包提供的大多数其他库(除了 Thrust)也不能。
-
"但只有在您不需要以前的数据进行计算时才能这样做。"这可能是不正确或误导性的陈述。如果您按顺序发出 2 个 npp 调用,并且第一个调用对 GPU 上的数据进行了修改,则第二个调用应该获取这些修改。
-
当然,这就是我想说的。每个呼叫都使用独立的数据。谢谢@RobertCrovella
-
每次调用不必使用独立的数据。第一次调用的结果可以被第二次调用使用。