最近也在琢磨这个问题,我的电脑cpu是8线程的。我先用openmp创建8线程,其中一个线程负责cuda,其他做并行。如果线程之间完全独立还是可以的,如果线程之间需要通信可能麻烦点。而且如果想最求速度的话,CPU和GPU均衡负载却是个问题,虽然我也想了些办法,但效果不理想。网上有大神说可以用MPI分出两个节点,一个节点CUDA,一个节点omp,动态分配任务。另外可以看看CUDA异步调用,感觉可以实现这个问题。 另外最近我碰到一个问题,不知你能不能帮到我。我在cuda的kernel中创建了一N维数组,double的,只参与计算,不返回值。也就是每个线程都需要这么一个数组来暂存计算中间量。不知为何,当N取很大的时候,大概100000,kernel貌似就不计算了。是不是CUDA显存控制的问题。不知有没有解决办法
580
社区成员
2,919
社区内容
加载中
试试用AI创作助手写篇文章吧