qt 发帖数: 9432 | 1 如果程序本身无法并行,是不是gpu就没什么优势了?
非cs专业的,最近在看cuda,一头雾水。 |
z**********6 发帖数: 68 | 2 是,GPU的加速条件比普通的多核并行要苛刻,并行块不能太大,线程数量要足够,内存coalesce访问等等,一般来说能vectorize的算法在GPU上会有比较好的加速比,比如linear algebra,image processing等等。 |
c*******h 发帖数: 1096 | 3 设计一个可并行的算法。即使新算法比老算法在非并行的情况下看着要傻,但是可能并行
一搞,优势就出来了
【在 qt 的大作中提到】 : 如果程序本身无法并行,是不是gpu就没什么优势了? : 非cs专业的,最近在看cuda,一头雾水。
|
qt 发帖数: 9432 | 4 如果是MCMC呢?下一个sample总是依赖前一个sample,这种情况怎么并行呢?我现在唯
一想到的就是把里面矩阵相乘什么的并行一下,但是sample本身没办法并行是吗?
并行
【在 c*******h 的大作中提到】 : 设计一个可并行的算法。即使新算法比老算法在非并行的情况下看着要傻,但是可能并行 : 一搞,优势就出来了
|
qt 发帖数: 9432 | 5 是,linear algebra应该能加速不少。
内存coalesce访问等等,一般来说能vectorize的算法在GPU上会有比较好的加速比,比
如linear algebra,image processing等等。
【在 z**********6 的大作中提到】 : 是,GPU的加速条件比普通的多核并行要苛刻,并行块不能太大,线程数量要足够,内存coalesce访问等等,一般来说能vectorize的算法在GPU上会有比较好的加速比,比如linear algebra,image processing等等。
|
c*******h 发帖数: 1096 | 6 如果算一个sample的过程可以高度并行的话,也算充分利用gpu了。
你这种流水线的下一个sample依赖前一个sample的模式,一般来说可以试一下
pipelining。不过pipelining是computation parallel的,而gpu是data
parallel的,所以不一定能做。看情况。
你也可以考虑能不能将一个sample变成一堆sample,下一堆sample依赖前一堆
sample,但同一堆sample里面各个sample是互不干涉的,可以并行。就看你
mcmc的算法设计了。
【在 qt 的大作中提到】 : 如果是MCMC呢?下一个sample总是依赖前一个sample,这种情况怎么并行呢?我现在唯 : 一想到的就是把里面矩阵相乘什么的并行一下,但是sample本身没办法并行是吗? : : 并行
|