Skip to content

Commit

Permalink
DarkNet on CUDA vNext ⭐
Browse files Browse the repository at this point in the history
  • Loading branch information
Piotr Sowa committed Aug 28, 2021
1 parent 61c9d02 commit 16880bc
Show file tree
Hide file tree
Showing 72 changed files with 10,562 additions and 1,684 deletions.
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,19 @@ opencv/
convnet/
decaf/
submission/
cfg/
#!# cfg/
darknet
libdarknet.*

.fuse*

# CMake build #
build/

# CLion #
cmake-build-debug/
.idea/

# OS Generated #
.DS_Store*
ehthumbs.db
Expand Down
8 changes: 8 additions & 0 deletions .idea/darknet-pjreddie.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions .idea/darknet.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

875 changes: 875 additions & 0 deletions .idea/workspace.xml

Large diffs are not rendered by default.

322 changes: 322 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR)

set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CUDA_ARCHITECTURES 52)

project(darknet LANGUAGES C CXX CUDA)

option(DARKNET_CPU "Enable CPU support" OFF)
option(DARKNET_OPENCV "Enable OpenCV support" ON)
option(DARKNET_OPENMP "Enable OpenMP support" OFF)
option(DARKNET_GPU "Enable OpenCL support" ON)
option(DARKNET_ARM "Enable ARM support" OFF)
option(DARKNET_BENCHMARK "Some Benchmark Stats" OFF)
option(DARKNET_LOSS_ONLY "Loss Only Stats" OFF)
option(DARKNET_TESTING "Build the unit tests" OFF)
option(DARKNET_DEBUG "Enable debug mode" OFF)
option(DARKNET_STATIC "Build static library" ON)
option(DARKNET_SHARED "Build shared library" ON)
option(DARKNET_NO_BINARY "Do not build binary" OFF)

include(GNUInstallDirs)

include_directories("include" "src")

set (DARKNET_DEFINITIONS "")
set (DARKNET_BINARY bindarknet)
set (DARKNET_LIBRARY libdarknet)
set (DARKNET_LIBRARY_STATIC libdarknet_s)

if (DARKNET_DEBUG OR DARKNET_TESTING)
list (APPEND DARKNET_CFLAGS "-g")
else()
if (DARKNET_OPENMP)
list (APPEND DARKNET_CFLAGS "-openmp")
endif()
# list (APPEND DARKNET_CFLAGS "-Wfatal-errors")
# list (APPEND DARKNET_CFLAGS "-Wno-unused-variable")
# list (APPEND DARKNET_CFLAGS "-Wno-unused-result")
# list (APPEND DARKNET_CFLAGS "-Wno-deprecated-declarations")
list (APPEND DARKNET_CFLAGS "-O2")
endif()

# Find OpenCV
if (DARKNET_OPENCV)
find_package(OpenCV REQUIRED)
add_library(opencv INTERFACE IMPORTED)
set_property(TARGET opencv PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${OpenCV_INCLUDE_DIRS})
set_property(TARGET opencv PROPERTY
INTERFACE_LINK_LIBRARIES ${OpenCV_LIBRARIES})
list (APPEND DARKNET_DEFINITIONS OPENCV)
endif()

# Find OpenCL
if (DARKNET_GPU)
enable_language(CUDA)
find_package(CUDA REQUIRED)
include_directories("${CUDA_INCLUDE_DIRS}")
list (APPEND DARKNET_DEFINITIONS GPU)
# Raspberry PI
if (DARKNET_ARM)
list (APPEND DARKNET_DEFINITIONS ARM)
endif()
endif()

# Benchmark Stats
if (DARKNET_BENCHMARK)
list (APPEND DARKNET_DEFINITIONS BENCHMARK)
endif()

# Loss Stats
if (DARKNET_LOSS_ONLY)
list (APPEND DARKNET_DEFINITIONS LOSS_ONLY)
endif()

