提交 4b07e7a2 编写于 作者: R Raaj 提交者: Gines

Fix OpenCL bug + initial Mac CPU version + OpenCL min version from 200 to 120 (#624)

上级 d52878fc
......@@ -57,6 +57,7 @@ MANIFEST-*
# OSX dir files
.DS_Store
._.DS_Store
# Vim files
cscope.*
......
echo "This requires brew"
brew install openblas
brew install -vd snappy leveldb gflags glog szip lmdb
# need the homebrew science source for OpenCV and hdf5
brew tap homebrew/science
brew install hdf5 opencv
# with Python pycaffe needs dependencies built from source
brew install --build-from-source --with-python -vd protobuf
brew install --build-from-source -vd boost boost-python
# without Python the usual installation suffices
brew install protobuf boost
......@@ -5,6 +5,10 @@ set(OpenPose_VERSION_PATCH 0)
set(OpenPose_VERSION ${OpenPose_VERSION_MAJOR}.${OpenPose_VERSION_MINOR}.${OpenPose_VERSION_PATCH})
### OS-DEPENDENT FLAGS
set(CMAKE_MACOSX_RPATH 1)
### CMAKE HEADERS
if (${CMAKE_VERSION} VERSION_GREATER 3.0.0)
cmake_policy(SET CMP0048 NEW)
......@@ -15,12 +19,6 @@ endif (${CMAKE_VERSION} VERSION_GREATER 3.0.0)
cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR) # min. cmake version recommended by Caffe
### FIND THE OS
if (APPLE) # OS is Apple
message(FATAL_ERROR "Apple OS is not currently supported.")
endif (APPLE)
### Extra functionality
include(cmake/Utils.cmake)
......@@ -52,10 +50,14 @@ if (WIN32)
string(REPLACE "/MDd" "/MD" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
elseif (UNIX AND NOT APPLE)
elseif (UNIX)
# Turn on C++11
add_definitions(-std=c++11)
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
elseif (APPLE)
# Turn on C++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
endif (WIN32)
# C++ additional flags
......@@ -232,10 +234,20 @@ option(BUILD_SHARED_LIBS "Build as shared lib" ON)
option(PROFILER_ENABLED "If enabled, OpenPose will be able to print out speed information at runtime." OFF)
# Threads - Pthread
if (${GPU_MODE} MATCHES "OPENCL" OR (UNIX AND NOT APPLE))
if (${GPU_MODE} MATCHES "OPENCL" OR (UNIX OR APPLE))
unset(CMAKE_THREAD_LIBS_INIT CACHE)
find_package(Threads)
endif (${GPU_MODE} MATCHES "OPENCL" OR (UNIX AND NOT APPLE))
endif (${GPU_MODE} MATCHES "OPENCL" OR (UNIX OR APPLE))
# Caffe OpenCL Boost Issue
if (APPLE)
if (${GPU_MODE} MATCHES "OPENCL")
unset(Boost_SYSTEM_LIBRARY CACHE)
find_package(Boost COMPONENTS system REQUIRED)
else ()
set(Boost_SYSTEM_LIBRARY "")
endif ()
endif ()
### FIND REQUIRED PACKAGES
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
......@@ -289,7 +301,7 @@ else (${WITH_EIGEN} MATCHES "NONE")
endif (${WITH_EIGEN} MATCHES "BUILD")
endif (${WITH_EIGEN} MATCHES "NONE")
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
include(cmake/Cuda.cmake)
find_package(CuDNN)
......@@ -365,7 +377,7 @@ if (UNIX AND NOT APPLE)
sudo apt-get install libopencv-dev")
endif (NOT OpenCV_FOUND)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
if (WIN32)
......@@ -472,7 +484,7 @@ endif (WIN32)
### CAFFE
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${DL_FRAMEWORK} MATCHES "CAFFE")
......@@ -609,7 +621,7 @@ if (UNIX AND NOT APPLE)
endif (${DL_FRAMEWORK} MATCHES "CAFFE")
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
### PROJECT INCLUDES
# Specify the include directories
......@@ -625,6 +637,11 @@ if (NOT ${WITH_EIGEN} MATCHES "NONE")
${EIGEN3_INCLUDE_DIRS})
endif (NOT ${WITH_EIGEN} MATCHES "NONE")
if (APPLE)
include_directories(
"/usr/local/opt/openblas/include")
endif (APPLE)
if (USE_MKL)
include_directories(
"${MKL_PATH}/include/")
......@@ -662,13 +679,13 @@ endif (WIN32)
### COLLECT ALL 3RD-PARTY LIBRARIES TO BE LINKED AGAINST
set(OpenPose_3rdparty_libraries ${OpenCV_LIBS} ${GLOG_LIBRARY})
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${GLOG_LIBRARY})
elseif (WIN32)
set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries}
debug ${GFLAGS_LIBRARY_DEBUG} optimized ${GFLAGS_LIBRARY_RELEASE}
debug ${GLOG_LIBRARY_DEBUG} optimized ${GLOG_LIBRARY_RELEASE})
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
# Deep net Framework
if (${DL_FRAMEWORK} MATCHES "CAFFE")
set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${Caffe_LIBS} ${GFLAGS_LIBRARY})
......@@ -695,9 +712,9 @@ if (WITH_FLIR_CAMERA)
set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${SPINNAKER_LIB})
endif (WITH_FLIR_CAMERA)
# Pthread
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} pthread)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
set(examples_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${GFLAGS_LIBRARY})
......@@ -731,7 +748,7 @@ message(STATUS "Models Downloaded.")
### GENERATE DOCUMENTATION
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (BUILD_DOCS)
find_package(Doxygen)
......@@ -750,11 +767,11 @@ if (UNIX AND NOT APPLE)
endif (DOXYGEN_FOUND)
endif (BUILD_DOCS)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
### INSTALL
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (Caffe_FOUND)
# Install the headers
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/openpose DESTINATION include)
......@@ -781,4 +798,4 @@ if (UNIX AND NOT APPLE)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif (Caffe_FOUND)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -64,7 +64,7 @@ function(op_detect_installed_gpus out_variable)
if (NOT CUDA_gpu_detect_output)
message(STATUS "Automatic GPU detection failed. Building for all known architectures.")
set(${out_variable} ${Caffe_known_gpu_archs} PARENT_SCOPE)
else()
else ()
set(${out_variable} ${CUDA_gpu_detect_output} PARENT_SCOPE)
endif ()
endfunction()
......@@ -98,7 +98,7 @@ function(op_select_nvcc_arch_flags out_variable)
set(CUDA_ARCH_BIN ${Caffe_known_gpu_archs} CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
set(CUDA_ARCH_PTX "50" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for")
# mark_as_advanced(CUDA_ARCH_BIN CUDA_ARCH_PTX)
else()
else ()
unset(CUDA_ARCH_BIN CACHE)
unset(CUDA_ARCH_PTX CACHE)
endif ()
......@@ -115,7 +115,7 @@ function(op_select_nvcc_arch_flags out_variable)
set(__cuda_arch_bin ${Caffe_known_gpu_archs})
elseif (${CUDA_ARCH} STREQUAL "Auto")
op_detect_installed_gpus(__cuda_arch_bin)
else() # (${CUDA_ARCH} STREQUAL "Manual")
else () # (${CUDA_ARCH} STREQUAL "Manual")
set(__cuda_arch_bin ${CUDA_ARCH_BIN})
endif ()
......@@ -135,7 +135,7 @@ function(op_select_nvcc_arch_flags out_variable)
# User explicitly specified PTX for the concrete BIN
list(APPEND __nvcc_flags -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})
list(APPEND __nvcc_archs_readable sm_${CMAKE_MATCH_1})
else()
else ()
# User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN
list(APPEND __nvcc_flags -gencode arch=compute_${__arch},code=sm_${__arch})
list(APPEND __nvcc_archs_readable sm_${__arch})
......@@ -199,7 +199,7 @@ function(detect_cuDNN)
# dynamic libs have different suffix in mac and linux
if (APPLE)
set(CUDNN_LIB_NAME "libcudnn.dylib")
else()
else ()
set(CUDNN_LIB_NAME "libcudnn.so")
endif ()
......@@ -230,7 +230,7 @@ function(detect_cuDNN)
if (NOT CUDNN_VERSION_MAJOR)
set(CUDNN_VERSION "???")
else()
else ()
set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}")
endif ()
......
......@@ -30,9 +30,9 @@ if(CUDNN_INCLUDE AND CUDNN_LIBRARY)
string(REGEX REPLACE "define CUDNN_PATCHLEVEL * +([0-9]+)" "\\1"
CUDNN_VERSION_PATCH "${CUDNN_VERSION_PATCH}")
if(NOT CUDNN_VERSION_MAJOR)
if (NOT CUDNN_VERSION_MAJOR)
set(CUDNN_VERSION "???")
else()
else ()
set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}")
endif()
......
......@@ -13,15 +13,15 @@ include(FindPackageHandleStandardArgs)
set(GLOG_ROOT_DIR "" CACHE PATH "Folder contains Google glog")
if(WIN32)
if (WIN32)
find_path(GLOG_INCLUDE_DIR glog/logging.h
PATHS ${GLOG_ROOT_DIR}/src/windows)
else()
else ()
find_path(GLOG_INCLUDE_DIR glog/logging.h
PATHS ${GLOG_ROOT_DIR})
endif()
if(MSVC)
if (MSVC)
find_library(GLOG_LIBRARY_RELEASE libglog_static
PATHS ${GLOG_ROOT_DIR}
PATH_SUFFIXES Release)
......@@ -31,7 +31,7 @@ if(MSVC)
PATH_SUFFIXES Debug)
set(GLOG_LIBRARY optimized ${GLOG_LIBRARY_RELEASE} debug ${GLOG_LIBRARY_DEBUG})
else()
else ()
find_library(GLOG_LIBRARY glog
PATHS ${GLOG_ROOT_DIR}
PATH_SUFFIXES lib lib64)
......
......@@ -32,8 +32,9 @@ This installation section is only intended if you plan to modify the OpenPose co
## Operating Systems
- **Ubuntu** 14 and 16.
- **Windows** 8 and 10.
- **Mac / OSX** Mavericks and above (only CPU version tested). If you want to test our Mac GPU version, email gines@cmu.edu.
- **Nvidia Jetson TX2**, installation instructions in [doc/installation_jetson_tx2.md](./installation_jetson_tx2.md).
- OpenPose has also been used on **Windows 7**, **Mac**, **CentOS**, and **Nvidia Jetson (TK1 and TX1)** embedded systems. However, we do not officially support them at the moment.
- OpenPose has also been used on **Windows 7**, **CentOS**, and **Nvidia Jetson (TK1 and TX1)** embedded systems. However, we do not officially support them at the moment.
......@@ -120,7 +121,10 @@ The instructions in this section describe the steps to build OpenPose using CMak
- [Caffe](http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe_2018_01_18.zip): Unzip as `3rdparty/windows/caffe/`.
- [Caffe dependencies](http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe3rdparty_2017_07_14.zip): Unzip as `3rdparty/windows/caffe3rdparty/`.
- [OpenCV 3.1](http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/opencv_310.zip): Unzip as `3rdparty/windows/opencv/`.
5. **Eigen prerequisite**:
6. OSX - **Caffe, OpenCV, and Caffe prerequisites**:
- Install deps by running `sudo bash 3rdparty/osx/install_deps.sh` on your terminal.
- Current OSX has only been tested with the CPU Version, and hence must be compiled with the `-DGPU_MODE=CPU_ONLY` flag.
7. **Eigen prerequisite**:
- Note: This step is optional, only required for some specific extra functionality, such as extrinsic camera calibration.
- If you enable the `WITH_EIGEN` flag when running CMake. You can either:
1. Do not do anything if you set the `WITH_EIGEN` flag to `BUILD`, CMake will automatically download Eigen. Alternatively, you might prefer to download it manually:
......
......@@ -4,6 +4,6 @@ add_subdirectory(tutorial_add_module)
add_subdirectory(tutorial_pose)
add_subdirectory(tutorial_thread)
add_subdirectory(tutorial_wrapper)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_subdirectory(tests)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -5,7 +5,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "Calibration")
......
......@@ -5,7 +5,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "OpenPoseDemo")
......
......@@ -6,7 +6,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "${SOURCE_NAME}")
......
......@@ -7,7 +7,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "${SOURCE_NAME}")
......
......@@ -6,7 +6,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "${SOURCE_NAME}")
......
......@@ -8,7 +8,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "${SOURCE_NAME}")
......
......@@ -12,7 +12,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES})
get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
set(EXE_NAME "${SOURCE_NAME}.bin")
elseif (WIN32)
set(EXE_NAME "${SOURCE_NAME}")
......
......@@ -5,13 +5,16 @@
#define MULTI_LINE_STRING(ARG) #ARG
#define CL_HPP_ENABLE_EXCEPTIONS
#ifndef __APPLE__
#define CL_HPP_ENABLE_EXCEPTIONS
#endif
#ifdef LOWER_CL_VERSION
#define CL_HPP_MINIMUM_OPENCL_VERSION 120
#define CL_HPP_TARGET_OPENCL_VERSION 120
#else
#define CL_HPP_MINIMUM_OPENCL_VERSION 200
#define CL_HPP_TARGET_OPENCL_VERSION 200
#define CL_HPP_MINIMUM_OPENCL_VERSION 120
#define CL_HPP_TARGET_OPENCL_VERSION 120
#endif
typedef struct _cl_buffer_region cl_buffer_region;
......
......@@ -8,16 +8,16 @@ prepend(SOURCES_OP_3D_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_3D})
set(SOURCES_OP_3D_WITH_CP ${SOURCES_OP_3D_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_3D_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_3d ${SOURCES_OP_3D})
else()
else ()
add_library(openpose_3d ${SOURCES_OP_3D})
endif ()
add_library(caffe SHARED IMPORTED)
set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS})
target_link_libraries(openpose_3d caffe ${MKL_LIBS})
target_link_libraries(openpose_3d caffe openpose_core ${MKL_LIBS})
if (BUILD_CAFFE)
add_dependencies(openpose_3d openpose_caffe)
......@@ -28,4 +28,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -19,12 +19,12 @@ set(OP_HEADERS "")
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose ${SOURCES_OPENPOSE} ${OP_HEADERS})
else()
else ()
add_library(openpose ${SOURCES_OPENPOSE} ${OP_HEADERS})
endif ()
# Ubuntu
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
target_link_libraries(openpose ${OpenPose_3rdparty_libraries})
if (CMAKE_COMPILER_IS_GNUCXX)
foreach (SUB_DIR ${SUB_DIRS})
......@@ -54,12 +54,12 @@ elseif (WIN32)
set_property(TARGET openpose PROPERTY RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_BINARY_DIR}/$(Platform)/$(Configuration))
set_property(TARGET openpose PROPERTY RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_BINARY_DIR}/$(Platform)/$(Configuration))
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(caffe SHARED IMPORTED)
set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS})
target_link_libraries(openpose caffe)
target_link_libraries(openpose caffe ${Boost_SYSTEM_LIBRARY} ${OpenCL_LIBRARIES})
if (BUILD_CAFFE)
add_dependencies(openpose openpose_caffe)
......@@ -72,4 +72,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -8,13 +8,15 @@ prepend(SOURCES_OP_CALIBRATION_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_
set(SOURCES_OP_CALIBRATION_WITH_CP ${SOURCES_OP_CALIBRATION_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_CALIBRATION_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_calibration ${SOURCES_OP_CALIBRATION})
else()
else ()
add_library(openpose_calibration ${SOURCES_OP_CALIBRATION})
endif ()
target_link_libraries(openpose_calibration openpose_core)
if (BUILD_CAFFE)
add_dependencies(openpose_calibration openpose_caffe)
endif (BUILD_CAFFE)
......@@ -24,4 +26,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -15,8 +15,8 @@ namespace op
cv::Mat distortionCoefficients;
Intrinsics() :
cameraMatrix{cv::Mat::eye(3, 3, CV_64F)},
distortionCoefficients{cv::Mat::zeros(14, 1, CV_64F)}
cameraMatrix(cv::Mat::eye(3, 3, CV_64F)),
distortionCoefficients(cv::Mat::zeros(14, 1, CV_64F))
{
}
......
......@@ -19,13 +19,21 @@ prepend(SOURCES_OP_CORE_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_CORE})
set(SOURCES_OP_CORE_WITH_CP ${SOURCES_OP_CORE_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_CORE_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_core ${SOURCES_OP_CORE})
else()
else ()
add_library(openpose_core ${SOURCES_OP_CORE})
endif ()
target_link_libraries(openpose_core openpose caffe ${OpenCV_LIBS} ${Caffe_LIBS} ${GLUT_LIBRARY} ${SPINNAKER_LIB} ${OpenCL_LIBRARIES}
${GLOG_LIBRARY} ${OpenCV_LIBS} ${Caffe_LIBS} ${GFLAGS_LIBRARY} ${GLOG_LIBRARY} ${MKL_LIBS} ${GLUT_LIBRARY} ${SPINNAKER_LIB})
if (APPLE)
add_library(caffe SHARED IMPORTED)
set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS})
endif (APPLE)
if (BUILD_CAFFE)
add_dependencies(openpose_core openpose_caffe)
endif (BUILD_CAFFE)
......@@ -35,4 +43,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -15,12 +15,14 @@ prepend(SOURCES_OP_FACE_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_FACE})
set(SOURCES_OP_FACE_WITH_CP ${SOURCES_OP_FACE_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_FACE_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_face ${SOURCES_OP_FACE})
else()
else ()
add_library(openpose_face ${SOURCES_OP_FACE})
endif ()
target_link_libraries(openpose_face openpose_core)
if (BUILD_CAFFE)
add_dependencies(openpose_face openpose_caffe)
......@@ -31,4 +33,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -14,12 +14,14 @@ prepend(SOURCES_OP_FILESTREAM_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_F
set(SOURCES_OP_FILESTREAM_WITH_CP ${SOURCES_OP_FILESTREAM_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_FILESTREAM_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(openpose_filestream ${SOURCES_OP_FILESTREAM})
target_link_libraries(openpose_filestream openpose_core)
install(TARGETS openpose_filestream
EXPORT OpenPose
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -8,18 +8,18 @@ prepend(SOURCES_OP_GPU_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_GPU})
set(SOURCES_OP_GPU_WITH_CP ${SOURCES_OP_GPU_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_GPU_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_gpu ${SOURCES_OP_GPU})
else()
else ()
add_library(openpose_gpu ${SOURCES_OP_GPU})
endif ()
# target_link_libraries(openpose_gpu openpose_core)
target_link_libraries(openpose_gpu openpose_core)
install(TARGETS openpose_gpu
EXPORT OpenPose
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -53,6 +53,7 @@ namespace op
replaceAll(src, "Type", type);
program = cl::Program(context, src, true);
}
#if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS)
catch (cl::BuildError e)
{
auto buildInfo = e.getBuildLog();
......@@ -62,6 +63,11 @@ namespace op
error("OpenCL error: OpenPose crashed due to the previously printed errors.",
__LINE__, __FUNCTION__, __FILE__);
}
#endif
catch (const std::exception& e)
{
error(e.what(), __LINE__, __FUNCTION__, __FILE__);
}
return true;
#else
UNUSED(program);
......@@ -231,10 +237,16 @@ namespace op
}
}
}
#if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS)
catch (cl::Error e)
{
op::log("Error: " + std::string(e.what()));
}
#endif
catch (const std::exception& e)
{
error(e.what(), __LINE__, __FUNCTION__, __FILE__);
}
}
#else
UNUSED(deviceId);
......@@ -417,7 +429,8 @@ namespace op
std::vector<cl::Platform> platforms;
std::vector<cl::Device> devices;
cl_uint type;
try {
try
{
cl::Platform::get(&platforms);
if (!platforms.size())
return -1;
......@@ -425,12 +438,21 @@ namespace op
if (type == CL_SUCCESS)
return devices.size();
else
{
error("No GPU Devices were found. OpenPose only supports GPU OpenCL", __LINE__, __FUNCTION__, __FILE__);
return -1;
}
}
#if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS)
catch (cl::Error& e)
{
op::log("Error: " + std::string(e.what()));
}
#endif
catch (const std::exception& e)
{
error(e.what(), __LINE__, __FUNCTION__, __FILE__);
}
#else
error("OpenPose must be compiled with the `USE_OPENCL` macro definition in order to use this"
" functionality.", __LINE__, __FUNCTION__, __FILE__);
......
......@@ -13,7 +13,7 @@ set(SOURCES_OP_GUI_WITH_CP ${SOURCES_OP_GUI_WITH_CP} PARENT_SCOPE)
set(SOURCES_OP_FILESTREAM_WITH_CP ${SOURCES_OP_FILESTREAM_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_GUI_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(openpose_gui ${SOURCES_OP_GUI})
target_link_libraries(openpose_gui openpose_pose ${OpenCV_LIBS})
......@@ -22,5 +22,5 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -15,12 +15,14 @@ prepend(SOURCES_OP_HAND_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_HAND})
set(SOURCES_OP_HAND_WITH_CP ${SOURCES_OP_HAND_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_HAND_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_hand ${SOURCES_OP_HAND})
else()
else ()
add_library(openpose_hand ${SOURCES_OP_HAND})
endif ()
target_link_libraries(openpose_hand openpose_core)
if (BUILD_CAFFE)
add_dependencies(openpose_hand openpose_caffe)
......@@ -31,4 +33,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -18,16 +18,16 @@ prepend(SOURCES_OP_NET_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_NET})
set(SOURCES_OP_NET_WITH_CP ${SOURCES_OP_NET_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_NET_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_net ${SOURCES_OP_NET})
else()
else ()
add_library(openpose_net ${SOURCES_OP_NET})
endif ()
add_library(caffe SHARED IMPORTED)
set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS})
target_link_libraries(openpose_net caffe ${MKL_LIBS})
target_link_libraries(openpose_net caffe ${MKL_LIBS} openpose_core)
if (BUILD_CAFFE)
add_dependencies(openpose_net openpose_caffe)
......@@ -38,4 +38,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -15,7 +15,7 @@ namespace op
const std::string nmsOclCommonFunctions = MULTI_LINE_STRING(
void nmsAccuratePeakPosition(__global const Type* sourcePtr, Type* fx, Type* fy, Type* fscore,
const int peakLocX, const int peakLocY, const int width, const int height,
const T offsetX, const T offsetY)
const Type offsetX, const Type offsetY)
{
Type xAcc = 0.f;
Type yAcc = 0.f;
......@@ -102,11 +102,11 @@ namespace op
}
);
typedef cl::KernelFunctor<cl::Buffer, cl::Buffer, cl::Buffer, int, int, int, int> NMSWriteKernelFunctor;
typedef cl::KernelFunctor<cl::Buffer, cl::Buffer, cl::Buffer, int, int, int, int, float, float> NMSWriteKernelFunctor;
const std::string nmsWriteKernel = MULTI_LINE_STRING(
__kernel void nmsWriteKernel(__global Type* targetPtr, __global int* kernelPtr, __global const Type* sourcePtr,
const int w, const int h, const int maxPeaks, const int debug,
const T offsetX, const T offsetY)
const Type offsetX, const Type offsetY)
{
int x = get_global_id(0);
int y = get_global_id(1);
......@@ -249,12 +249,12 @@ namespace op
" functionality.", __LINE__, __FUNCTION__, __FILE__);
#endif
}
#ifdef USE_OPENCL
catch (const cl::Error& e)
{
error(std::string(e.what()) + " : " + op::OpenCL::clErrorToString(e.err()) + " ID: " +
std::to_string(gpuID), __LINE__, __FUNCTION__, __FILE__);
}
#if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS)
catch (const cl::Error& e)
{
error(std::string(e.what()) + " : " + op::OpenCL::clErrorToString(e.err()) + " ID: " +
std::to_string(gpuID), __LINE__, __FUNCTION__, __FILE__);
}
#endif
catch (const std::exception& e)
{
......
......@@ -326,7 +326,7 @@ namespace op
" functionality.", __LINE__, __FUNCTION__, __FILE__);
#endif
}
#ifdef USE_OPENCL
#if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS)
catch (const cl::Error& e)
{
error(std::string(e.what()) + " : " + op::OpenCL::clErrorToString(e.err()) + " ID: " +
......
......@@ -19,12 +19,14 @@ prepend(SOURCES_OP_POSE_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_POSE})
set(SOURCES_OP_POSE_WITH_CP ${SOURCES_OP_POSE_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_POSE_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_pose ${SOURCES_OP_POSE})
else()
else ()
add_library(openpose_pose ${SOURCES_OP_POSE})
endif ()
target_link_libraries(openpose_pose openpose_core)
if (BUILD_CAFFE)
add_dependencies(openpose_pose openpose_caffe)
......@@ -35,4 +37,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -29,7 +29,7 @@ namespace op
catch (const std::exception& e)
{
error(e.what(), __LINE__, __FUNCTION__, __FILE__);
return {};
return std::map<unsigned int, std::string>();
}
}
......
......@@ -14,7 +14,7 @@ prepend(SOURCES_OP_PRODUCER_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_PRO
set(SOURCES_OP_PRODUCER_WITH_CP ${SOURCES_OP_PRODUCER_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_PRODUCER_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(openpose_producer ${SOURCES_OP_PRODUCER})
target_link_libraries(openpose_producer ${OpenCV_LIBS} openpose_core
openpose_thread openpose_filestream)
......@@ -24,4 +24,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -6,12 +6,14 @@ prepend(SOURCES_OP_THREAD_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_THREA
set(SOURCES_OP_THREAD_WITH_CP ${SOURCES_OP_THREAD_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_THREAD_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(openpose_thread ${SOURCES_OP_THREAD})
target_link_libraries(openpose_thread openpose_core)
install(TARGETS openpose_thread
EXPORT OpenPose
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -10,14 +10,14 @@ prepend(SOURCES_OP_TRACKING_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_TRA
set(SOURCES_OP_TRACKING_WITH_CP ${SOURCES_OP_TRACKING_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_TRACKING_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(openpose_tracking ${SOURCES_OP_TRACKING})
set_target_properties(openpose_tracking PROPERTIES COMPILE_FLAGS ${OP_CXX_FLAGS})
target_link_libraries(openpose_tracking openpose_core)
install(TARGETS openpose_tracking
EXPORT OpenPose
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -12,10 +12,10 @@ prepend(SOURCES_OP_UTILITIES_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_UT
set(SOURCES_OP_UTILITIES_WITH_CP ${SOURCES_OP_UTILITIES_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_UTILITIES_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
if (${GPU_MODE} MATCHES "CUDA")
cuda_add_library(openpose_utilities ${SOURCES_OP_UTILITIES})
else()
else ()
add_library(openpose_utilities ${SOURCES_OP_UTILITIES})
endif ()
......@@ -26,4 +26,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
......@@ -2,7 +2,7 @@
#ifdef _WIN32
#include <direct.h> // _mkdir
#include <windows.h> // DWORD, GetFileAttributesA
#elif defined __unix__
#elif defined __unix__ || defined __APPLE__
#include <dirent.h> // opendir
#include <sys/stat.h> // mkdir
#else
......@@ -26,7 +26,7 @@ namespace op
{
#ifdef _WIN32
const auto status = _mkdir(formatedPath.c_str());
#elif defined __unix__
#elif defined __unix__ || defined __APPLE__
// Create folder
// Access permission - 775 (7, 7, 4+1)
// https://www.gnu.org/software/libc/manual/html_node/Permission-Bits.html
......@@ -62,7 +62,7 @@ namespace op
return true;
// It is not a directory
return false; // this is not a directory!
#elif defined __unix__
#elif defined __unix__ || defined __APPLE__
// It is a directory
if (auto* directory = opendir(formatedPath.c_str()))
{
......@@ -291,7 +291,7 @@ namespace op
while (FindNextFile(hFind, &data) != 0);
FindClose(hFind);
}
#elif defined __unix__
#elif defined __unix__ || defined __APPLE__
std::shared_ptr<DIR> directoryPtr(
opendir(formatedPath.c_str()),
[](DIR* formatedPath){ formatedPath && closedir(formatedPath); }
......
......@@ -12,7 +12,7 @@ prepend(SOURCES_OP_WRAPPER_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_WRAP
set(SOURCES_OP_WRAPPER_WITH_CP ${SOURCES_OP_WRAPPER_WITH_CP} PARENT_SCOPE)
set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_WRAPPER_WITH_CP} PARENT_SCOPE)
if (UNIX AND NOT APPLE)
if (UNIX OR APPLE)
add_library(openpose_wrapper ${SOURCES_OP_WRAPPER})
target_link_libraries(openpose_wrapper openpose_thread openpose_pose openpose_hand
openpose_core openpose_face openpose_filestream openpose_gui openpose_producer
......@@ -23,4 +23,4 @@ if (UNIX AND NOT APPLE)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/openpose)
endif (UNIX AND NOT APPLE)
endif (UNIX OR APPLE)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册