From 36832b7acb797d158ab5a64df10858624272445a Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Sat, 17 Jan 2026 19:50:36 -0500 Subject: [PATCH 1/5] Use loopy and pymbolic releases from 2024 --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index e5e9f8e4..94e98210 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -git+https://github.com/inducer/loopy.git#egg=loopy -git+https://github.com/inducer/pymbolic.git#egg=pymbolic +loopy==2025.2 +pymbolic==2025.1 libclang==14.0.6 -pytools==2024.1.13 +pytools==2025.2.2 symengine==0.13.0 From e4ed9cbc40053d37c6889f9999349fead603c1e5 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Sat, 17 Jan 2026 20:04:41 -0500 Subject: [PATCH 2/5] Use the latest compilers --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb55f77a..c6f89a50 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: shell: bash -l {0} strategy: matrix: - compiler: [gcc-10, clang-15] + compiler: [gcc, clang] fail-fast: false name: "${{ matrix.compiler }}" env: From 6beec2c113a56840a5743fa074310dd076808dde Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Sat, 17 Jan 2026 20:09:41 -0500 Subject: [PATCH 3/5] Fix doc failures --- src/log.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/log.c b/src/log.c index 325922df..ad2cb03b 100644 --- a/src/log.c +++ b/src/log.c @@ -124,8 +124,6 @@ int nomp_get_err_no(unsigned id) { /** * @ingroup nomp_log_utils * @brief Free variables used to keep track of logs. - * - * @return void */ void nomp_log_finalize(void) { for (unsigned i = 0; i < logs_n; i++) @@ -183,7 +181,6 @@ static unsigned find_time_log(const char *entry) { * @param[in] toggle Toggles the timer between tick (start of timing) and a tock * (end of timing). * @param[in] sync Execute nomp_sync when toggling off the timer. - * @return void */ void nomp_profile(const char *name, const int toggle, const int sync) { if (profile_level == 0) return; @@ -233,8 +230,6 @@ void nomp_profile(const char *name, const int toggle, const int sync) { * @ingroup nomp_profiler_utils * @brief Prints all the execution times recorded by the program. * This function is executed only when the `--nomp-profile` is provided. - * - * @return int */ void nomp_profile_result(void) { if (profile_level == 0) return; @@ -254,8 +249,6 @@ void nomp_profile_result(void) { /** * @ingroup nomp_profiler_utils * @brief Free variables used to keep track of time logs. - * - * @return void */ void nomp_profile_finalize(void) { for (unsigned i = 0; i < time_logs_n; i++) From 6b87047eae6b80de11ddf27df7c4f4bc20f117f0 Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 19 Jan 2026 22:29:18 -0500 Subject: [PATCH 4/5] Remove the call to `realpath` --- lncfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lncfg b/lncfg index 7a27fcb5..ae2d35ca 100755 --- a/lncfg +++ b/lncfg @@ -70,7 +70,7 @@ while [ $# -gt 0 ]; do --cflags) shift && NOMP_C_FLAGS="${1}" ;; --build-type) shift && NOMP_BUILD_TYPE=${1} ;; --build-dir) shift && NOMP_BUILD_DIR=$(realpath "${1}") ;; - --install-prefix) shift && NOMP_INSTALL_DIR=$(realpath "${1}") ;; + --install-prefix) shift && NOMP_INSTALL_DIR="${1}" ;; --prefix-path) shift && NOMP_PREFIX_PATH="${1}" ;; --enable-hip) NOMP_ENABLE_HIP="ON" ;; --enable-cuda) NOMP_ENABLE_CUDA="ON" ;; From 121a41ee63fcb9a97389de98580bb809a319985f Mon Sep 17 00:00:00 2001 From: Thilina Ratnayaka Date: Mon, 19 Jan 2026 22:59:21 -0500 Subject: [PATCH 5/5] Fix an error in finding unique domains Co-authored-by: Kaushik Kulkarni --- python/loopy_api.py | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/python/loopy_api.py b/python/loopy_api.py index eb51e1cc..586b2d5a 100644 --- a/python/loopy_api.py +++ b/python/loopy_api.py @@ -791,22 +791,12 @@ def c_to_loopy(c_str: str, backend: str) -> lp.translation_unit.TranslationUnit: ), ) - # FIXME: This could probably be done in a more pythonic way. - unique_domains = frozenset() - for domain in acc.domains: - new = True - for unique_domain in unique_domains: - if unique_domain == domain: - new = False - for i, j in zip( - unique_domain.get_id_dict().keys(), - domain.get_id_dict().keys(), - ): - if i.get_name() != j.get_name(): - new = True - break - if new: - unique_domains = unique_domains | {domain} + from constantdict import constantdict + + unique_domains_x_var_dict = frozenset( + {(dom, constantdict(dom.get_var_dict())) for dom in acc.domains} + ) + unique_domains = tuple(dom for (dom, _) in unique_domains_x_var_dict) knl = lp.make_kernel( unique_domains,