Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Commit

Permalink
Fix MXLibInfoCompiledWithCXX11ABI (#18864)
Browse files Browse the repository at this point in the history
* Fix MXLibInfoCompiledWithCXX11ABI

* Fix test
  • Loading branch information
leezu authored Aug 6, 2020
1 parent 84f8984 commit a3eabf0
Show file tree
Hide file tree
Showing 17 changed files with 23 additions and 39 deletions.
7 changes: 0 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ cmake_dependent_option(ENABLE_TESTCOVERAGE "Enable compilation with test coverag
option(USE_INT64_TENSOR_SIZE "Use int64_t to represent the total number of elements in a tensor" OFF)
option(BUILD_CYTHON_MODULES "Build cython modules." OFF)
option(LOG_FATAL_THROW "Log exceptions but do not abort" ON)
option(USE_CXX11_ABI "Build with GLIBCXX_USE_CXX11_ABI" ON)
cmake_dependent_option(USE_SPLIT_ARCH_DLL "Build a separate DLL for each Cuda arch (Windows only)." ON "MSVC" OFF)
cmake_dependent_option(USE_CCACHE "Attempt using CCache to wrap the compilation" ON "UNIX" OFF)

Expand All @@ -100,12 +99,6 @@ message(STATUS "CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}")

message(STATUS "CMAKE_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}")

if(USE_CXX11_ABI)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
else()
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
endif()

if(USE_TVM_OP)
add_definitions(-DMXNET_USE_TVM_OP=1)
endif()
Expand Down
1 change: 0 additions & 1 deletion config/darwin.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,3 @@ set(USE_NCCL "Use NVidia NCCL with CUDA" OFF)
set(NCCL_ROOT "" CACHE BOOL "NCCL install path. Supports autodetection.")
set(ENABLE_CUDA_RTC ON CACHE BOOL "Build with CUDA runtime compilation support")
set(USE_NVTX ON CACHE BOOL "Build with NVTX support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")
1 change: 0 additions & 1 deletion config/distribution/darwin_cpu.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,3 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")
1 change: 0 additions & 1 deletion config/distribution/linux_cpu.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,3 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")
1 change: 0 additions & 1 deletion config/distribution/linux_cu100.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")

set(CUDACXX "/usr/local/cuda-10.0/bin/nvcc" CACHE STRING "Cuda compiler")
set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0" CACHE STRING "Cuda architectures")
1 change: 0 additions & 1 deletion config/distribution/linux_cu101.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")

set(CUDACXX "/usr/local/cuda-10.1/bin/nvcc" CACHE STRING "Cuda compiler")
set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0" CACHE STRING "Cuda architectures")
1 change: 0 additions & 1 deletion config/distribution/linux_cu102.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")

set(CUDACXX "/usr/local/cuda-10.2/bin/nvcc" CACHE STRING "Cuda compiler")
set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0" CACHE STRING "Cuda architectures")
1 change: 0 additions & 1 deletion config/distribution/linux_cu92.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ set(USE_TVM_OP OFF CACHE BOOL "Enable use of TVM operator build system.")
set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")

set(CUDACXX "/usr/local/cuda-9.2/bin/nvcc" CACHE STRING "Cuda compiler")
set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0" CACHE STRING "Cuda architectures")
1 change: 0 additions & 1 deletion config/distribution/linux_native.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,3 @@ set(USE_TVM_OP OFF CACHE BOOL "Enable use of TVM operator build system.")
set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")
1 change: 0 additions & 1 deletion config/linux.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -127,4 +127,3 @@ set(USE_NCCL "Use NVidia NCCL with CUDA" OFF)
set(NCCL_ROOT "" CACHE BOOL "NCCL install path. Supports autodetection.")
set(ENABLE_CUDA_RTC ON CACHE BOOL "Build with CUDA runtime compilation support")
set(USE_NVTX ON CACHE BOOL "Build with NVTX support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")
1 change: 0 additions & 1 deletion config/linux_gpu.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -127,4 +127,3 @@ set(USE_NCCL "Use NVidia NCCL with CUDA" OFF)
set(NCCL_ROOT "" CACHE BOOL "NCCL install path. Supports autodetection.")
set(ENABLE_CUDA_RTC ON CACHE BOOL "Build with CUDA runtime compilation support")
set(USE_NVTX ON CACHE BOOL "Build with NVTX support")
set(USE_CXX11_ABI ON CACHE BOOL "Build with GLIBCXX_USE_CXX11_ABI")
2 changes: 1 addition & 1 deletion include/mxnet/c_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ MXNET_DLL int MXLibInfoFeatures(const struct LibFeature **libFeature, size_t *si
* \brief return whether the mxnet library is compiled with cxx11 abi
* \return whether mxnet is built with cxx11 abi
*/
MXNET_DLL int MXLibInfoCompiledWithCXX11ABI(bool* result);
MXNET_DLL int MXLibInfoCompiledWithCXX11ABI(int* result);

/*!
* \brief Seed all global random number generators in mxnet.
Expand Down
7 changes: 0 additions & 7 deletions include/mxnet/libinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,6 @@
#define MXNET_USE_TVM_OP 0
#endif

#ifndef _GLIBCXX_USE_CXX11_ABI
#define MXNET_GLIBCXX_USE_CXX11_ABI 0
#else
#define MXNET_GLIBCXX_USE_CXX11_ABI _GLIBCXX_USE_CXX11_ABI
#endif

namespace mxnet {
namespace features {
// Check compile flags such as CMakeLists.txt
Expand Down Expand Up @@ -210,7 +204,6 @@ struct LibInfo {
const std::array<LibFeature, MAX_FEATURES>& getFeatures() {
return m_lib_features;
}
bool cxx11_abi();
private:
std::array<LibFeature, MAX_FEATURES> m_lib_features;
static std::unique_ptr<LibInfo> m_inst;
Expand Down
19 changes: 14 additions & 5 deletions python/mxnet/library.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,23 @@ def load(path, verbose=True):
func = getattr(mx_sym_op, op)
setattr(mx_sym, op, func)

def compiled_with_cxx11_abi():
"""Check if the library is compiled with cxx11 ABI.

def compiled_with_gcc_cxx11_abi():
"""Check if the library is compiled with _GLIBCXX_USE_CXX11_ABI.
Please see
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html for
more information. When building libraries relying on MXNet C++ headers, it
is required to use the same C++ ABI in the library as well as in libmxnet.
Returns
-------
bool
Whether the library is compiled with cxx11 ABI.
int
1 If compiled with _GLIBCXX_USE_CXX11_ABI=1
0 If compiled with _GLIBCXX_USE_CXX11_ABI=0
-1 If compiled with a compiler that does not support _GLIBCXX_USE_CXX11_ABI
"""
ret = ctypes.c_bool()
ret = ctypes.c_int()
check_call(_LIB.MXLibInfoCompiledWithCXX11ABI(ctypes.byref(ret)))
return ret.value
10 changes: 6 additions & 4 deletions src/c_api/c_api.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1299,11 +1299,13 @@ int MXLibInfoFeatures(const struct LibFeature **lib_features, size_t *size) {
API_END();
}

int MXLibInfoCompiledWithCXX11ABI(bool* result) {
using namespace features;
int MXLibInfoCompiledWithCXX11ABI(int* result) {
API_BEGIN();
LibInfo* lib_info = LibInfo::getInstance();
*result = lib_info->cxx11_abi();
#ifdef _GLIBCXX_USE_CXX11_ABI
*result = _GLIBCXX_USE_CXX11_ABI;
#else
*result = -1;
#endif
API_END();
}

Expand Down
3 changes: 0 additions & 3 deletions src/libinfo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,6 @@ LibInfo *LibInfo::getInstance() {
m_inst = std::make_unique<LibInfo>();
return m_inst.get();
}
bool LibInfo::cxx11_abi() {
return MXNET_GLIBCXX_USE_CXX11_ABI;
}

std::unique_ptr<LibInfo> LibInfo::m_inst = nullptr;

Expand Down
4 changes: 2 additions & 2 deletions tests/python/unittest/test_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,5 @@ def test_is_enabled_not_existing():
features.is_enabled('this girl is on fire')

def test_cxx11_abi():
abi = mx.library.compiled_with_cxx11_abi()
assert abi or not abi
abi = mx.library.compiled_with_gcc_cxx11_abi()
assert abi in (-1, 0, 1)

0 comments on commit a3eabf0

Please sign in to comment.