Conversation
Introduce a Topology submodule and thread-pinning infrastructure, add a perftest(file, execute=true) API, and enable a two-pass AST transformation to apply prefix/suffix rules after initial analysis. Key changes: - New Topology module: parses hwloc, exposes cache/NUMA info, arrangement spec types, validation/literalization, executability checks, enforcement (pin/unpin) using ThreadPinningCore, logging hooks, and helper utilities. - Add execution/macros/topology.jl macro to declare perftest thread arrangements and validate them at parse time. - Two-pass AST processing: split rules into first_pass_rules and second_pass_rules and run a second prewalk to handle prefix/suffix transformations. - Add perftest(file, execute) function that runs treeRun, saves generated suite to a *_perfsuite.jl file and optionally includes it for execution; setup logging and error checks integrated. - Machine benchmarking changes: conditionally run CPU/memory benchmarks only if benchmarks are used in the recipe (uses_benchmarks tracking); machineBenchmarks now takes Context and relies on Topology for cache sizes and topology retrieval. - Track uses_benchmarks in GlobalContext and mark usages in roofline/methodology builders so unnecessary probes are skipped. - Configuration updates: new config keys for numas and threads_per_numa, parser for threads macro (parseThreadsMacro), and small formatting/typing cleanups. - Project.toml: fix version key, add BandwidthBenchmark and ThreadPinningCore deps and compat entries. Also contains various small refactors, formatting fixes, and minor bug fixes to make topology + thread pinning work reliably across platforms (with OS-specific fallbacks for enforcement).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added tests, modern bandwidth benchmarks, pinning procedures and procedures to simplify the usage of the package.