【发布时间】:2013-12-27 13:47:05
【问题描述】:
我有一个推力使用的函子,我需要动态指定它的长度,比如
struct func {
const int h;
func(const int _h): h(_h) {}
__device__ __host__
void operator()(int id) {
double data[h];
}
};
我不知道该怎么做,因为 h 必须是一个已知数字,但 h 直到运行时才知道。
【问题讨论】:
-
是否存在预期的、相对较小的 h 值集?
-
@JoeZ 这部分代码在设备上,不能使用 std::vector。只是指向设备内存的原始指针
-
@talonmies h 变化很大,在我的例子中它从 20 到 2000 不等。它是神经网络中隐藏神经元的数量。
-
啊,好的。我会删除我的评论。
-
@user2684645:乍一看,这似乎是一个非常糟糕的设计选择。每个线程都必须静态或动态分配
data的副本。每个线程 16kb 的本地或堆内存确实会影响性能。这真的是你想做的吗?