From 7b3fe0a2cd7cc249f8fcda83bcf45faedf2a9c9a Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Mon, 21 Oct 2024 14:10:36 +0100 Subject: [PATCH] Make sure we enable dev/shm when required (#555) * Make sure dev/shm is turned on when we're comparing results * Pin dodal * Add comment to explain constant --------- Co-authored-by: Oliver Silvester Co-authored-by: olliesilvester <122091460+olliesilvester@users.noreply.github.com> --- .../experiment_plans/flyscan_xray_centre_plan.py | 2 +- src/mx_bluesky/hyperion/parameters/constants.py | 6 ++++-- src/mx_bluesky/hyperion/parameters/gridscan.py | 7 ++++--- .../hyperion/parameters/test_parameter_model.py | 13 +++++++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py b/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py index be39c1b50..7a0b6c757 100755 --- a/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +++ b/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py @@ -135,7 +135,7 @@ def flyscan_xray_centre( parameters.features.update_self_from_server() composite.eiger.set_detector_parameters(parameters.detector_params) composite.zocalo.zocalo_environment = parameters.zocalo_environment - composite.zocalo.use_cpu_and_gpu = parameters.use_cpu_and_gpu_zocalo + composite.zocalo.use_cpu_and_gpu = parameters.compare_cpu_and_gpu_results feature_controlled = _get_feature_controlled(composite, parameters) diff --git a/src/mx_bluesky/hyperion/parameters/constants.py b/src/mx_bluesky/hyperion/parameters/constants.py index d7c304517..eae995aff 100644 --- a/src/mx_bluesky/hyperion/parameters/constants.py +++ b/src/mx_bluesky/hyperion/parameters/constants.py @@ -113,9 +113,11 @@ class I03Constants: OAV_CENTRING_FILE = _test_oav_file if TEST_MODE else _live_oav_file SHUTTER_TIME_S = 0.06 USE_PANDA_FOR_GRIDSCAN = False - USE_GPU_FOR_GRIDSCAN_ANALYSIS = False THAWING_TIME = 20 - USE_CPU_AND_GPU_ZOCALO = False + + # Turns on GPU processing for zocalo and logs a comparison between GPU and CPU- + # processed results. GPU results never used in analysis for now + COMPARE_CPU_AND_GPU_ZOCALO = False @dataclass(frozen=True) diff --git a/src/mx_bluesky/hyperion/parameters/gridscan.py b/src/mx_bluesky/hyperion/parameters/gridscan.py index b9f675163..e6c4d7c90 100644 --- a/src/mx_bluesky/hyperion/parameters/gridscan.py +++ b/src/mx_bluesky/hyperion/parameters/gridscan.py @@ -38,8 +38,9 @@ class GridCommon( default=CONST.HARDWARE.PANDA_FGS_RUN_UP_DEFAULT ) use_panda: bool = Field(default=CONST.I03.USE_PANDA_FOR_GRIDSCAN) - use_gpu: bool = Field(default=CONST.I03.USE_GPU_FOR_GRIDSCAN_ANALYSIS) - use_cpu_and_gpu_zocalo: bool = Field(default=CONST.I03.USE_CPU_AND_GPU_ZOCALO) + compare_cpu_and_gpu_results: bool = Field( + default=CONST.I03.COMPARE_CPU_AND_GPU_ZOCALO + ) ispyb_experiment_type: IspybExperimentType = Field( default=IspybExperimentType.GRIDSCAN_3D ) @@ -72,7 +73,7 @@ def detector_params(self): use_roi_mode=self.use_roi_mode, det_dist_to_beam_converter_path=self.det_dist_to_beam_converter_path, trigger_mode=self.trigger_mode, - enable_dev_shm=self.use_gpu, + enable_dev_shm=self.compare_cpu_and_gpu_results, **optional_args, ) diff --git a/tests/unit_tests/hyperion/parameters/test_parameter_model.py b/tests/unit_tests/hyperion/parameters/test_parameter_model.py index cc6a59553..7d07c7bc1 100644 --- a/tests/unit_tests/hyperion/parameters/test_parameter_model.py +++ b/tests/unit_tests/hyperion/parameters/test_parameter_model.py @@ -1,5 +1,6 @@ import json from pathlib import Path +from unittest.mock import patch import pytest from dodal.devices.aperturescatterguard import ApertureValue @@ -120,3 +121,15 @@ def test_selected_aperture_uses_default(): raw_params["selected_aperture"] = None params = RotationScan(**raw_params) assert params.selected_aperture == ApertureValue.LARGE + + +@patch("mx_bluesky.hyperion.parameters.gridscan.os") +def test_gpu_enabled_if_use_gpu_or_compare_gpu_enabled(_, minimal_3d_gridscan_params): + minimal_3d_gridscan_params["detector_distance_mm"] = 100 + + grid_scan = ThreeDGridScan(**minimal_3d_gridscan_params) + assert not grid_scan.detector_params.enable_dev_shm + + minimal_3d_gridscan_params["compare_cpu_and_gpu_results"] = True + grid_scan = ThreeDGridScan(**minimal_3d_gridscan_params) + assert grid_scan.detector_params.enable_dev_shm