zoukankan      html  css  js  c++  java
  • yolo v3配置darknet GPU设置

    darknet YOLO 编译使用GPU

    Darknet在GPU上运行可以得到500倍的提速,编译使用GPU要求显卡是Nvidia卡并且正确安装了CUDA。

    GPU环境下的编译配置都是在 /darknet/Makefile 文件中定义的,GPU环境的编译有3点更改需要注意。

    1. 更改Makefile前两行GPU和CUDNN的配置:

    GPU=1

    CUDNN=1

    2. 更改CUDA的路径

    48~51行,在"ifeq ($(GPU), 1)"语句块中修改为自己的CUDA安装路径,更改前默认路径如下:

    ifeq ($(GPU), 1) 

    COMMON+= -DGPU -I/usr/local/cuda/include/

    CFLAGS+= -DGPU

    LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand

    例如修改为:

    ifeq ($(GPU), 1)
    COMMON+= -DGPU -I/usr/local/cuda-8.0/include/
    CFLAGS+= -DGPU
    LDFLAGS+= -L/usr/local/cuda-8.0/lib64 -lcuda -lcudart -lcublas -lcurand

    23行,修改NVCC的路径:

    NVCC=/usr/local/cuda-8.0/bin/nvcc


    3. 修改ARCH配置

    如果经过1和2的配置修改后编译的darknet运行可能会报以下错误:

    Loadingweights from yolo.weights...Done!
    CUDA Error:invalid device function
    darknet: ./src/cuda.c:21: check_error: Assertion `0' failed.
    Aborted (core dumped)

    这是因为配置文件Makefile中配置的GPU架构和本机GPU型号不一致导致的。
    更改前默认配置如下(不同版本可能有变):

    ARCH= -gencode arch=compute_30,code=sm_30
          -gencode arch=compute_35,code=sm_35
          -gencode arch=compute_50,code=[sm_50,compute_50]
          -gencode arch=compute_52,code=[sm_52,compute_52]
    #      -gencode arch=compute_20,code=[sm_20,sm_21] This one is deprecated?
    # This is what I use, uncomment if you know your arch and want to specify
    # ARCH= -gencode arch=compute_52,code=compute_52

    compute_30表示显卡的计算能力是3.0,几款主流GPU的compute capability列表:
    •     GTX Titan x : 5.2
    •     GTX 980      : 5.2
    •     Tesla K80    : 3.7
    •     Tesla K40    : 3.5
    •     K4200         : 3.0

    所以Tesla K80对应compute_30,Tesla K40c对应compute_35,Titan X对应compute_52,根据自己的GPU型号的计算能力进行配置,例如配置为:


    ARCH= -gencode arch=compute_35,code=compute_35

    重新编译即可。

    CUDA官方说明文档:http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#virtual-architecture-feature-list

  • 相关阅读:
    jsp初识
    OAuth2.0
    微服务参考案例
    3.0技术架构落地
    聚合层改进意见-彭泉锋-2018.10.31
    图片分步加载(解决图片load函数刷新不加载问题)
    IOS iframe宽高问题(来至stackoverflow)
    jquery easy-ui 分页插件的运用(给td添加事件,获取汇总内容)
    JS 获取当前日期(yy-mm-dd HH-MM-SS)
    JQ iframe 子元素找父级 的元素
  • 原文地址:https://www.cnblogs.com/yumoye/p/10548714.html
Copyright © 2011-2022 走看看