Skip to content

Tb helix solver app talk to gpu #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

tboldagh
Copy link

@tboldagh tboldagh commented Feb 6, 2024

Document setup needed to run & develop the helix solver for GPU.
@codespaghettifier

tboldagh and others added 30 commits January 31, 2023 16:27
Changed box definitions to float
* Separated AccumulatorSection into a standalone class, added unit test and CMakeFiles

* Deep refactor

* Refactor of scripts for adaptive processing illustrations

* Mainly refactor plotting scipts

* More updates to the algorithm and drawing scipts

* More updates to the algorithm and drawing scipts

* Improved docu

* Fixed lines count condition, improved cells drawing

* Drop dead code, added more connets for future dev
* Separated AccumulatorSection into a standalone class, added unit test and CMakeFiles

* Deep refactor

* Refactor of scripts for adaptive processing illustrations

* Mainly refactor plotting scipts

* More updates to the algorithm and drawing scipts

* More updates to the algorithm and drawing scipts

* Improved docu

* Fixed lines count condition, improved cells drawing

* Drop dead code, added more connets for future dev

* Renamed Stub to point
* Prepared env for oneAPI

* Compiling with SYCL

* Fix to CMakeLists.txt
* Conditional DEBUG added, optimized Accumulator_Lines, added cell solution limits for the lines histogram

* Added functionality to save ROOT file (for larger scale perfromance tests)

* Resolved conflicts II

