Device端数组分配及空间申请问题

我想要在global和device函数内使用大数组,可是最大的好像只能定义成float Arr[4000];但是我要用的数组远大于此,我有想,干脆在host端用cudamalloc分配好了算了,但是每个线程内都有用,线程调用的device函数也要用,要在device端申请老多了,而且统统传到global里,这样做一是数组太多,申请和传参都带来一定麻烦,二是用起来不方便,用着用着就蒙了,那个线程该用到哪个数组会记不清的。有没有类似于host端申请空间似的在device端也这样:float *MyArr=(float *)malloc(sizeof(float)*n);的分配方式给我分数组啊?