Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
8c703ab
updated for conda build
Apr 9, 2021
9dbabaf
add strict symmetric and unsigned symmetric config knobs to tf quantsim
quic-ssiddego Apr 23, 2021
b875feb
Changed the way ONNX nodes get mapped to PyTorch modules by using cus…
quic-akhobare Apr 23, 2021
46e9ff4
Fixed dockerfiles to change ONNX to 1.8.1 version
quic-akhobare Apr 23, 2021
dc88319
Removed pytorch copyright. Fixed sort logic for multi-layer recurrent…
quic-akhobare Apr 23, 2021
364231c
Added docstrings for some of the methods
quic-akhobare Apr 23, 2021
859443b
extending quantsim export api to take export specific optional args
quic-sendilk Apr 23, 2021
a3a7298
Updated version to 1.17.0
quic-bharathr Apr 25, 2021
a5b8a3f
updated for conda, TF 1.15, PT 1.4, python 3.7
Apr 29, 2021
a9c269c
updated to TF 2.4
Apr 29, 2021
ad36feb
updated to latest googletest 1.10
Apr 29, 2021
8043561
fixed build for TF 2.4, PT 1.8, Python 3.7
Apr 30, 2021
93a514e
revert to TF 1.15 due to old contrib modules used
Apr 30, 2021
37f67d8
updated for linux conda latest, ubuntu 20.04
Apr 30, 2021
94baaf2
fixed for cuda: code only works with cuda 10
Apr 30, 2021
3f133a3
use cmake to find lapack correctly.
May 1, 2021
b333212
add support for config file strict sym and unsigned sym setting for t…
quic-ssiddego Apr 27, 2021
a2d6029
Refactored logic to remove start and end markers to handle lots of co…
quic-akhobare Apr 30, 2021
f3eb00b
Skip output node renaming if the name was set correctly
quic-akhobare Apr 30, 2021
527504f
updated to build and test for python 3.7, TF 1.15, PyTorch 1.8+, CUDA…
May 1, 2021
8deef76
pytorch latest in conda
May 1, 2021
63211a4
Merge commit '05b58a69321e7c93e158debe8c6541924edb5b0e' into develop
Sep 29, 2021
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
105 changes: 78 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,51 @@
# @@-COPYRIGHT-END-@@
#
#=============================================================================
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
# 3.17+ required for correct finding of python within conda env
# 3.18 for CUDA_ARCHITECTURES
# C++14 for CUB
# TODO this code doesn't work with cuda 11

project(aimet)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O0 -ggdb -fPIC -D_GLIBCXX_USE_CXX11_ABI=0")
# # Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
# if (POLICY CMP0025)
# cmake_policy(SET CMP0025 NEW)
# endif ()

set(AIMET_INSTALL_DIR ${CMAKE_BINARY_DIR}/staging/universal)

set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_VERBOSE_MAKEFILE ON)

#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O0 -ggdb -fPIC -DGLIBCXX_USE_CXX11_ABI=0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -march=native -Wno-narrowing -fPIC -DGLIBCXX_USE_CXX11_ABI=0")
list(APPEND CMAKE_PREFIX_PATH $ENV{CONDA_PREFIX})
include_directories($ENV{CONDA_PREFIX}/include)
link_directories($ENV{CONDA_PREFIX}/lib)

if(APPLE)
set(LIB_EXT "dylib")
list(APPEND CMAKE_SHARED_LINKER_FLAGS "-undefined dynamic_lookup")
else()
set(LIB_EXT "so")
endif()

if(NOT DEFINED AIMET_PYTHONPATH)
set(AIMET_PYTHONPATH "PYTHONPATH=${CMAKE_BINARY_DIR}/artifacts" CACHE STRING "python path")
endif()
set(AIMET_PYTHONPATH "${AIMET_PYTHONPATH}:${CMAKE_CURRENT_SOURCE_DIR}/TrainingExtensions/common/src/python")

if(NOT DEFINED AIMET_LD_LIBRARY_PATH)
set(AIMET_LD_LIBRARY_PATH "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/artifacts:$ENV{LD_LIBRARY_PATH}")
if(APPLE)
# set(AIMET_LD_LIBRARY_PATH "DYLD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/artifacts:$ENV{CONDA_PREFIX}/lib:$ENV{DYLD_LIBRARY_PATH}")
set(AIMET_LD_LIBRARY_PATH "DYLD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/artifacts:$ENV{CONDA_PREFIX}/lib")
else()
set(AIMET_LD_LIBRARY_PATH "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/artifacts:$ENV{LD_LIBRARY_PATH}")
endif()
message(STATUS "Set ${AIMET_LD_LIBRARY_PATH} in ${CMAKE_CURRENT_SOURCE_DIR}")
endif()

Expand All @@ -60,7 +91,7 @@ else()
message(STATUS "SW_VERSION already set to ${SW_VERSION}.")
endif()

find_package(Threads)
# find_package(Threads)
# Disabling openMP since statically linked OpenMP in PyTorch (v1.5.0) seems to conflict with aimet usage
#find_package(OpenMP REQUIRED)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
Expand All @@ -78,63 +109,80 @@ if (ENABLE_CUDA)
message("Compiling with CUDA enabled")

find_package(CUDAToolkit)

if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES 52 60 61 70 72)
# set(CMAKE_CUDA_ARCHITECTURES 52 60 61 70 72 75 80 86)
set(CMAKE_CUDA_ARCHITECTURES 75) # TODO should be configurable
endif()

list(APPEND CUDA_NVCC_FLAGS -O3 -std=c++14 -x cu -Xcompiler -fPIC -DGLIBCXX_USE_CXX11_ABI=0)

enable_language(CUDA)

else(ENABLE_CUDA)
message("Compiling with CUDA disabled")

