美文网首页深度学习
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