在编译时为CUDA printf()连接char *字符串

时间:2016-03-26 13:30:30

标签: c++ string cuda string-concatenation

在CUDA设备端代码中,我们无法访问std :: string和其他标准库的好东西,我们的字符串是char *,char数组或文字常量,作为上述之一传递。

无论如何,假设我想要一个printf()的变体,它总是预先设置线程的索引。我不能使用两个printf调用,因为它会与其他线程的printf交错。我不能冲刺 - 除非我实施。

我可以很容易地做到这一点就是使用一个宏(为了简单起见,只需采用x维并忽略块索引):

#define tprintf(format_str, ... )  \
    printf("%u: " format_str, threadIdx.x, __VA_ARGS__)

但是我们不喜欢宏...变量数量参数问题很容易被可变参数模板处理,但是格式字符串连接 - 不是那么多。

我想避免在运行时连接字符串,不得不使用malloc-then-free等。是否有一种简单的(ish)方法可以做到这一点?

0 个答案:

没有答案