# example of how to use dynasty # author: Kneron SW Team cmake_minimum_required(VERSION 3.10) project(dynasty-consumer) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif () set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0 -fopenmp") set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) option(DISABLE_CUDA "DISABLE CUDA RELATED CODE(THIS IS NEEDED IN A CUDA ENV)" OFF) find_package(OpenBLAS) IF(NOT DISABLE_CUDA) find_package(CUDA QUIET) ENDIF() set(MSFT_LIB ${CMAKE_CURRENT_SOURCE_DIR}/lib/libonnxruntime.so.1.16.3) set(MSFT_GPU_LIB ${CMAKE_CURRENT_SOURCE_DIR}/lib/libonnxruntime.so.1.16.3 ${CMAKE_CURRENT_SOURCE_DIR}/lib/libonnxruntime_providers_shared.so ${CMAKE_CURRENT_SOURCE_DIR}/lib/libonnxruntime_providers_cuda.so) set(other_libs "${CMAKE_CURRENT_SOURCE_DIR}/lib/libpiano.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libjsoncpp.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libprotobuf.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libzip.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libcrypto.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libmystery_sdk.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libspdlog.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libfmt.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libkplus.a" "${CMAKE_CURRENT_SOURCE_DIR}/lib/libz.a" atomic dl ) IF(OpenBLAS_FOUND) set(other_libs ${other_libs} ${OpenBLAS_LIB}) ENDIF() IF(CUDA_FOUND) set(other_libs ${other_libs} ${CUDA_LIBRARIES} ${MSFT_GPU_LIB}) ELSE() set(other_libs ${other_libs} ${MSFT_LIB}) ENDIF() find_library(USB_LIB NAMES usb-1.0 libusb-1.0) # CsimExample add_executable(csim-example example/csim_example.cpp) target_include_directories(csim-example PUBLIC include) add_executable(cexample example/csim_example.c) target_include_directories(cexample PUBLIC include) IF(OpenBLAS_FOUND) target_link_libraries(csim-example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${OpenBLAS_LIB} ) target_link_libraries(cexample ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${OpenBLAS_LIB} stdc++ m ) ELSE() target_link_libraries(csim-example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ) target_link_libraries(cexample ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a stdc++ m ) ENDIF() # Kplus example add_executable(kplus-example example/kplus_example.cpp) target_include_directories(kplus-example PUBLIC include) target_link_libraries(kplus-example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libinferencer_lib.a ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${other_libs} ${USB_LIB} ) # msft example add_executable(msft-example example/msft_example.cpp) target_include_directories(msft-example PUBLIC include) target_link_libraries(msft-example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libinferencer_lib.a ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${other_libs}) # msft-gpu example IF(CUDA_FOUND) add_executable(msft-gpu-example example/msft_gpu_example.cpp) target_include_directories(msft-gpu-example PUBLIC include) target_link_libraries(msft-gpu-example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libinferencer_lib.a ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${other_libs}) ENDIF () # cpu example add_executable(cpu-example example/cpu_example.cpp example/mystery.c) target_include_directories(cpu-example PUBLIC include) target_link_libraries(cpu-example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libinferencer_lib.a ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${other_libs}) # build mystery lib add_library(mystery_sdk example/mystery.c) target_include_directories(mystery_sdk PUBLIC include) add_executable(fixpoint_example example/fixpoint_example.cpp) target_include_directories(fixpoint_example PUBLIC include ${other_headers}) target_link_libraries(fixpoint_example ${CMAKE_CURRENT_SOURCE_DIR}/lib/libinferencer_lib.a ${CMAKE_CURRENT_SOURCE_DIR}/lib/libcpu_op.a ${other_libs})