【问题标题】:Square brackets after float4 vector typefloat4 向量类型后的方括号
【发布时间】:2014-11-17 16:04:00
【问题描述】:

我正在学习 cuda 教程;在某些时候,共享内存是动态分配的,如下所示: extern __shared__ float4[] buffer;

除了向量类型float4后面的方括号[]外,似乎很容易理解;他们的意思是什么?我为什么要写它们?

【问题讨论】:

标签: cuda shared-memory extern


【解决方案1】:

这用于动态共享内存,正确的方法是:

extern __shared__ float4 buffer[]

,不是

extern __shared__ float4[] buffer

当你使用这个时,你还必须在内核调用中使用分配内存的大小:

size_t blockSize = theBlockSize * theBlockSize
myfunc<<< NbBlocks, NbThreadsPerBlock , sizeof(float4) * blockSize>>>

【讨论】:

  • 好的,但是你写的第二种方式有什么问题?这意味着什么?
  • 第二种方式的问题是编译器会报错。
  • @Federico Gentile:这是 Robert Crovella 写的。你的数据类型是 float4 。数据是“缓冲区”。我认为在 java 中你可以写例如 'int [] buffer'但在 c 中你不能。
猜你喜欢
  • 2014-11-22
  • 1970-01-01
  • 2015-05-28
  • 2019-12-15
  • 2014-08-16
  • 1970-01-01
  • 2021-01-12
  • 2021-12-03
  • 2011-11-03
相关资源
最近更新 更多