endif(ENABLE_CUDA)

set(LAPACKE_LIBRARY "/usr/lib/x86_64-linux-gnu/liblapacke.so.3.7.1")
# find LAPACK
if(APPLE)
set(BLA_VENDOR Apple)
else()
set(BLA_VENDOR Intel10_64lp) # all works, MKL is faster
# set(BLA_VENDOR OpenBLAS)
endif()
find_package(LAPACK REQUIRED)

find_package(OpenCV REQUIRED)
set(OPENCV_LIBRARY /usr/local/lib/libopencv_core.a)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})
find_library(OPENCV_LIBRARY opencv_core)

# ----------------------------------
# Conditional build for PyTorch
# ----------------------------------

find_package(Python COMPONENTS Interpreter Development)
set(PYTHON_DIST_PACKAGES "/usr/local/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/")

#set(PYTHON_DIST_PACKAGES "/usr/local/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/")

find_package(pybind11 REQUIRED CONFIG)
# set(PYBIND11_CPP_STANDARD -std=c++11)
set(PYBIND11_PYTHON_VERSION ${Python_VERSION})
set(PYBIND11_INC_DIRS "${pybind11_INCLUDE_DIRS}")
message("pybind11_INCLUDE_DIRS ${pybind11_INCLUDE_DIRS}")

if (NOT (DEFINED ENABLE_TORCH))
message("AIMET Torch build not explicitly disabled. Enabling implicitly")
set(ENABLE_TORCH ON CACHE BOOL "")

endif(NOT (DEFINED ENABLE_TORCH))
endif()

if (ENABLE_TORCH)
set(AIMET_PYTHONPATH "${AIMET_PYTHONPATH}:${CMAKE_CURRENT_SOURCE_DIR}/TrainingExtensions/torch/src/python")

# If we enable PyTorch builds then use the pybind11 headers that are part of the torch pip install
# So we don't have a version mismatch - between PyTorch custom C++ op code and PyMO
list(APPEND PYBIND11_INC_DIRS "${PYTHON_DIST_PACKAGES}/torch/include")
# list(APPEND PYBIND11_INC_DIRS "${PYTHON_DIST_PACKAGES}/torch/include")
set(PYBIND11_INC_DIRS "$ENV{CONDA_PREFIX}/lib/python3.7/site-packages/torch/include")
list(APPEND PYBIND11_INC_DIRS ${Python_INCLUDE_DIRS})

else (ENABLE_TORCH)
list(APPEND PYBIND11_INC_DIRS "${PYTHON_DIST_PACKAGES}/pybind11/include/")
list(APPEND PYBIND11_INC_DIRS ${Python_INCLUDE_DIRS})
else()
# list(APPEND PYBIND11_INC_DIRS "${PYTHON_DIST_PACKAGES}/pybind11/include/")
# list(APPEND PYBIND11_INC_DIRS ${Python_INCLUDE_DIRS})

message("AIMET Torch build disabled")

endif (ENABLE_TORCH)
endif()

# ----------------------------------
# PyBind11
# ----------------------------------

add_library(PYBIND11 SHARED IMPORTED)

set_target_properties(PYBIND11 PROPERTIES
IMPORTED_LOCATION ${Python_LIBRARIES}
INTERFACE_INCLUDE_DIRECTORIES "${PYBIND11_INC_DIRS}"
)
IMPORTED_LOCATION "$ENV{CONDA_PREFIX}/lib/libpython3.7m.${LIB_EXT}"
INTERFACE_INCLUDE_DIRECTORIES "${PYBIND11_INC_DIRS}"
LINK_FLAGS "${pybind11_LIBRARIES}"
)

# ----------------------------------
# Conditional build for TensorFlow
Expand All @@ -147,14 +195,16 @@ if (NOT (DEFINED ENABLE_TENSORFLOW))
endif(NOT (DEFINED ENABLE_TENSORFLOW))

if (ENABLE_TENSORFLOW)
# TODO check TF version
set(TF_DIR "$ENV{CONDA_PREFIX}/lib/python3.7/site-packages/tensorflow_core") # for TF<=2.0
#set(TF_DIR "$ENV{CONDA_PREFIX}/lib/python3.7/site-packages/tensorflow") # for TF>2.0

set(AIMET_PYTHONPATH "${AIMET_PYTHONPATH}:${CMAKE_CURRENT_SOURCE_DIR}/TrainingExtensions/tensorflow/src/python")
list(APPEND TENSORFLOW_INCLUDES "${PYTHON_DIST_PACKAGES}/tensorflow_core/include")
list(APPEND TENSORFLOW_INCLUDES "${TF_DIR}/include")
add_library(TensorFlow SHARED IMPORTED)
set_target_properties(TensorFlow PROPERTIES
IMPORTED_LOCATION
"${PYTHON_DIST_PACKAGES}/tensorflow_core/libtensorflow_framework.so.1"
INTERFACE_INCLUDE_DIRECTORIES
"${TENSORFLOW_INCLUDES}"
IMPORTED_LOCATION "${TF_DIR}/libtensorflow_framework.so.1"
INTERFACE_INCLUDE_DIRECTORIES "${TENSORFLOW_INCLUDES}"
)

else (ENABLE_TENSORFLOW)
Expand Down Expand Up @@ -204,10 +254,11 @@ endif()

enable_testing()

add_subdirectory(ThirdParty)
include_directories(${gtest_SOURCE_DIR}/include)
add_subdirectory(ModelOptimizations)
add_subdirectory(TrainingExtensions)
add_subdirectory(NightlyTests)
add_subdirectory(ThirdParty)
add_subdirectory(Docs)
add_subdirectory(Examples)
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Benchmarks")
Expand Down
1 change: 0 additions & 1 deletion Jenkins/Dockerfile

This file was deleted.

Loading