shared memory 和纹理存储器的使用问题

请教两个问题:
1、在shared memory中动态分配一个数组时,调用的内核函数怎么写呢?
比如说:
global void kernel(int a)
{
extern shared Complex sdata;

}

int main()
{ kernel<<<1,thread_num,???>>>(a)
}
在调用内核函数的时候,参数应该怎么写呢?
PS:我想知道的就是???的地方怎么写。

2、能不能举个使用纹理存储器的例子呢?看了几天,还是没学会使用。

大牛现身,请教!

kernel<<<1,thread_num,???>>>(a):问号处就是你需要的shared mem的字节数,这个数据当然是根据你所需要的而定了。

这个我知道。我想知道的是,现在我是动态分配的shared memory的数组,没定它的大小,我在哪里定它的大小呢?需要怎么写?初用,不大清楚。。。

kernal调用处,传得共享内存大小,貌似就是运行时的参数,不需要是常量。
难道还不能确定大小?你的意思是kernal内确定?

其实我就是想知道,我使用动态shared mem,在kernel中定义了动态数组,在调用处(<<<>>>)的参数需要怎么写,并且怎么把数据给动态数组。

在调用处,声明动态共享内存的大小,块内使用这一串存储空间。
在kernal运行时,将数据拷入共享内存。
cuda编程指南上有示例。

不明白你要问什么,你所谓的“在哪里定她的大小呢?需要怎么写?” 这个问题的答案就是,你想分配多少就分配多少,在<<<>>>中的第三个变量就可以用变量指定shared大小啊。