Improve pulscan integration and GPU robustness - #282
Conversation
- Introduced new source file `aa_device_pulscan.cu` containing CUDA kernels for Pulscan processing. - Updated `aa_pipeline_runner.hpp` to include Pulscan candidate retrieval method, conditionally compiled based on `AA_WITH_PULSCAN`. - Modified `meson.build` to add compilation flag for Pulscan support. - Included `aa_device_pulscan.cu` in the build source list. - Implemented various kernels for data processing, normalization, and candidate searching specific to Pulscan.
- Implemented test for calculating logp in `test_pulscan_calculate_logp.cpp` and corresponding CMake configuration. - Added sorting test for pulscan candidates in `test_pulscan_candidate_sort.cpp` with CMake setup. - Created decimation harmonics test in `test_pulscan_decimate_harmonics.cpp` and its CMake configuration. - Developed helper functions test in `test_pulscan_helpers.cpp` with appropriate CMake integration. - Introduced magnitude squared test in `test_pulscan_magnitude_squared.cpp` and its CMake setup. - Added median normalization test in `test_pulscan_median_normalisation.cpp` with CMake configuration. - Integrated pipeline testing in `test_pulscan_pipeline_integration.cpp` and corresponding CMake setup. - Created separate components test in `test_pulscan_separate_components.cpp` with CMake configuration.
## Summary This PR finishes the current Pulscan integration work in AstroAccelerate and tightens a few GPU-side failure modes that were uncovered during delivery testing. ## What changed - standardize the Pulscan build flag on `AA_ENABLE_PULSCAN` across CMake, Meson, Makefile, and docs - add the dedicated Pulscan runner and wire Pulscan output generation into the main pipeline flow - fix the Pulscan boxcar tail-handling bug that could emit bogus large candidates on short inputs - propagate `failsafe` correctly and harden DDTR/corner-turn memory and launch handling - add regression coverage for boxcar filtering, compatibility helpers, and the requirement that Pulscan only runs with periodicity enabled - update the README with build, install, runtime, output, and `AA_PULSCAN_DUMP_FFT` documentation - add helper configs and the filterbank split script used for validation ## Validation - rebuilt `astro-accelerate` successfully - ran the short repro `.fil` and confirmed the abnormal large Pulscan values disappeared - ran `build-tests/tests/test_pulscan_boxcar_filter` - ran the larger `73df` delivery input through AA and produced Pulscan output successfully
There was a problem hiding this comment.
Pull request overview
This PR completes Pulscan integration in AstroAccelerate by adding the GPU-side Pulscan kernels and a dedicated Pulscan runner, wiring Pulscan outputs into the main pipeline/CLI flow, and hardening a CUDA corner-turn failure mode. It also adds a suite of Pulscan-focused regression tests and updates build flags and documentation.
Changes:
- Add Pulscan GPU kernels (
aa_device_pulscan.cu), host runner (aa_pulscan_runner.hpp), and pipeline/CLI hooks to generate Pulscan outputs. - Harden GPU behavior (corner-turn large grid-Y handling; device info clock-rate querying compatibility).
- Add Pulscan regression/integration tests, docs updates, and helper scripts/configs.
Reviewed changes
Copilot reviewed 58 out of 62 changed files in this pull request and generated 18 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_pulscan_separate_components.cpp | New CUDA kernel regression test for complex separation |
| tests/test_pulscan_separate_components.cmake | CMake wiring for the new test |
| tests/test_pulscan_requires_periodicity.cpp | New test ensuring Pulscan does not run without periodicity |
| tests/test_pulscan_requires_periodicity.cmake | CMake wiring for the new test |
| tests/test_pulscan_pipeline_integration.cpp | New end-to-end Pulscan+pipeline integration test |
| tests/test_pulscan_pipeline_integration.cmake | CMake wiring for the new test |
| tests/test_pulscan_median_normalisation.cpp | New CUDA median-normalisation regression test |
| tests/test_pulscan_median_normalisation.cmake | CMake wiring for the new test |
| tests/test_pulscan_magnitude_squared.cpp | New CUDA magnitude-squared regression test |
| tests/test_pulscan_magnitude_squared.cmake | CMake wiring for the new test |
| tests/test_pulscan_helpers.cpp | New helper-function regression test (sigma conversion) |
| tests/test_pulscan_helpers.cmake | CMake wiring for the new test |
| tests/test_pulscan_decimate_harmonics.cpp | New CUDA harmonic decimation regression test |
| tests/test_pulscan_decimate_harmonics.cmake | CMake wiring for the new test |
| tests/test_pulscan_compatibility_helpers.cpp | New test for FFT-bin truncation helper |
| tests/test_pulscan_compatibility_helpers.cmake | CMake wiring for the new test |
| tests/test_pulscan_candidate_sort.cpp | New candidate sorting/trim regression test |
| tests/test_pulscan_candidate_sort.cmake | CMake wiring for the new test |
| tests/test_pulscan_calculate_logp.cpp | New CUDA logp calculation regression test |
| tests/test_pulscan_calculate_logp.cmake | CMake wiring for the new test |
| tests/test_pulscan_boxcar_filter.cpp | New CUDA boxcar filter regression test (tail handling) |
| tests/test_pulscan_boxcar_filter.cmake | CMake wiring for the new test |
| tests/CMakeLists.txt | Conditionally include Pulscan tests under AA_ENABLE_PULSCAN |
| src/aa_main.cpp | Add Pulscan output-dir handling and output emission from the CLI pipeline |
| src/aa_device_pulscan.cu | New Pulscan CUDA kernels + kernel wrappers + sigma helper |
| src/aa_device_corner_turn_kernel.cu | Extend corner-turn kernel wrapper to support grid-Y tiling via offset |
| src/aa_corner_turn.cpp | Add grid-Y tiling loop to avoid exceeding CUDA’s grid dimension limit |
| scripts/split_filterbank.py | New helper script to split .fil files into chunks |
| meson_srclist.txt | Add Pulscan CUDA source to Meson build list |
| meson.build | Map Meson with_pulscan option to AA_ENABLE_PULSCAN define |
| input_files/ska_test_file.txt | Update/replace example config content |
| input_files/pulscan_test.cfg | New Pulscan test config |
| input_files/pulscan_sample.cfg | New Pulscan sample config |
| input_files/pulscan_repro_no_periodicity.cfg | New repro config without periodicity enabled |
| input_files/pulscan_gpu.cu | Added Pulscan reference/validation CUDA source (input_files) |
| input_files/pulscan_generated.cfg | New Pulscan generated-input config |
| input_files/pulscan_dm30125_part000_delivery.cfg | New delivery config (includes pulscan output dir) |
| input_files/pulscan_dm30125_part000.cfg | New delivery config variant |
| input_files/pulscan_dm30125.cfg | New delivery config variant |
| include/aa_pulscan_runner.hpp | New Pulscan runner implementation and workspace management |
| include/aa_pipeline_runner.hpp | Add Pulscan candidate access/output hooks to pipeline runner interface |
| include/aa_pipeline_api.hpp | Expose Pulscan candidate access/output via the API wrapper |
| include/aa_pipeline.hpp | Add failsafe as a pipeline option and describe it |
| include/aa_params.hpp | Define AA_ENABLE_PULSCAN default (0) when not provided by build |
| include/aa_device_pulscan.hpp | New Pulscan types and kernel wrapper declarations |
| include/aa_device_info.hpp | Improve robustness of clock-rate retrieval across CUDA versions |
| include/aa_device_corner_turn_kernel.hpp | Update corner-turn kernel wrapper signature to include Y-offset |
| include/aa_config.hpp | Add Pulscan output dir flag parsing and propagate failsafe option |
| build-tests/examples/CTestTestfile.cmake | (Appears to be generated build output committed) |
| build-tests/astroaccelerate.pc | (Appears to be generated build output committed) |
| build-tests/astro-accelerateConfig.cmake | (Appears to be generated build output committed) |
| build-tests/Testing/Temporary/LastTestsFailed.log | (Appears to be generated build output committed) |
| build-tests/Testing/Temporary/LastTest.log | (Appears to be generated build output committed) |
| build-tests/DartConfiguration.tcl | (Appears to be generated build output committed) |
| build-tests/CTestTestfile.cmake | (Appears to be generated build output committed) |
| README.md | Document Pulscan build/run/output behavior and env var for FFT dumps |
| Makefile | Map PULSCAN=1 to -DAA_ENABLE_PULSCAN=1 |
| MANUAL.md | Add Pulscan build/usage notes |
| CMakeLists.txt | Add AA_ENABLE_PULSCAN option and standardize C++14 flags/linking |
| .gitignore | Ignore Pulscan outputs/dumps |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if(!ddtr_strategy.ready()) { | ||
| std::cout << "DDTR strategy not ready" << std::endl; | ||
| return 0; | ||
| } |
There was a problem hiding this comment.
This test treats an unready DDTR strategy as a success by returning 0. That makes the test pass without exercising any Pulscan integration and can hide regressions on machines/configurations where the strategy cannot be constructed. Return a non-zero exit code when ddtr_strategy.ready() is false so CI surfaces the failure.
| copy_ddtr_data_to_host | ||
| threshold | ||
| failsafe | ||
| file /mnt/data/jay/ska_split/1_part000.fil |
There was a problem hiding this comment.
This config hardcodes a developer-local absolute input path (/mnt/data/jay/...). To keep these example configs portable, replace it with a relative path or a placeholder path and describe expected file location in the docs.
| selected_card_id 0 | ||
| periodicity | ||
| copy_ddtr_data_to_host | ||
| pulscan-output-dir /home/jay/workspace/aa/astro-accelerate/build/pulscan_delivery_part000 |
There was a problem hiding this comment.
pulscan-output-dir is set to a developer-local absolute path. For a committed example config, prefer a relative path (e.g. ./pulscan_out) or a placeholder so other users can run it without editing.
| pulscan-output-dir /home/jay/workspace/aa/astro-accelerate/build/pulscan_delivery_part000 | |
| pulscan-output-dir ./pulscan_out |
| if (strcmp(string, "pulscan-output-dir") == 0 || | ||
| strcmp(string, "pulscan_output_dir") == 0) { | ||
| wordexp_t expanded_string; | ||
|
|
||
| if (fscanf(fp_in, "%s", string) == 0) | ||
| { | ||
| fprintf(stderr, "failed to read input\n"); | ||
| return false; | ||
| } | ||
| wordexp(string, &expanded_string, 0); | ||
| if(expanded_string.we_wordc > 0) { | ||
| flg.pulscan_output_dir = expanded_string.we_wordv[0]; | ||
| } | ||
| wordfree(&expanded_string); |
There was a problem hiding this comment.
wordexp(..., 0) may perform command substitution (e.g. $(...)) depending on libc implementation, which can lead to unexpected command execution if the config file is untrusted. For an output directory path expansion, consider using WRDE_NOCMD (and checking wordexp's return code) or switching to a safer expansion approach (e.g. only ~ handling) to avoid executing shell constructs.
| if(!runner.ready()) { | ||
| std::cout << "Pipeline runner not ready" << std::endl; | ||
| return 0; | ||
| } |
There was a problem hiding this comment.
runner.ready() failure currently returns 0 (success), which can cause this integration test to silently pass without running the pipeline. Return a non-zero exit code so the test properly signals setup failures.
| copy_ddtr_data_to_host | ||
| threshold | ||
| failsafe | ||
| file /mnt/data/jay/aa_pulscan_repro/pulscan_repro_part000.fil No newline at end of file |
There was a problem hiding this comment.
This config hardcodes a developer-local absolute input path. Consider using a placeholder or relative path so others can run it without local path edits.
| file /mnt/data/jay/aa_pulscan_repro/pulscan_repro_part000.fil | |
| file pulscan_repro_part000.fil |
| if(!ddtr_strategy_instance.ready()) { | ||
| std::cout << "DDTR strategy not ready after binding" << std::endl; | ||
| return 0; | ||
| } |
There was a problem hiding this comment.
Similarly, this branch returns 0 when the runner strategy is not ready after binding. That exits successfully even though the test didn't validate Pulscan output ordering. Prefer returning a non-zero code here to ensure the test fails when setup is invalid.
| # CMake generated Testfile for | ||
| # Source directory: /home/jay/workspace/aa/astro-accelerate | ||
| # Build directory: /home/jay/workspace/aa/astro-accelerate/build-tests | ||
| # | ||
| # This file includes the relevant testing commands required for | ||
| # testing this directory and lists subdirectories to be tested as well. | ||
| add_test(test_filterbank_metadata_1 "tests/test_filterbank_metadata_1") | ||
| set_tests_properties(test_filterbank_metadata_1 PROPERTIES PASS_REGULAR_EXPRESSION "test_filterbank_metadata_1 pass" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_filterbank_metadata_1.cmake;11;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_filterbank_metadata_1.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;4;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_ddtr_strategy_1 "tests/test_ddtr_strategy_1") | ||
| set_tests_properties(test_ddtr_strategy_1 PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_strategy_1.cmake;18;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_strategy_1.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;5;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_ddtr_strategy_2 "tests/test_ddtr_strategy_2") | ||
| set_tests_properties(test_ddtr_strategy_2 PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_strategy_2.cmake;18;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_strategy_2.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;6;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_periodicity_strategy_1 "tests/test_periodicity_strategy_1") | ||
| set_tests_properties(test_periodicity_strategy_1 PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_periodicity_strategy_1.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_periodicity_strategy_1.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;7;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_device_memory_request "tests/test_device_memory_request" "6000000000") | ||
| set_tests_properties(test_device_memory_request PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_device_memory_request.cmake;17;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_device_memory_request.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;8;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_single_pulse_search_scan_1 "tests/test_single_pulse_search_scan_1") | ||
| set_tests_properties(test_single_pulse_search_scan_1 PROPERTIES FAIL_REGULAR_EXPRESSION "Test not passed" PASS_REGULAR_EXPRESSION "Test OK. Passed" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_single_pulse_search_scan_1.cmake;17;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_single_pulse_search_scan_1.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;9;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_ddtr_fakesignal_single "tests/test_ddtr_fakesignal_single") | ||
| set_tests_properties(test_ddtr_fakesignal_single PROPERTIES FAIL_REGULAR_EXPRESSION "Test not passed" PASS_REGULAR_EXPRESSION "Test OK. Passed" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_fakesignal_single.cmake;14;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_fakesignal_single.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;10;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_ddtr_fakesignal_period "tests/test_ddtr_fakesignal_period") | ||
| set_tests_properties(test_ddtr_fakesignal_period PROPERTIES FAIL_REGULAR_EXPRESSION "Test failed" PASS_REGULAR_EXPRESSION "Test passed" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_fakesignal_period.cmake;14;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_ddtr_fakesignal_period.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;11;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_compatibility_helpers "tests/test_pulscan_compatibility_helpers") | ||
| set_tests_properties(test_pulscan_compatibility_helpers PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_compatibility_helpers.cmake;14;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_compatibility_helpers.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;14;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_helpers "tests/test_pulscan_helpers") | ||
| set_tests_properties(test_pulscan_helpers PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_helpers.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_helpers.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;15;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_magnitude_squared "tests/test_pulscan_magnitude_squared") | ||
| set_tests_properties(test_pulscan_magnitude_squared PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_magnitude_squared.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_magnitude_squared.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;16;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_separate_components "tests/test_pulscan_separate_components") | ||
| set_tests_properties(test_pulscan_separate_components PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_separate_components.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_separate_components.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;17;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_median_normalisation "tests/test_pulscan_median_normalisation") | ||
| set_tests_properties(test_pulscan_median_normalisation PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_median_normalisation.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_median_normalisation.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;18;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_decimate_harmonics "tests/test_pulscan_decimate_harmonics") | ||
| set_tests_properties(test_pulscan_decimate_harmonics PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_decimate_harmonics.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_decimate_harmonics.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;19;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_calculate_logp "tests/test_pulscan_calculate_logp") | ||
| set_tests_properties(test_pulscan_calculate_logp PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_calculate_logp.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_calculate_logp.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;20;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_boxcar_filter "tests/test_pulscan_boxcar_filter") | ||
| set_tests_properties(test_pulscan_boxcar_filter PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_boxcar_filter.cmake;15;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_boxcar_filter.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;21;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_candidate_sort "tests/test_pulscan_candidate_sort") | ||
| set_tests_properties(test_pulscan_candidate_sort PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_candidate_sort.cmake;13;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_candidate_sort.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;22;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_pipeline_integration "tests/test_pulscan_pipeline_integration") | ||
| set_tests_properties(test_pulscan_pipeline_integration PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_pipeline_integration.cmake;16;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_pipeline_integration.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;23;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| add_test(test_pulscan_requires_periodicity "tests/test_pulscan_requires_periodicity") | ||
| set_tests_properties(test_pulscan_requires_periodicity PROPERTIES PASS_REGULAR_EXPRESSION "Runs" _BACKTRACE_TRIPLES "/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_requires_periodicity.cmake;16;add_test;/home/jay/workspace/aa/astro-accelerate/tests/test_pulscan_requires_periodicity.cmake;0;;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;24;include;/home/jay/workspace/aa/astro-accelerate/tests/CMakeLists.txt;0;;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;260;include;/home/jay/workspace/aa/astro-accelerate/CMakeLists.txt;0;") | ||
| subdirs("examples") |
There was a problem hiding this comment.
These build-tests/... files appear to be CMake/CTest generated build artifacts (they embed absolute paths like /home/jay/...). They should not be committed to the repository because they are machine-specific and will churn constantly. Remove the committed build-tests/ outputs and add build-tests/ to .gitignore (or generate them only in CI/build directories).
| copy_ddtr_data_to_host | ||
| threshold | ||
| failsafe | ||
| file /home/jay/workspace/aa/pulscan/sample_data/1298us_binary_multi32_8bit.fil |
There was a problem hiding this comment.
This config hardcodes a developer-local absolute input path. For portability, switch to a relative/placeholder path (and/or add a short comment explaining where the .fil should come from).
| file /home/jay/workspace/aa/pulscan/sample_data/1298us_binary_multi32_8bit.fil | |
| file sample_data/1298us_binary_multi32_8bit.fil |
| copy_ddtr_data_to_host | ||
| threshold | ||
| failsafe | ||
| file /mnt/data/jay/aa_pulscan_repro/pulscan_repro_part000.fil |
There was a problem hiding this comment.
This repro config hardcodes a developer-local absolute input path. Consider using a placeholder path and documenting how to obtain/generate the repro input so others can run it.
| file /mnt/data/jay/aa_pulscan_repro/pulscan_repro_part000.fil | |
| file path/to/pulscan_repro_part000.fil |
|
Closing this PR in favor of #284, which is the recreated PR from |
Summary
This PR finishes the current Pulscan integration work in AstroAccelerate and tightens a few GPU-side failure modes that were uncovered during delivery testing.
What changed
AA_ENABLE_PULSCANacross CMake, Meson, Makefile, and docsfailsafecorrectly and harden DDTR/corner-turn memory and launch handlingAA_PULSCAN_DUMP_FFTdocumentationValidation
astro-acceleratesuccessfully.filand confirmed the abnormal large Pulscan values disappearedbuild-tests/tests/test_pulscan_boxcar_filter73dfdelivery input through AA and produced Pulscan output successfully