美文网首页深度学习
cuda加速初体验

cuda加速初体验

作者: 逆风g | 来源:发表于2019-05-31 10:18 被阅读0次

最近训练网络时,有个cpu版本的loss,非常耗时,最后把它写成了cuda版,大大减少了训练所需要的开销,一起来对比下:

  • 基本情况:
    batch_size:1
    channel:20
    width:300
    height:300
    累积梯度次数:10
    打印step:10
    总iter数:25000
  • 情况1:
    模式:CPU
    loss个数:1
    一次前向传播则需要遍历1*20*300*300=180w次,打印一次需要遍历180w*10*10=1亿8000万次,打印耗时40秒,训练完需要40*2500/3600≈27个小时。
  • 情况2:
    模式:CPU
    loss个数:5(深监督)
    一次前向传播则需要遍历1*20*300*300=180w次,打印一次需要遍历180w*10*10=1亿8000万次,打印耗时86秒,训练完需要90*2500/3600≈59个小时。
  • 情况3:
    模式:GPU
    loss个数:1
    并行计算,打印耗时28秒,训练完需要28*2500/3600≈19个小时。
  • 情况4:
    模式:GPU
    loss个数:5(深监督)
    并行计算,打印耗时31秒,训练完需要32*2500/3600≈21个小时。

总结

我的CPU比较low,好一点的CPU情况会好很多(测试过我同学的电脑,cpu版:1个loss打印耗时25秒,5个loss时打印耗时47秒,她显卡2080ti),我的显卡是1080ti,可以看到并行计算耗时大大减少,尤其是有多个loss时,时间也从近2天半的时间降到不到1天的时间。此外一个好的CPU也是非常非常关键的。
附1:
cpu版5个loss:


gpu版5个loss:

附2:
开辟cuda中一维线性内存:

Dtype* ptr;
CUDA_CHECK(cudaMalloc(&ptr, size_))

释放cuda中内存:

CUDA_CHECK(cudaFree(ptr))

申请好ptr空间可以直接在__global__kernel中使用,例如ptr[i]=1.0

相关文章

网友评论

    本文标题:cuda加速初体验

    本文链接:https://www.haomeiwen.com/subject/aonitctx.html