0

假设我的 CUDA 内核有一长串参数。为方便起见,我将它们放在一个结构中:

struct params {
  int firstParam;
  float secondParam;
  ...
  bool lastParam;
}

调用内核时是否有缺点

myKernel<<<n,m>>>( params );

与第一次复制到常量内存相比?

cudaMemcpyToSymbol( paramsOnDevice, &paramsOnHost, sizeof(params), 0 );
4

1 回答 1

3

在计算能力 2.0 及更高版本的设备上,内核参数的大小限制为 4KB(请参阅编程指南)。这意味着如果您的结构非常大,那么您可能会遇到此限制,但否则行为或多或少是相同的,因为参数是通过常量内存传递的。

复制到符号的好处可能很小的一种情况是,您使用相同的参数多次启动相同的内核,显式复制意味着您只复制一次而不是每次。但是,我希望在大多数实际情况下收益很小 - 如果您担心,您可以衡量这一点!

于 2013-08-09T09:53:10.947 回答