Skip to content

Conversation

timniederhausen
Copy link
Contributor

@timniederhausen timniederhausen commented Jul 14, 2025

This should be merged after the vcpkg / Windows PR.

So far:

  • Move all headers into a gprat/ directory.
  • Ensure all declarations are namespaced
  • Introduce the const_tile_data<T> & mutable_tile_data<T> as NUMA-aware replacement for std::vector<T> (where T in float,double)
  • Add HPX performance counters for all BLAS operations

Outstanding:

  • Remove unnecessary prefixes/suffixes from header filenames now that they're in the gprat/ directory.

- Don't rely on nonstandard extensions (such as M_PI)
- Don't rely on transitive includes for some standard types
- Switch to C++20 so we can use std::numbers
from 6b575523ce838fc13517d1a8021ce4883efc29c1
These come from a external project and shouldn't be re-formatted.
This is a separate commit for git's rename tracking
@timniederhausen timniederhausen force-pushed the feature/refactor branch 2 times, most recently from cf71fd9 to 806fa2d Compare July 15, 2025 16:22
@timniederhausen timniederhausen force-pushed the feature/refactor branch 2 times, most recently from da5c325 to 3b18149 Compare July 20, 2025 02:38
Now that our headers are properly namespaced, there's no need to prefix their filenames
with gp_ or end them with _c to avoid name clashes with library users.
They're not costly in terms of workflow minutes so we can just do that.
@constracktor
Copy link
Member

The CI shows, inter alia, shadowing warnings. Pls remove them before we merge.

@timniederhausen timniederhausen force-pushed the feature/refactor branch 3 times, most recently from 5df0f3e to 5a44767 Compare August 11, 2025 02:10
in lieu of std::vector<T> for tiles of type T.
The advantage of this is:
- tiles are easily HPX-serializable and we can put them into HPX components
- we can perhaps later add support for automatic GPU upload
Powered by HPX's performance counter library.
Since this library is only built if networking != none, guard against it being missing.
@timniederhausen timniederhausen force-pushed the feature/refactor branch 2 times, most recently from a4a3541 to 504ddee Compare August 11, 2025 21:09
Quite a few functions took `int` parameters just to cast them to
`std::size_t` everywhere.
@constracktor
Copy link
Member

This PR also adds Windows support. Please add respective a section and instructions into the README.md

@constracktor
Copy link
Member

The refactor currently only works for the CPU code. Compilation for the GPU support fails due to multiple namespace errors.

Extends our performance counter to track #calls and runtime.
Algorithms supporting different schedulers are templates now.
Consequently, they had to be moved from .cpp to .hpp
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.

2 participants