MPI+CUDA混合编程问题

我使用MPI和CUDA混合并行实现SpMV计算,GPU空间开辟和并行计算函数写在CU文件中,CPP文件负责调用CU文件中的函数。考虑到SpMV操作会执行多次,而矩阵数据只需要开辟和拷贝一次,所以我把空间开辟和并行执行写成了2个函数,数据通过指针进行对应。这样做程序不能正确执行!网络上查询到的资料都是将GPU空间开辟和kernel执行写到一个函数里面,但这样对于我的程序来说会增加很多额外的开销。请问有什么好的办法实现空间开辟和函数并行执行的独立吗,还是说我的编码有错误?