# Find Catch
if (DARKNET_UNIT)
set (DARKNET_CPU OFF)
find_package(Catch REQUIRED)
add_library(catch INTERFACE IMPORTED)
set_property(TARGET catch PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${Catch_INCLUDE_DIRS})
endif()

set (DARKNET_SOURCES
"src/activation_layer.c"
"src/activations.c"
"examples/art.c"
"examples/attention.c"
"src/avgpool_layer.c"
"src/batchnorm_layer.c"
"src/blas.c"
"src/box.c"
"examples/captcha.c"
"examples/cifar.c"
"examples/classifier.c"
"examples/coco.c"
"src/col2im.c"
"src/compare.c"
"src/connected_layer.c"
"src/convolutional_layer.c"
"src/cost_layer.c"
"src/crnn_layer.c"
"src/crop_layer.c"
"src/data.c"
"src/deconvolutional_layer.c"
"src/demo.c"
"src/detection_layer.c"
"examples/detector.c"
"examples/dice.c"
"src/dropout_layer.c"
"src/gemm.c"
"examples/go.c"
"src/gru_layer.c"
"src/im2col.c"
"src/image.c"
"src/iseg_layer.c"
"examples/instance-segmenter.c"
"src/layer.c"
"src/list.c"
"src/local_layer.c"
"src/lstm_layer.c"
"examples/lsd.c"
"src/matrix.c"
"src/maxpool_layer.c"
"src/network.c"
"examples/nightmare.c"
"src/normalization_layer.c"
"src/option_list.c"
"src/parser.c"
"src/region_layer.c"
"examples/regressor.c"
"src/reorg_layer.c"
"examples/rnn.c"
"src/rnn_layer.c"
"examples/rnn_vid.c"
"src/route_layer.c"
"src/shortcut_layer.c"
"src/softmax_layer.c"
"examples/segmenter.c"
"examples/super.c"
"examples/swag.c"
"examples/tag.c"
"src/tree.c"
"src/utils.c"
"src/cuda.c"
"examples/voxel.c"
"examples/writing.c"
"examples/yolo.c"
"src/yolo_layer.c"
"src/yolo4_layer.c"
"src/upsample_layer.c"
"src/logistic_layer.c"
"src/l2norm_layer.c"
)

set (DARKNET_PUBLIC_HEADERS
"include/darknet.h"
"src/activation_layer.h"
"src/activations.h"
"src/avgpool_layer.h"
"src/batchnorm_layer.h"
"src/blas.h"
"src/box.h"
"src/bugfixes.h"
"src/classifier.h"
"src/col2im.h"
"src/connected_layer.h"
"src/convolutional_layer.h"
"src/cost_layer.h"
"src/crnn_layer.h"
"src/crop_layer.h"
"src/cuda.h"
"src/data.h"
"src/deconvolutional_layer.h"
"src/demo.h"
"src/detection_layer.h"
"src/dropout_layer.h"
"src/gemm.h"
"src/gru_layer.h"
"src/im2col.h"
"src/image.h"
"src/iseg_layer.h"
"src/layer.h"
"src/list.h"
"src/local_layer.h"
"src/lstm_layer.h"
"src/matrix.h"
"src/maxpool_layer.h"
"src/network.h"
"src/normalization_layer.h"
"src/option_list.h"
"src/parser.h"
"src/region_layer.h"
"src/reorg_layer.h"
"src/rnn_layer.h"
"src/route_layer.h"
"src/shortcut_layer.h"
"src/softmax_layer.h"
"src/stb_image.h"
"src/stb_image_write.h"
"src/tree.h"
"src/unit.h"
"src/utils.h"
"src/cuda.h"
"src/yolo_layer.h"
"src/yolo4_layer.h"
"src/upsample_layer.h"
"src/logistic_layer.h"
"src/l2norm_layer.h"
)

set (DARKNET_MAIN_SOURCE
"examples/darknet.c"
)

set (DARKNET_SOURCES_CXX
"src/image_opencv.cpp"
)

