From 4ca397bd42acca57466fa88018089d440a9d49bb Mon Sep 17 00:00:00 2001 From: leonarski_f Date: Fri, 17 May 2024 19:19:17 +0200 Subject: [PATCH] Change the way dependencies are handled --- .gitlab-ci.yml | 30 ++++++++++++- CMakeLists.txt | 77 +++++++++++++++++++++++++++++--- README.md | 10 ++--- VERSION | 2 +- broker/CMakeLists.txt | 4 +- common/NUMAHWPolicy.cpp | 17 ------- common/NUMAHWPolicy.h | 5 --- detector_control/CMakeLists.txt | 6 +-- fpga/host_library/CMakeLists.txt | 2 +- fpga/pcie_driver/dkms.conf | 4 +- fpga/pcie_driver/install_dkms.sh | 5 +-- fpga/pcie_driver/jfjoch_drv.c | 2 +- frontend_ui/src/App.tsx | 3 +- image_analysis/CMakeLists.txt | 2 +- preview/CMakeLists.txt | 9 +--- receiver/CMakeLists.txt | 2 +- receiver/JFJochReceiver.cpp | 17 +++---- receiver/JFJochReceiver.h | 2 +- writer/CMakeLists.txt | 6 +-- 19 files changed, 133 insertions(+), 72 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c90b2f6f..8f6a7911 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,7 +34,7 @@ build:x86:gcc_writer: - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_WRITER_ONLY=ON .. - - make -j48 jfjoch + - make -j48 build:x86:driver: stage: build @@ -87,12 +87,31 @@ build:x86:frontend: - npm install - npm run build - cd build + - cp ../../broker/redoc-static.html . - tar czf ../../jfjoch_frontend.tar.gz * artifacts: paths: - jfjoch_frontend.tar.gz expire_in: 1 week +build:x86:rpm: + stage: build + tags: + - x86 + needs: [] + script: + - mkdir build + - cd build + - source /opt/rh/gcc-toolset-12/enable + - cmake -DCMAKE_BUILD_TYPE=Release .. + - make frontend + - make -j48 package + - mv *.rpm .. + artifacts: + paths: + - "*.rpm" + expire_in: 1 week + test:x86:gcc: stage: test timeout: 90m @@ -292,9 +311,14 @@ release: - synthesis:vivado_pcie_100g - build:x86:frontend - build:x86:driver + - build:x86:rpm script: - export PACKAGE_VERSION=`head -n1 VERSION` - export PACKAGE_REGISTRY_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/jungfraujoch/${PACKAGE_VERSION}" + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-writer.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch.el8.x86_64.rpm"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch_driver.tar.gz "${PACKAGE_REGISTRY_URL}/jfjoch_driver.tar.gz"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch_frontend.tar.gz "${PACKAGE_REGISTRY_URL}/jfjoch_frontend.tar.gz"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch_fpga_pcie_100g.mcs "${PACKAGE_REGISTRY_URL}/jfjoch_fpga_pcie_100g.mcs"' @@ -305,3 +329,7 @@ release: --assets-link "{\"name\":\"jfjoch_frontend.tar.gz\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch_frontend.tar.gz\"}" --assets-link "{\"name\":\"jfjoch_fpga_pcie_8x10g.mcs\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch_fpga_pcie_8x10g.mcs\"}" --assets-link "{\"name\":\"jfjoch_fpga_pcie_100g.mcs\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch_fpga_pcie_100g.mcs\"}" + --assets-link "{\"name\":\"jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm\"}" + --assets-link "{\"name\":\"jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm\"}" + --assets-link "{\"name\":\"jfjoch.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch.el8.x86_64.rpm\"}" + --assets-link "{\"name\":\"jfjoch-writer.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-writer.el8.x86_64.rpm\"}" diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e2022a4..c8f5269f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,9 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.19) -PROJECT(Jungfraujoch VERSION 1.0 LANGUAGES C CXX) -LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +FILE(STRINGS VERSION JFJOCH_VERSION) + +PROJECT(jfjoch VERSION 1.0.0 LANGUAGES C CXX) +SET(CMAKE_POLICY_DEFAULT_CMP0077 NEW) SET(CMAKE_CXX_STANDARD 20) SET(CMAKE_CXX_STANDARD_REQUIRED True) @@ -9,8 +11,31 @@ SET(CMAKE_CXX_STANDARD_REQUIRED True) SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -mtune=native -Wno-deprecated-enum-enum-conversion") SET(CMAKE_C_FLAGS_RELEASE "-O3 -march=native -mtune=native") +SET(BUILD_SHARED_LIBS OFF) +SET(BUILD_TESTING OFF) + SET(ZSTD_LEGACY_SUPPORT OFF) SET(ZSTD_MULTITHREAD_SUPPORT OFF) +SET(ZSTD_BUILD_PROGRAMS OFF) +SET(ZSTD_BUILD_SHARED OFF) + +SET(SLS_USE_RECEIVER OFF) +SET(SLS_USE_RECEIVER_BINARIES OFF) +SET(SLS_BUILD_SHARED_LIBRARIES OFF) + +SET(BUILD_FAST_INDEXER OFF) +SET(BUILD_FAST_INDEXER_STATIC ON) + +SET(HDF5_ENABLE_SZIP_SUPPORT OFF) +SET(HDF5_ENABLE_SZIP_ENCODING OFF) +SET(HDF5_BUILD_EXAMPLES OFF) +SET(HDF5_BUILD_CPP_LIB OFF) +SET(HDF5_ENABLE_Z_LIB_SUPPORT OFF) +SET(HDF5_EXTERNALLY_CONFIGURED 1) + +SET(jbig OFF) +SET(zstd OFF) +SET(lzma OFF) INCLUDE(CheckLanguage) CHECK_LANGUAGE(CUDA) @@ -37,10 +62,23 @@ CHECK_INCLUDE_FILE(numa.h HAS_NUMA_H) include(FetchContent) +FetchContent_Declare(tiff + GIT_REPOSITORY https://github.com/fleon-psi/libtiff + GIT_TAG v4.6.0 + EXCLUDE_FROM_ALL) + +FetchContent_Declare(hdf5 + GIT_REPOSITORY https://github.com/HDFGroup/hdf5/ + GIT_TAG hdf5_1.14.4.2 + GIT_SHALLOW 1 + EXCLUDE_FROM_ALL + FIND_PACKAGE_ARGS) + FetchContent_Declare( pistache_http GIT_REPOSITORY https://github.com/fleon-psi/pistache GIT_TAG 51553b92cc7bb25ac792462722ddd4fae33d14b1 + EXCLUDE_FROM_ALL ) FetchContent_Declare( @@ -48,6 +86,7 @@ FetchContent_Declare( GIT_REPOSITORY https://github.com/facebook/zstd GIT_TAG 794ea1b0afca0f020f4e57b6732332231fb23c70 SOURCE_SUBDIR build/cmake + EXCLUDE_FROM_ALL ) FetchContent_Declare( @@ -60,9 +99,10 @@ FetchContent_Declare( catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2 GIT_TAG 4e8d92b + EXCLUDE_FROM_ALL ) -FetchContent_MakeAvailable(pistache_http zstd sls_detector_package catch2) +FetchContent_MakeAvailable(pistache_http zstd sls_detector_package catch2 hdf5 tiff) ADD_SUBDIRECTORY(jungfrau) ADD_SUBDIRECTORY(compression) @@ -73,7 +113,6 @@ ADD_SUBDIRECTORY(frame_serialize) ADD_SUBDIRECTORY(detector_control) IF (JFJOCH_WRITER_ONLY) MESSAGE(STATUS "Compiling HDF5 writer only") - SET(jfjoch_executables jfjoch_writer) ELSE() ADD_SUBDIRECTORY(broker) ADD_SUBDIRECTORY(fpga) @@ -83,16 +122,42 @@ ELSE() ADD_SUBDIRECTORY(tests) ADD_SUBDIRECTORY(tools) ADD_SUBDIRECTORY(preview) - SET(jfjoch_executables jfjoch_broker jfjoch_writer jfjoch_test CompressionBenchmark HDF5DatasetWriteTest jfjoch_udp_simulator sls_detector_put sls_detector_get) ENDIF() ADD_CUSTOM_COMMAND(OUTPUT frontend_ui/build/index.html + COMMAND npm install COMMAND npm run build WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/frontend_ui) ADD_CUSTOM_TARGET(frontend DEPENDS frontend_ui/build/index.html) -ADD_CUSTOM_TARGET(jfjoch DEPENDS ${jfjoch_executables}) +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/ + DESTINATION jfjoch/kernel + COMPONENT jfjoch + FILES_MATCHING PATTERN "*.c" PATTERN "*.h" PATTERN "Makefile" PATTERN "dkms.conf" PATTERN "install.dkms") +INSTALL(DIRECTORY frontend_ui/build/ DESTINATION jfjoch/frontend COMPONENT jfjoch ) IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) SET(CMAKE_INSTALL_PREFIX /opt/jfjoch CACHE PATH "Default directory" FORCE) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + +# Set Package Name +set(CPACK_PACKAGE_NAME "jfjoch") + +SET(CPACK_COMPONENTS_ALL jfjoch writer) +SET(CPACK_GENERATOR RPM) +SET(CPACK_RPM_COMPONENT_INSTALL ON) +SET(CPACK_RPM_MAIN_COMPONENT jfjoch) +SET(CPACK_RPM_PACKAGE_RELEASE_DIST ON) +SET(CPACK_RPM_FILE_NAME "RPM-DEFAULT") +SET(CPACK_RPM_PACKAGE_VERSION ${JFJOCH_VERSION}) +SET(CPACK_RPM_PACKAGE_RELEASE 1) +SET(CPACK_RPM_PACKAGE_SUMMARY "Jungfraujoch data acquisition system") +SET(CPACK_RPM_PACKAGE_DESCRIPTION "Jungfraujoch") + +# Set The Vendor Name +SET(CPACK_PACKAGE_VENDOR "Paul Scherrer Institut") + +# Set The License Information +SET(CPACK_RPM_PACKAGE_LICENSE "Proprietary") + +INCLUDE(CPack) diff --git a/README.md b/README.md index 140dd18f..febb01b0 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,7 @@ Other linux platforms should work, but no tests were done so far. ### Dependencies Required: * C++20 compiler and C++20 standard library; recommended GCC 11+ or clang 14+ (Intel OneAPI, AMD AOCC) -* CMake version 3.21 or newer + GNU make tool -* HDF5 library version 1.10 or newer -* TIFF library (with C++ headers) +* CMake version 3.21 or newer + GNU make tool * JPEG library (turbo-jpeg is also OK) Optional: @@ -43,14 +41,16 @@ Optional: * NUMA library - to pin threads to nodes/CPUs * Node.js - to make frontend -Automatically downloaded by CMake: +Automatically downloaded by CMake and statically linked: * SLS Detector Package - see [github.com/slsdetectorgroup/slsDetectorPackage](https://github.com/slsdetectorgroup/slsDetectorPackage) * Zstandard (Facebook) - see [github.com/facebook/zstd](https://github.com/facebook/zstd) * Pistache webserver - see [github.com/pistacheio/pistache](https://github.com/pistacheio/pistache) * Fast feedback indexer (Hans-Christian Stadler, PSI) - see [github.com/paulscherrerinstitute/fast-feedback-indexer](https://github.com/paulscherrerinstitute/fast-feedback-indexer) * Catch2 testing library - see [github.com/catchorg/Catch2](https://github.com/catchorg/Catch2) +* HDF5 library - see [github.com/HDFGroup/hdf5](https://github.com/HDFGroup/hdf5) +* TIFF library - see [gitlab.com/libtiff/libtiff](https://gitlab.com/libtiff/libtiff) -Please follow the link provided above to check for LICENSE file +Please follow the link provided above to check for LICENSE file. Building code with dependencies above requires access from the build system to github.com. Directly included in the repository: * JSON parser/writer from N. Lohmann - see [github.com/nlohmann/json](https://github.com/nlohmann/json) diff --git a/VERSION b/VERSION index fedbd0b1..3c029ddf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0-rc.2 +1.0.0-rc.3 diff --git a/broker/CMakeLists.txt b/broker/CMakeLists.txt index 250abfdb..564718ac 100644 --- a/broker/CMakeLists.txt +++ b/broker/CMakeLists.txt @@ -15,4 +15,6 @@ TARGET_LINK_LIBRARIES(JFJochBroker JFJochReceiver JFJochDetector JFJochCommon JF ADD_EXECUTABLE(jfjoch_broker jfjoch_broker.cpp) TARGET_LINK_LIBRARIES(jfjoch_broker JFJochBroker) -INSTALL(TARGETS jfjoch_broker RUNTIME) +INSTALL(TARGETS jfjoch_broker RUNTIME COMPONENT jfjoch) + +INSTALL(FILES redoc-static.html DESTINATION jfjoch/frontend COMPONENT jfjoch ) diff --git a/common/NUMAHWPolicy.cpp b/common/NUMAHWPolicy.cpp index 9c8dc0e4..78014bf8 100644 --- a/common/NUMAHWPolicy.cpp +++ b/common/NUMAHWPolicy.cpp @@ -46,15 +46,6 @@ NUMAHWPolicy::NUMAHWPolicy(const std::string &policy) : name(policy) { throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Unknown NUMA policy"); } -NUMAHWPolicy::NUMAHWPolicy(const NUMAHWPolicy &other) : bindings(other.bindings), name(other.name), curr_thread(0) {} - -NUMAHWPolicy &NUMAHWPolicy::operator=(const NUMAHWPolicy &other) { - bindings = other.bindings; - name = other.name; - curr_thread = 0; - return *this; -} - NUMABinding NUMAHWPolicy::GetBinding(uint32_t thread) { if (bindings.empty()) return NUMABinding{.cpu_node = -1, .mem_node = -1, .gpu = -1}; @@ -62,14 +53,6 @@ NUMABinding NUMAHWPolicy::GetBinding(uint32_t thread) { return bindings.at(thread % bindings.size()); } -NUMABinding NUMAHWPolicy::GetBinding() { - return GetBinding(curr_thread++); -} - -void NUMAHWPolicy::Bind() { - Bind(GetBinding()); -} - void NUMAHWPolicy::Bind(uint32_t thread) { Bind(GetBinding(thread)); } diff --git a/common/NUMAHWPolicy.h b/common/NUMAHWPolicy.h index 7829eed4..8ee97c1d 100644 --- a/common/NUMAHWPolicy.h +++ b/common/NUMAHWPolicy.h @@ -17,19 +17,14 @@ struct NUMABinding { class NUMAHWPolicy { std::string name; std::vector bindings; - std::atomic curr_thread = 0; public: NUMAHWPolicy() = default; explicit NUMAHWPolicy(const std::string& policy); - NUMAHWPolicy(const NUMAHWPolicy& other); - NUMAHWPolicy& operator=(const NUMAHWPolicy& other); NUMABinding GetBinding(uint32_t thread); - NUMABinding GetBinding(); // round-robin const std::string &GetName() const; void Bind(uint32_t thread); - void Bind(); // round-robin static void Bind(const NUMABinding &binding); static void RunOnNode(int32_t cpu_node); static void MemOnNode(int32_t mem_node); diff --git a/detector_control/CMakeLists.txt b/detector_control/CMakeLists.txt index f94090d8..c13af164 100644 --- a/detector_control/CMakeLists.txt +++ b/detector_control/CMakeLists.txt @@ -1,6 +1,2 @@ -INSTALL(TARGETS sls_detector_put sls_detector_get RUNTIME) - ADD_LIBRARY(JFJochDetector STATIC DetectorWrapper.cpp DetectorWrapper.h) -TARGET_LINK_LIBRARIES(JFJochDetector JFJochCommon slsSupportShared slsDetectorShared) - - +TARGET_LINK_LIBRARIES(JFJochDetector JFJochCommon slsDetectorStatic slsSupportStatic) diff --git a/fpga/host_library/CMakeLists.txt b/fpga/host_library/CMakeLists.txt index b4f3e1b7..058e7095 100644 --- a/fpga/host_library/CMakeLists.txt +++ b/fpga/host_library/CMakeLists.txt @@ -4,7 +4,7 @@ TARGET_LINK_LIBRARIES(JFJochDevice JFJochCommon) ADD_EXECUTABLE(jfjoch_pcie_status jfjoch_pcie_status.cpp) TARGET_LINK_LIBRARIES(jfjoch_pcie_status JFJochDevice ) -INSTALL(TARGETS jfjoch_pcie_status RUNTIME) +INSTALL(TARGETS jfjoch_pcie_status RUNTIME COMPONENT jfjoch) ADD_EXECUTABLE(jfjoch_pcie_set_network jfjoch_pcie_set_network.cpp) TARGET_LINK_LIBRARIES(jfjoch_pcie_set_network JFJochDevice ) diff --git a/fpga/pcie_driver/dkms.conf b/fpga/pcie_driver/dkms.conf index f1e04bfb..fe9949ec 100644 --- a/fpga/pcie_driver/dkms.conf +++ b/fpga/pcie_driver/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME=jfjoch -PACKAGE_VERSION=0.1 +PACKAGE_VERSION=1.0.0 DEST_MODULE_LOCATION=/extra BUILT_MODULE_NAME=jfjoch @@ -7,4 +7,4 @@ BUILT_MODULE_LOCATION=src/ MAKE="'make' -C src/ all" CLEAN="'make' -C src/ clean" -AUTOINSTALL="yes" \ No newline at end of file +AUTOINSTALL="yes" diff --git a/fpga/pcie_driver/install_dkms.sh b/fpga/pcie_driver/install_dkms.sh index 0d4379b3..0d8e9686 100755 --- a/fpga/pcie_driver/install_dkms.sh +++ b/fpga/pcie_driver/install_dkms.sh @@ -1,12 +1,11 @@ #!/bin/bash # Copyright (2019-2023) Paul Scherrer Institute -VERSION=0.1 +VERSION=1.0.0 mkdir -p /usr/src/jfjoch-${VERSION}/src cp dkms.conf /usr/src/jfjoch-${VERSION} -cp *.c *.h Makefile ../../common/Definitions.h /usr/src/jfjoch-0.1/src -sed -i "s,../../common/Definitions.h,Definitions.h," /usr/src/jfjoch-0.1/src/jfjoch_drv.h +cp *.c *.h Makefile /usr/src/jfjoch-${VERSION}/src dkms add -m jfjoch -v ${VERSION} dkms install -m jfjoch -v ${VERSION} diff --git a/fpga/pcie_driver/jfjoch_drv.c b/fpga/pcie_driver/jfjoch_drv.c index 526b648a..c1ead92b 100644 --- a/fpga/pcie_driver/jfjoch_drv.c +++ b/fpga/pcie_driver/jfjoch_drv.c @@ -11,7 +11,7 @@ MODULE_AUTHOR("Filip Leonarski; Paul Scherrer Institute"); MODULE_DESCRIPTION("Jungfraujoch device module"); MODULE_LICENSE("GPL"); -MODULE_VERSION("0.1"); +MODULE_VERSION("1.0.0"); #define XDMA_GEN4_x8 (0x9048) #define XDMA_GEN3_x16 (0x903F) diff --git a/frontend_ui/src/App.tsx b/frontend_ui/src/App.tsx index 7489d9a2..51b5b199 100644 --- a/frontend_ui/src/App.tsx +++ b/frontend_ui/src/App.tsx @@ -145,7 +145,8 @@ class App extends Component { href="mailto:filip.leonarski@psi.ch">Filip Leonarski
For more information see J. Synchrotron Rad. (2023). 30, 227–234
- Build: {process.env.REACT_APP_VERSION} + Build: {process.env.REACT_APP_VERSION}    + API reference
} diff --git a/image_analysis/CMakeLists.txt b/image_analysis/CMakeLists.txt index c65a81b4..cc646d44 100644 --- a/image_analysis/CMakeLists.txt +++ b/image_analysis/CMakeLists.txt @@ -22,7 +22,7 @@ IF (CMAKE_CUDA_COMPILER) FetchContent_Declare( fast-indexer GIT_REPOSITORY https://github.com/fleon-psi/fast-feedback-indexer/ - GIT_TAG 651cbc9 + GIT_TAG 66c3f44 ) FetchContent_MakeAvailable(fast-indexer) diff --git a/preview/CMakeLists.txt b/preview/CMakeLists.txt index 351079df..0225f99e 100644 --- a/preview/CMakeLists.txt +++ b/preview/CMakeLists.txt @@ -1,4 +1,3 @@ -FIND_PACKAGE(TIFF COMPONENTS CXX REQUIRED) FIND_PACKAGE(JPEG REQUIRED) ADD_LIBRARY(JFJochPreview STATIC @@ -9,13 +8,7 @@ ADD_LIBRARY(JFJochPreview STATIC TARGET_LINK_LIBRARIES(JFJochPreview PUBLIC JFJochCommon) -IF((EXISTS ${TIFF_INCLUDE_DIR}/tiffio.hxx) AND (EXISTS ${TIFF_INCLUDE_DIR}/tiffio.h)) - TARGET_INCLUDE_DIRECTORIES(JFJochPreview PRIVATE ${TIFF_INCLUDE_DIR}) - TARGET_LINK_LIBRARIES(JFJochPreview PUBLIC ${TIFF_LIBRARIES}) - MESSAGE(STATUS "TIFF headers present and library included") -ELSE() - MESSAGE(FATAL_ERROR "TIFF headers tiffio.h and tiffio.hxx not present") -ENDIF() +TARGET_LINK_LIBRARIES(JFJochPreview PUBLIC tiff tiffxx) IF (EXISTS ${JPEG_INCLUDE_DIR}/jpeglib.h) TARGET_INCLUDE_DIRECTORIES(JFJochPreview PRIVATE ${JPEG_INCLUDE_DIR}) diff --git a/receiver/CMakeLists.txt b/receiver/CMakeLists.txt index b2787b44..080547b3 100644 --- a/receiver/CMakeLists.txt +++ b/receiver/CMakeLists.txt @@ -15,4 +15,4 @@ TARGET_LINK_LIBRARIES(JFJochReceiver ImagePusher JFJochImageAnalysis JFJochAcqui ADD_EXECUTABLE(jfjoch_action_test jfjoch_action_test.cpp) TARGET_LINK_LIBRARIES(jfjoch_action_test JFJochReceiver) -INSTALL(TARGETS jfjoch_action_test RUNTIME) +INSTALL(TARGETS jfjoch_action_test RUNTIME COMPONENT jfjoch) diff --git a/receiver/JFJochReceiver.cpp b/receiver/JFJochReceiver.cpp index e6ee8459..3471e15a 100644 --- a/receiver/JFJochReceiver.cpp +++ b/receiver/JFJochReceiver.cpp @@ -67,8 +67,9 @@ JFJochReceiver::JFJochReceiver(const DiffractionExperiment& in_experiment, images_to_go.Put(i); // Setup frames summation and forwarding - for (int i = 0; i < frame_transformation_nthreads; i++) { - auto handle = std::async(std::launch::async, &JFJochReceiver::FrameTransformationThread, this); + for (uint32_t i = 0; i < frame_transformation_nthreads; i++) { + auto handle = std::async(std::launch::async, &JFJochReceiver::FrameTransformationThread, + this, i); frame_transformation_futures.emplace_back(std::move(handle)); } @@ -255,12 +256,12 @@ void JFJochReceiver::RetrievePedestal() { } } -void JFJochReceiver::FrameTransformationThread() { +void JFJochReceiver::FrameTransformationThread(uint32_t threadid) { std::unique_ptr analyzer; try { - numa_policy.Bind(); + numa_policy.Bind(threadid); analyzer = std::make_unique(experiment); } catch (const JFJochException &e) { frame_transformation_ready.count_down(); @@ -554,10 +555,10 @@ JFJochReceiverStatus JFJochReceiver::GetStatus() const { if ((experiment.GetImageNum() > 0) && (compressed_size > 0)) { ret.compressed_ratio = static_cast ((images_sent + images_skipped) - * experiment.GetPixelDepth() - * experiment.GetModulesNum() - * RAW_MODULE_SIZE) - / static_cast (compressed_size); + * experiment.GetPixelDepth() + * experiment.GetModulesNum() + * RAW_MODULE_SIZE) + / static_cast (compressed_size); } ret.progress = GetProgress(); diff --git a/receiver/JFJochReceiver.h b/receiver/JFJochReceiver.h index dd867524..bb66f35e 100644 --- a/receiver/JFJochReceiver.h +++ b/receiver/JFJochReceiver.h @@ -114,7 +114,7 @@ class JFJochReceiver { LossyFilter serialmx_filter; void AcquireThread(uint16_t data_stream); - void FrameTransformationThread(); + void FrameTransformationThread(uint32_t threadid); void Cancel(const JFJochException &e); void FinalizeMeasurement(); void RetrievePedestal(); diff --git a/writer/CMakeLists.txt b/writer/CMakeLists.txt index efb86f99..84931728 100644 --- a/writer/CMakeLists.txt +++ b/writer/CMakeLists.txt @@ -1,8 +1,6 @@ -FIND_PACKAGE(HDF5 1.10 REQUIRED) ADD_LIBRARY(JFJochHDF5Wrappers STATIC HDF5Objects.cpp HDF5Objects.h ../compression/bitshuffle/bshuf_h5filter.c) -TARGET_LINK_LIBRARIES(JFJochHDF5Wrappers Compression ${HDF5_LIBRARIES}) -TARGET_INCLUDE_DIRECTORIES(JFJochHDF5Wrappers PUBLIC ${HDF5_INCLUDE_DIRS}) +TARGET_LINK_LIBRARIES(JFJochHDF5Wrappers Compression hdf5-static) ADD_LIBRARY(JFJochWriter STATIC HDF5DataFile.h HDF5DataFile.cpp @@ -36,4 +34,4 @@ TARGET_INCLUDE_DIRECTORIES(WriterAPI PUBLIC gen/model gen/api) ADD_EXECUTABLE(jfjoch_writer jfjoch_writer.cpp JFJochWriterHttp.h JFJochWriterHttp.cpp) TARGET_LINK_LIBRARIES(jfjoch_writer JFJochWriter WriterAPI) -INSTALL(TARGETS jfjoch_writer RUNTIME) +INSTALL(TARGETS jfjoch_writer RUNTIME COMPONENT writer)