math/onednn: Add CPU_RUNTIME options; Change cmake variables to defined cmake optons.

This commit is contained in:
Yuri Victorovich 2020-11-07 09:00:44 +00:00
parent 5d927d7a3d
commit 2b3dd8b6d5
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=554357
2 changed files with 26 additions and 38 deletions

View file

@ -3,7 +3,7 @@
PORTNAME= onednn PORTNAME= onednn
DISTVERSIONPREFIX= v DISTVERSIONPREFIX= v
DISTVERSION= 1.7 DISTVERSION= 1.7
PORTREVISION= 2 PORTREVISION= 3
CATEGORIES= math # machine-learning CATEGORIES= math # machine-learning
MAINTAINER= yuri@FreeBSD.org MAINTAINER= yuri@FreeBSD.org
@ -23,15 +23,18 @@ GH_ACCOUNT= oneapi-src
GH_PROJECT= oneDNN GH_PROJECT= oneDNN
USE_LDCONFIG= yes USE_LDCONFIG= yes
CMAKE_OFF= BUILD_TESTING CMAKE_OFF= DNNL_BUILD_TESTS DNNL_BUILD_EXAMPLES
OPTIONS_DEFINE= OPENMP OPTIONS_DEFAULT= SIMD_DEFAULT OPENMP
OPTIONS_DEFAULT= OPENMP SIMD_DEFAULT OPTIONS_SINGLE= SIMD CPU_RUNTIME
OPTIONS_SINGLE= SIMD OPTIONS_SINGLE_SIMD= SIMD_DEFAULT SIMD_NATIVE
OPTIONS_SINGLE_SIMD= SIMD_DEFAULT SIMD_NATIVE OPTIONS_SINGLE_CPU_RUNTIME= OPENMP TBB SEQ THREADPOOL_STANDALONE THREADPOOL_EIGEN THREADPOOL_TBB
CPU_RUNTIME_DESC= Threading runtime for CPU engines
OPENMP_CMAKE_BOOL= USE_OPENMP OPENMP_CMAKE_ON= -DDNNL_CPU_RUNTIME=OMP
OPENMP_BROKEN_OFF= still requires omp.h, see https://github.com/intel/mkl-dnn/issues/581
SEQ_DESC= Sequential (no parallelism)
SEQ_CMAKE_ON= -DDNNL_CPU_RUNTIME=SEQ
SIMD_DEFAULT_DESC= Default, no non-default SIMD instructions are used SIMD_DEFAULT_DESC= Default, no non-default SIMD instructions are used
@ -41,13 +44,26 @@ SIMD_NATIVE_CXXFLAGS= -march=native
SIMD_SSE41_DESC= Use SSE4.1 instructions SIMD_SSE41_DESC= Use SSE4.1 instructions
SIMD_SSE41_CXXFLAGS= -msse4.1 SIMD_SSE41_CXXFLAGS= -msse4.1
TBB_DESC= Threading Building Blocks
TBB_CMAKE_ON= -DDNNL_CPU_RUNTIME=TBB
TBB_BROKEN= https://github.com/oneapi-src/oneDNN/issues/876
THREADPOOL_STANDALONE_DESC= Threadpool based on the standalone implementation
THREADPOOL_STANDALONE_CMAKE_ON= -DDNNL_CPU_RUNTIME=THREADPOOL -D_DNNL_TEST_THREADPOOL_IMPL=STANDALONE
THREADPOOL_STANDALONE_BROKEN= https://github.com/oneapi-src/oneDNN/issues/877
THREADPOOL_EIGEN_DESC= Threadpool based on the Eigen implementation
THREADPOOL_EIGEN_CMAKE_ON= -DDNNL_CPU_RUNTIME=THREADPOOL -D_DNNL_TEST_THREADPOOL_IMPL=EIGEN
THREADPOOL_TBB_DESC= Threadpool based on the TBB implementation
THREADPOOL_TBB_CMAKE_ON= -DDNNL_CPU_RUNTIME=THREADPOOL -D_DNNL_TEST_THREADPOOL_IMPL=TBB
THREADPOOL_TBB_BROKEN= https://github.com/oneapi-src/oneDNN/issues/876
ARCH_LOCAL!= /usr/bin/uname -p # because OPTIONS_SINGLE_SIMD doesn't support per-ARCH values OPTIONS_SINGLE_SIMD_{arch}, like OPTIONS_DEFINE_{arch} ARCH_LOCAL!= /usr/bin/uname -p # because OPTIONS_SINGLE_SIMD doesn't support per-ARCH values OPTIONS_SINGLE_SIMD_{arch}, like OPTIONS_DEFINE_{arch}
.if ${ARCH_LOCAL} == i386 || ${ARCH_LOCAL} == amd64 .if ${ARCH_LOCAL} == i386 || ${ARCH_LOCAL} == amd64
OPTIONS_SINGLE_SIMD+= SIMD_SSE41 OPTIONS_SINGLE_SIMD+= SIMD_SSE41
.endif .endif
CXXFLAGS:= ${CXXFLAGS:S/-O2/-O3/} # clang writes wrong binary code when -O2 optimization is used and one testcase is failing, see https://github.com/oneapi-src/oneDNN/issues/873#issuecomment-722778910 CXXFLAGS:= ${CXXFLAGS:S/-O2/-O3/} # clang writes wrong binary code when -O2 optimization is used and one testcase is failing, see https://bugs.llvm.org/show_bug.cgi?id=48104
post-install: post-install:
@${RM} -r ${STAGEDIR}${PREFIX}/share/doc @${RM} -r ${STAGEDIR}${PREFIX}/share/doc
@ -55,7 +71,7 @@ post-install:
do-test: # some tests are known to fail: https://github.com/intel/mkl-dnn/issues/350 (the upstream failed to reproduce it and closed the report) do-test: # some tests are known to fail: https://github.com/intel/mkl-dnn/issues/350 (the upstream failed to reproduce it and closed the report)
@${REINPLACE_CMD} 's| /bin/bash | ${LOCALBASE}/bin/bash |' ${WRKSRC}/tests/CMakeLists.txt @${REINPLACE_CMD} 's| /bin/bash | ${LOCALBASE}/bin/bash |' ${WRKSRC}/tests/CMakeLists.txt
@cd ${BUILD_WRKSRC} && \ @cd ${BUILD_WRKSRC} && \
${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} -DBUILD_TESTING=ON ${CMAKE_SOURCE_PATH} && \ ${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} -DDNNL_BUILD_TESTS=ON ${CMAKE_SOURCE_PATH} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} && \ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} test ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} test

View file

@ -1,28 +0,0 @@
--- CMakeLists.txt.orig 2020-10-28 05:50:44 UTC
+++ CMakeLists.txt
@@ -115,7 +115,9 @@ include("cmake/mkldnn_compat.cmake")
include("cmake/utils.cmake")
include("cmake/options.cmake")
-include("cmake/OpenMP.cmake")
+if (USE_OPENMP)
+ include("cmake/OpenMP.cmake")
+endif()
include("cmake/TBB.cmake")
include("cmake/Threadpool.cmake")
include("cmake/OpenCL.cmake")
@@ -160,8 +162,12 @@ include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
add_subdirectory(src)
-add_subdirectory(examples)
-add_subdirectory(tests)
+if(BUILD_EXAMPLES)
+ add_subdirectory(examples)
+endif()
+if(BUILD_TESTING)
+ add_subdirectory(tests)
+endif()
if(DNNL_INSTALL_MODE STREQUAL "BUNDLE")
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_PREFIX})