我正在考虑实现sprintf()
(和snprintf()
,vsprintf()
,vsnprintf()
)-用于CUDA代码。编译器的标准C(和C ++)库不适用于GPU端的CUDA代码-并且通常不可用,因为主机操作系统功能无法在GPU上运行的代码以及可能出于其他原因而使用。
我的问题与我应该采取哪种方法有关:
- 仅从glibc中提取sprintf代码(即也提取所有依赖项);修改此代码以使其在GPU上运行。
- 采用GitHub上可用的独立sprintf实现之一(例如,this one很流行),并适应 that 。
- 获取/产生具有GPU功能的“ variadic sprintf”实现(这既不是C也不是C ++标准库的一部分),并在其之上实现
sprintf()
作为包装。
这三种方法的优缺点是什么?还有-我还缺少另一种方法吗?
注意:
- 让我们忽略许可问题,或者至少-让我们不要陷入许可的本质问题。
至少就这个问题而言,实现的速度/效率不是问题,因为预期的使用调试。如果愿意,可以考虑一下。