* resolved conflicts III

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
Co-authored-by: tboldagh <tomasz.bold@gmail.com>
Co-authored-by: Tomasz Bold <68424406+tboldagh@users.noreply.github.com>
Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
…dges (#10)

* Added ODD speciifc RZ exclussion regions

* Added functions to divide measurement points into z phi wedges
* Reconstruction efficiency

* Added macro plotting histogram of truth and Hough pt and phi

* Added macro plotting divisionLevel histogram

* Updates after PR II

* Resolved conflicts

* Reconstruction efficiency for single muon

* Deleted input files + minor changes

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
* Assign value to ACC_*_PRECISION from config.json

* Solve options deliver to kernel

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
Co-authored-by: tboldagh <tomasz.bold@gmail.com>
* Events filter based on hits

* Fix
- added description of scripts
* Assign value to ACC_*_PRECISION from config.json

* Solve options deliver to kernel

* Improved file for accumulator plots (lines, solutions, colors)

* Number of solutions for different precision

* Updated scripts, Filtering_Analysis

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
Co-authored-by: tboldagh <tomasz.bold@gmail.com>
* Assign value to ACC_*_PRECISION from config.json

* Solve options deliver to kernel

* Improved file for accumulator plots (lines, solutions, colors)

* Number of solutions for different precision

* Updated scripts, Filtering_Analysis

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
Co-authored-by: tboldagh <tomasz.bold@gmail.com>
* Assign value to ACC_*_PRECISION from config.json

* Solve options deliver to kernel

* Improved file for accumulator plots (lines, solutions, colors)

* Number of solutions for different precision

* Updated scripts, Filtering_Analysis

* Added Gauss filtering

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
Co-authored-by: tboldagh <tomasz.bold@gmail.com>
* Assign value to ACC_*_PRECISION from config.json

* Solve options deliver to kernel

* Improved file for accumulator plots (lines, solutions, colors)

* Number of solutions for different precision

* Updated scripts, Filtering_Analysis

* Added Gauss filtering

* Region division opimalization

* Resolved conflicts II

---------

Co-authored-by: Stefan Horodenski <shorodenski@student.agh.edu.pl>
Co-authored-by: tboldagh <tomasz.bold@gmail.com>
* Testing data splitting kernel

* Test data transfer time

* Random points

* Transform to cylindrical

* Issue with splitting

* Played with splitting

* Remove binary

* Adaptations for SYCL

* Refactored around order check

* phi wrapping at +pi fixed

* Switch to proper FMA

* Count sections buffer size with wider counter
* Add missing files

* Added sorter header
sh76909 and others added 8 commits October 14, 2023 04:20
* Code optimization, removing std::vector

* Solved error for pileup
* Testing data splitting kernel

* fix conflicts
* Update README.md

- added description of scripts

* Linear fit, pileup efficiency

* Variable bin width
* Move everything to old directory

* Move all files to 'old' directory

Move all files to 'old directory in preparation for the new prject structure and build system.

* Add README to the root directory

* Add build script

Add build.sh build script responsible for building the application, tools, and tests.

* Add documentation for installation, building, and running

Add InstallBuildRun.md documentation for installation, environment preparation,
building, running, and running tests.

* Add source_setvars

Add source_setvars.sh script to facilitate sourcing environment variables for SYCL.
Modify build.sh to use source_setvars.sh.

* Add file structure guideline

Add FileStructure.md, a guideline for new file structure of the project.

* Add top-level CMakeLists

Add top-level CMakeLists.txt. It introduces new build system based
on components/libraries of structure compliant with the new file structure.
CmakeLists.txt is used by build.sh to build the application, tools,
and tests. When used, it also generates TestSuitesList.txt in the build
directory. TestSuitesList.txt is intended to be used for running tests
with run_test.py script which will be added later.

* Add AvailableDevicesInfo component and show_devices script.

AvailableDevicesInfo is a tool used to easily check what devices able to run SYCL
applications are available. Devices are listed by name and printed to stdout,
one per line. The program is supposed to be used by show_devices.sh.

* Add run_test

Add run_test.sh - a script running all unit tests present in the
applicaton and framework, based on build/TestSuitesList.txt.

* Add build directory to .gitignore

* Add build folder creation to build.sh and minor building bugfixes

* Add new Dockerfile

* Add codeplay plugin for running SYCL on Nvidia GPUs

* Change device to Nvidia GPU

Add SYCL flags to CMAKE_CXX_FLAGS
Add CUDA to $PATH
* Move everything to old directory

* Move all files to 'old' directory

Move all files to 'old directory in preparation for the new prject structure and build system.

* Add README to the root directory

* Add build script

Add build.sh build script responsible for building the application, tools, and tests.

* Add documentation for installation, building, and running

Add InstallBuildRun.md documentation for installation, environment preparation,
building, running, and running tests.

* Add source_setvars

Add source_setvars.sh script to facilitate sourcing environment variables for SYCL.
Modify build.sh to use source_setvars.sh.

* Add file structure guideline

Add FileStructure.md, a guideline for new file structure of the project.

* Add top-level CMakeLists

Add top-level CMakeLists.txt. It introduces new build system based
on components/libraries of structure compliant with the new file structure.
CmakeLists.txt is used by build.sh to build the application, tools,
and tests. When used, it also generates TestSuitesList.txt in the build
directory. TestSuitesList.txt is intended to be used for running tests
with run_test.py script which will be added later.

* Add AvailableDevicesInfo component and show_devices script.

AvailableDevicesInfo is a tool used to easily check what devices able to run SYCL
applications are available. Devices are listed by name and printed to stdout,
one per line. The program is supposed to be used by show_devices.sh.

* Add run_test

Add run_test.sh - a script running all unit tests present in the
applicaton and framework, based on build/TestSuitesList.txt.

* Add build directory to .gitignore

* Add build folder creation to build.sh and minor building bugfixes

* Add new Dockerfile

* Add codeplay plugin for running SYCL on Nvidia GPUs

* Change device to Nvidia GPU

Add SYCL flags to CMAKE_CXX_FLAGS
Add CUDA to $PATH

* Add helpers for unit tests involving SYCL

* Add ConstSizeVector

Add ConstSizeVector - a container with subset of functionality of std::vector. It
operates on an array of size determined at the compile time. Intened to be
std::vector substiture for use in SYCL kernels.

---------

Co-authored-by: Piotr Libucha <piotr.libucha.off@gmail.com>
* Move everything to old directory

* Move all files to 'old' directory

Move all files to 'old directory in preparation for the new prject structure and build system.

* Add README to the root directory

* Add build script

Add build.sh build script responsible for building the application, tools, and tests.

* Add documentation for installation, building, and running

Add InstallBuildRun.md documentation for installation, environment preparation,
building, running, and running tests.

* Add source_setvars

Add source_setvars.sh script to facilitate sourcing environment variables for SYCL.
Modify build.sh to use source_setvars.sh.

* Add file structure guideline

Add FileStructure.md, a guideline for new file structure of the project.

* Add top-level CMakeLists

Add top-level CMakeLists.txt. It introduces new build system based
on components/libraries of structure compliant with the new file structure.
CmakeLists.txt is used by build.sh to build the application, tools,
and tests. When used, it also generates TestSuitesList.txt in the build
directory. TestSuitesList.txt is intended to be used for running tests
with run_test.py script which will be added later.

* Add AvailableDevicesInfo component and show_devices script.

AvailableDevicesInfo is a tool used to easily check what devices able to run SYCL
applications are available. Devices are listed by name and printed to stdout,
one per line. The program is supposed to be used by show_devices.sh.

* Add run_test

Add run_test.sh - a script running all unit tests present in the
applicaton and framework, based on build/TestSuitesList.txt.

* Add build directory to .gitignore

* Add build folder creation to build.sh and minor building bugfixes

* Add new Dockerfile

* Add codeplay plugin for running SYCL on Nvidia GPUs

* Change device to Nvidia GPU

Add SYCL flags to CMAKE_CXX_FLAGS
Add CUDA to $PATH

* Add helpers for unit tests involving SYCL

* Add ConstSizeVector

Add ConstSizeVector - a container with subset of functionality of std::vector. It
operates on an array of size determined at the compile time. Intened to be
std::vector substiture for use in SYCL kernels.

* Add Debug from old/ to the framework

* Integrate splitter with the new file structure

Copy Splitter from old/experimental/ to the new file stucture. Make
changes necessary for compilation with SYCL.

* Simplify phi_wrap function

Simplify phi_wrap funciton.
Minor formatting changes to experimental/Splitter.

* Fix phi_wrap

* Fix phi_wrap return

* Fix building errors related to std::exp in Splitter

Usage of std::exp caused linking errors. Replace them with sycl::exp.
Works as long as -g option for icpx is not set.
Change device selector to GPU.

* Split execution time measurements in Splitter into two tasks

* Fix Splitter formatting

---------

Co-authored-by: Tomasz Bold <68424406+tboldagh@users.noreply.github.com>
* Add nlohmann-json and CERN's ROOT to docker image

Add nlohmann-json3-dev
Add ROOT v6.25.01
Freeze oneapi to 2023.2.1 to avoid problems with setting up environment for Nvidia GPUs

* Add CERN's ROOT library to build process

* Add CernRoot to framework

CernRoot is a wrapper for ROOT library providing easy way to include it in CMakeLists files

* Integrate HelixSolver app with the new file structure

Copy HelixSolver from old/ to to the new file structure. Make changes
necessary for compilation to succeed

* Fix HelixSolver app so that it compiles for Nvidia GPUs

* Remove experimental from 'old'

Remove experimental from 'old' as it is now fully integrated with
the new file structure

* Update HelixSolver app to match changes made by SH to HelixSolver app in 'old'

Copy HelixSolver from 'old' to 'application'
Fix code fragments causing SYCL build to fail
Reformat HelixSolver files
Fix DISABLE_SYCL in main CMakeLists.txt
Update config.json
Update Debug/Debug.h
@tboldagh tboldagh closed this Feb 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants