cuda Unified Memory 会简化内存分配的代码编写量。
同时对于直接向gpu内存进行赋值,也可以获得很高的效率。
但是,记住,使用Unified Memory分配的内存,在进行kernel内核调用的时候,其性能是低下的。
在追求性能的时候,应该避免使用Unified Memory。
而Unified Memory的应用场景,一般也不会追求性能的。
而这里有一篇讨论的文件,可以参考:http://stackoverflow.com/questions/21986542/is-cudamallocmanaged-slower-than-cudamalloc
而本人此时:
预先利用cudaMallocManaged和cudaMalloc都分配sizoef(float) * 19200000
cuda 7.5
gpu 卡:titanx
然后进行简单加法操作:
__global__ void add(float *num) {
int tid = blockDim.x * blockIdx.x + threadIdx.x;
num[tid] += tid;
}
add<<<19200000 / 192, 192, 0, stream>>>(data);
结果:
cudaMallocManaged:耗时90ms.
cudaMalloc:耗时1ms.
性能相差很大