__constant__的奇怪行为

时间:2019-07-10 09:44:17

标签: cuda constants

以下代码

#define CUDA_BOTH __host__ __device__

struct array {
    CUDA_BOTH inline array() {}  // LINE1
    CUDA_BOTH inline array(double* d) : _data(d) {}
    double* _data;
};

struct test_t {
    array x1;
    array x2;  // LINE2
};

struct mytest_t : public test_t {
};

__constant__ test_t g_test;    // LINE3
__constant__ mytest_t g_mytest;   // LINE4

int main(){
    return 0;
}

无法编译并显示错误

error: dynamic initialization is not supported for a __constant__ variable

LINE4上。显然问题出在LINE1上。但是,我在那里允许空构造和带参数的构造函数。

奇怪的行为是,即使LINE3只是从mytest_t继承而没有添加任何字段,test_t上的定义也不会给出任何错误。

此外,如果我评论LINE2,一切正常!

有没有办法使这项工作有效?还是有人可以解释不一致的行为?

0 个答案:

没有答案