之前一直在做单个GPU卡的并行,现在要做多个GPU的并行,主要目的是合并使用多个GPU的显存,有些个问题希望与大家交流一下:
①基本原理是什么?相比于单GPU并行, 要加进来哪些方法和概念?
②多GPU并行要求什么样的环境?Tesla C1060可不可以?TeslaC1060是否支持CUDA4.0的GPU卡之间不经过Host的数据互传?
③多GPU并行是单线程多GPU协作, 还是多个线程(每个线程一个GPU)之间的协作? 要涉及到多线程(CPU)那岂不是很麻烦?
④CUDA里的stream的概念是不是在此用得着?多stream异步并行?event呢?
估计不只我在面临着这些问题, 欢迎大家提出自己的问题和想法
希望有经验的大侠前辈略作指点, 不胜感激~
mep
2
你说的大部分是新特性,换Tesla 2XXX系列吧:lol
呵呵, 也想啊, 但是一个最低端的2070卡还要2W+, 一台4GPU的AMAX估计必须10W++++
现在有一台4*C1060的机器, 想着如果支持多GPU的话, 还是先在上面练习一下
不然直接搞一台新的, 等学会了, 搞不好又过时了
哎, 搞GPU太纠结
要是你想自己写程序,可以看看CUDA C的编程手册,里面有介绍。要是你想了解硬件,大家都在猜。
主要是想知道程序是怎么个做法, 硬件只是随便问一下…
现在正在仿照着SDK中的simpleMultiGPU在做, 使用到SDK中的两个头文件, 是CPU一对一控制GPU+多CPU的方法
可行, 但是总感觉不那么爽, 代码庞大, 参数复杂…
大家也可以试一下啊, 还比较好理解的
我现在也是仿照simplemultiGPU在做,但怎么感觉多块卡并没有并行,反而比串行起来的时间还长。。。是不是一对一线程控制GPU的开销也很大啊?