我可以在CUDA设备端代码中使用vararg函数吗?

问题描述 投票:0回答:1

我知道我们不能用可变数量的参数编写CUDA内核:

Is it possible to have a CUDA kernel with varying number of parameters?

(至少不是C可变参数;我们可以使用C ++可变参数模板。)

但是非内核设备端代码,即__device__函数呢?这些可以是varargs函数吗?

cuda variadic-functions gpgpu
1个回答
0
投票

幸运的是,这不是真的。我们can在设备端代码中使用varargs函数!

例如:

#include <stdio.h>
#include <stdarg.h>

__device__ void foo(const char* str, ...) 
{
    va_list ap;
    va_start(ap, str);
    int arg = va_arg(ap, int);
    printf("str is \"%s\", extra arg is %d\n", str, arg);
}

compiles很好(并且可以工作,只要您实际传递一个字符串和一个int)。

© www.soinside.com 2019 - 2024. All rights reserved.