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

Fix MXLibInfoCompiledWithCXX11ABI #18864

Merged
merged 2 commits into from
Aug 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)