请教:如何实现数据共享的CUDA编程?

我想编写一个如下形式的程序:

#define MaxSize 4096
#define MaxThread 1024

int A[MaxSize];
#define struct
{
int A1[MaxSize];
}B;

B B0[MaxThread], B1[MaxThread];

…对A和B1进行赋值

int i, j;
for(i=0; i<MaxThread; i++)
{
for(j=0; j<MaxSize; j++)
B0[i].A1[j] = B1[i].A1[j] * A[j];
}
请问这个程序在CUDA下如何实现比较好?如何在各个进程间共享数组A?

用共享存储器啊
进程之间的共享只能通过共享存储器啊

由于每个块共享一组共享存储器,而我们要使用多个块,如何在程序里对多组共享存储器初始化?