if (DARKNET_CPU)
set (DARKNET_CPU_SOURCES
"src/cpu.c"
)
endif()

if (DARKNET_GPU)
set (DARKNET_GPU_SOURCES
"src/activation_kernels.cu"
"src/avgpool_layer_kernels.cu"
"src/blas_kernels.cu"
"src/col2im_kernels.cu"
"src/convolutional_kernels.cu"
"src/crop_layer_kernels.cu"
"src/deconvolutional_kernels.cu"
"src/dropout_layer_kernels.cu"
"src/im2col_kernels.cu"
"src/maxpool_layer_kernels.cu"
)
endif()

if (DARKNET_UNIT)
set (DARKNET_UNIT_SOURCES
"src/unit.c"
"src/unit.h"
"src/blas_unit.c"
"src/col2im_unit.c"
"src/convolutional_unit.c"
"src/gemm_unit.c"
"src/maxpool_unit.c"
"src/network_unit.c"
"src/region_unit.c"
)
endif()

function (ConfigureBinary target)
set_target_properties(${target} PROPERTIES OUTPUT_NAME "darknet")
target_compile_definitions(${target} PUBLIC ${DARKNET_DEFINITIONS})
target_compile_options(${target} PRIVATE ${DARKNET_CFLAGS})

if (DARKNET_ARM)
link_libraries(curand cublas cuda)
file(GLOB cuda_sources "${DARKNET_GPU_SOURCES}")
elseif (DARKNET_GPU)
link_libraries(curand cublas cuda)
file(GLOB cuda_sources "${DARKNET_GPU_SOURCES}")
endif()

if (DARKNET_OPENCV)
target_link_libraries(${target} opencv)
endif()

# if (DARKNET_TESTING)
# target_link_libraries(${target} catch)
# endif()

target_link_libraries(${target} "m" "pthread")
endfunction()

function (ConfigureLibrary target)
target_include_directories(${target} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:include>
)
install(TARGETS ${target} EXPORT ${CMAKE_PROJECT_NAME}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endfunction()

if (DARKNET_SHARED)
add_library(${DARKNET_LIBRARY} SHARED ${DARKNET_SOURCES} ${DARKNET_CPU_SOURCES}
${DARKNET_GPU_SOURCES} ${DARKNET_WINDOWS_SOURCES} ${DARKNET_SOURCES_CXX})
ConfigureBinary(${DARKNET_LIBRARY})
ConfigureLibrary(${DARKNET_LIBRARY})
endif()

if (DARKNET_STATIC)
add_library(${DARKNET_LIBRARY_STATIC} STATIC ${DARKNET_SOURCES} ${DARKNET_CPU_SOURCES}
${DARKNET_GPU_SOURCES} ${DARKNET_WINDOWS_SOURCES} ${DARKNET_SOURCES_CXX})
ConfigureBinary(${DARKNET_LIBRARY_STATIC})
ConfigureLibrary(${DARKNET_LIBRARY_STATIC})
endif()

if (NOT DARKNET_NO_BINARY)
add_executable(${DARKNET_BINARY} ${DARKNET_SOURCES} ${DARKNET_CPU_SOURCES}
${DARKNET_GPU_SOURCES} ${DARKNET_WINDOWS_SOURCES} ${DARKNET_SOURCES_CXX}
${DARKNET_MAIN_SOURCE})

ConfigureBinary(${DARKNET_BINARY})
endif()

install(FILES ${DARKNET_PUBLIC_HEADERS} ${DARKNET_WINDOWS_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME})

install(EXPORT ${CMAKE_PROJECT_NAME} DESTINATION share/${CMAKE_PROJECT_NAME}/cmake)

if (DARKNET_SHARED)
export(TARGETS ${DARKNET_LIBRARY} FILE darknetConfig.cmake)
endif()
13 changes: 0 additions & 13 deletions LICENSE.fuck

This file was deleted.

Loading

0 comments on commit 16880bc

Please sign in to comment.