27b43c6686
We added a new centralized OpenCL Compute manager. This can later be extended to support CUDA, SyCL, etc. SMO can be configured at build time to choose which API it will use for compute. Moreover, the ComputeMgr allows us to register buffers which are available to all cl_contexts.
67 lines
1.5 KiB
CMake
67 lines
1.5 KiB
CMake
# Include Flex/Bison generation rules
|
|
include(${CMAKE_SOURCE_DIR}/cmake/flexYacc.cmake)
|
|
|
|
# Consolidated smocore library with all source files
|
|
add_library(smocore STATIC
|
|
# Core files
|
|
mind.cpp
|
|
opts.cpp
|
|
componentThread.cpp
|
|
component.cpp
|
|
qutex.cpp
|
|
lockerAndInvokerBase.cpp
|
|
|
|
# Body
|
|
body/body.cpp
|
|
|
|
# Director
|
|
director/director.cpp
|
|
|
|
# Marionette
|
|
marionette/main.cpp
|
|
marionette/salmanoff.cpp
|
|
marionette/lifetime.cpp
|
|
marionette/qualeEvent.cpp
|
|
marionette/negtrinEvent.cpp
|
|
|
|
# DeviceManager
|
|
deviceManager/deviceManager.cpp
|
|
deviceManager/deviceReattacher.cpp
|
|
deviceManager/deviceAttachmentPipeSpecParser.cpp
|
|
${LEX_OUTPUT}
|
|
${YACC_OUTPUT}
|
|
|
|
# SenseApis
|
|
stimBuffApis/stimBuffApiManager.cpp
|
|
|
|
# ComputeManager
|
|
computeManager/computeManager.cpp
|
|
|
|
# MindManager
|
|
mindManager/mindManager.cpp
|
|
)
|
|
|
|
# Conditionally add qutexAcquisitionHistoryTracker.cpp only when debug locks are enabled
|
|
if(ENABLE_DEBUG_LOCKS)
|
|
target_sources(smocore PRIVATE qutexAcquisitionHistoryTracker.cpp)
|
|
endif()
|
|
|
|
target_include_directories(smocore PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${Boost_INCLUDE_DIRS}
|
|
${OPENCL_INCLUDE_DIRS}
|
|
)
|
|
|
|
# Link against pthread for CPU affinity functions
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(smocore PRIVATE
|
|
Threads::Threads
|
|
Boost::system
|
|
Boost::log
|
|
${OPENCL_LIBRARIES}
|
|
)
|
|
target_link_directories(smocore PRIVATE
|
|
${OPENCL_LIBRARY_DIRS}
|
|
)
|