File tree Expand file tree Collapse file tree 8 files changed +18
-31
lines changed
Expand file tree Collapse file tree 8 files changed +18
-31
lines changed Original file line number Diff line number Diff line change 2626- [ ] CHANGELOG.md updated (Unreleased)
2727- [ ] Docs updated (if user-facing)
2828- [ ] Optional deps remain optional
29+
30+ ## Guidelines
31+ - Buffer > thread_local >> heap allocation: already enforced everywhere
32+ - No naked ` new ` /` delete ` in core: already enforced
33+ - Contiguous arrays in hot paths: ` Data::p_vec ` as ` vector<vector<data_t>> ` is correct for variable-length series
Original file line number Diff line number Diff line change 4545
4646### Platform
4747- [ ] ARM Mac Studio investigation: test CPU path on Apple Silicon, evaluate Metal compute for GPU path
48- - [ ] HIPify for AMD GPU — ** accept community PRs only** , do not invest core developer time
49-
50- ## Guidelines (not TODOs — current conventions)
51- - Buffer > thread_local >> heap allocation: already enforced everywhere
52- - No naked ` new ` /` delete ` in core: already enforced
53- - Contiguous arrays in hot paths: ` Data::p_vec ` as ` vector<vector<data_t>> ` is correct for variable-length series
54-
55- ## Removed (completed or cut)
56- - ~~ NaN/-ffast-math robustification~~ — ** DONE** : explicit fast-math sub-flags + ` std::isnan() ` wrapper
57- - ~~ Eigen 5.0.1 exploration~~ — ** CUT** : Eigen used only as aligned allocator, no gap identified
58- - ~~ Condensed distance matrix~~ — ** DONE** : ` DenseDistanceMatrix ` already uses packed triangular N* (N+1)/2
59- - ~~ Unnecessary memory allocations audit~~ — ** CUT** : 30+ ` thread_local ` declarations already in place
60- - ~~ Device-side LB pruning (pair-level)~~ — ** DONE** : ` compact_active_pairs ` in ` cuda_dtw.cu `
48+ - [ ] HIPify for AMD GPU — ** accept community PRs only** , do not invest core developer time
Original file line number Diff line number Diff line change 11{
22 "env" : {
3- "CLAUDE_CODE_TASK_LIST_ID" : " dtwcpp" ,
3+ "CLAUDE_CODE_TASK_LIST_ID" : " dtwcpp"
44 },
5- "plansDirectory" : " ./.claude/reports" ,
6- "model" : " opusplan"
5+ "plansDirectory" : " ./.claude/reports"
76}
Original file line number Diff line number Diff line change 22#
33# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors
44
5- set (CPM_DOWNLOAD_VERSION 0.40.2 )
6- set (CPM_HASH_SUM "c8cdc32c03816538ce22781ed72964dc864b2a34a310d3b7104812a5ca2d835d " )
5+ set (CPM_DOWNLOAD_VERSION 0.42.1 )
6+ set (CPM_HASH_SUM "f3a6dcc6a04ce9e7f51a127307fa4f699fb2bade357a8eb4c5b45df76e1dc6a5 " )
77
88if (CPM_SOURCE_CACHE)
99 set (CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE} /cpm/CPM_${CPM_DOWNLOAD_VERSION} .cmake" )
Original file line number Diff line number Diff line change @@ -86,7 +86,7 @@ function(dtwc_setup_dependencies)
8686 CPMAddPackage (
8787 NAME benchmark
8888 GITHUB_REPOSITORY google/benchmark
89- VERSION 1.9.1
89+ VERSION 1.9.5
9090 OPTIONS
9191 "BENCHMARK_ENABLE_TESTING OFF"
9292 "BENCHMARK_ENABLE_GTEST_TESTS OFF"
@@ -98,7 +98,7 @@ function(dtwc_setup_dependencies)
9898 if (DTWC_ENABLE_YAML AND NOT TARGET yaml-cpp)
9999 CPMAddPackage (
100100 NAME yaml-cpp
101- URL "https://github.com/jbeder/yaml-cpp/archive/refs/tags/0.8 .0.tar.gz"
101+ URL "https://github.com/jbeder/yaml-cpp/archive/refs/tags/0.9 .0.tar.gz"
102102 SYSTEM
103103 EXCLUDE_FROM_ALL
104104 OPTIONS "YAML_CPP_BUILD_TESTS OFF" "YAML_CPP_BUILD_TOOLS OFF"
Original file line number Diff line number Diff line change 77 * etc.) but NOT -ffinite-math-only, so std::isnan() is correct and available.
88 * - is_missing() is a thin semantic wrapper over std::isnan() — prefer this name
99 * in domain code for clarity ("missing value" not "not-a-number").
10- * - DenseDistanceMatrix tracks computed entries via std::vector<bool> (not NaN
11- * sentinels), which is safe regardless of floating-point mode.
1210 *
1311 * @author Volkan Kumtepeli
1412 * @date 02 Apr 2026
Original file line number Diff line number Diff line change @@ -132,7 +132,7 @@ double daviesBouldinIndex(Problem &prob)
132132 double max_ratio = 0.0 ;
133133 for (int j = 0 ; j < Nc; ++j) {
134134 if (i != j) {
135- double d_ij = prob.distByInd (prob.centroids_ind [i], prob.centroids_ind [j]);
135+ const double d_ij = prob.distByInd (prob.centroids_ind [i], prob.centroids_ind [j]);
136136 if (d_ij > 0 ) {
137137 double ratio = (scatter[i] + scatter[j]) / d_ij;
138138 max_ratio = std::max (max_ratio, ratio);
@@ -167,14 +167,11 @@ double dunnIndex(Problem &prob)
167167
168168 for (int i = 0 ; i < N; ++i) {
169169 for (int j = i + 1 ; j < N; ++j) {
170- double d = prob.distByInd (i, j);
171- if (prob.clusters_ind [i] == prob.clusters_ind [j]) {
172- // Same cluster: contributes to intra-cluster diameter
173- max_intra = std::max (max_intra, d);
174- } else {
175- // Different clusters: contributes to inter-cluster distance
176- min_inter = std::min (min_inter, d);
177- }
170+ const double d = prob.distByInd (i, j);
171+ if (prob.clusters_ind [i] == prob.clusters_ind [j])
172+ max_intra = std::max (max_intra, d); // Same cluster: contributes to intra-cluster diameter
173+ else
174+ min_inter = std::min (min_inter, d); // Different clusters: contributes to inter-cluster distance
178175 }
179176 }
180177
You can’t perform that action at this time.
0 commit comments