Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
96062e1
Ported Mesh_3 benchmarks. Modified benchmarks for the tetrahedral rem…
IasonManolas May 27, 2025
d2b6dfa
Converted the .sh script to a python script to ease debugging
IasonManolas May 28, 2025
f312425
New benchmark python pipeline
Jun 6, 2025
7428ccc
Revert "New benchmark python pipeline"
Jun 7, 2025
b315353
main file to benchmark adaptive remeshing
IasonManolas Jun 7, 2025
3a3ecdc
Added main file to benchmark uniform remeshing
IasonManolas Jun 7, 2025
563f12d
Remove deprecated benchmark files for tetrahedral remeshing, includin…
IasonManolas Jun 7, 2025
9b1ee28
Enhance CMake configuration for tetrahedral remeshing benchmarks by a…
IasonManolas Jun 7, 2025
a0749b7
Refactor quality metrics generation in mesh_quality.h to use JSON for…
IasonManolas Jun 7, 2025
4c3282f
Add common utilities and typedefs for tetrahedral remeshing benchmarks
IasonManolas Jun 7, 2025
b621c16
Add benchmark creation scripts and configuration for tetrahedral reme…
IasonManolas Jun 7, 2025
de5b888
Add benchmark comparison scripts and configuration for tetrahedral re…
IasonManolas Jun 7, 2025
38b623d
Remove obsolete benchmark configuration files for tetrahedral remeshi…
IasonManolas Jun 7, 2025
4b3f1ea
Add README for benchmarking pipeline with features, quickstart, and d…
IasonManolas Jun 7, 2025
0f200cb
Add detailed README files for the benchmarking pipeline
IasonManolas Jun 7, 2025
3eba2b8
Added new file to benchmark the refactored tetrahedral remeshing that…
IasonManolas Jun 13, 2025
5a216ba
Edited to add the new executable for benchmarking my generic tetrahed…
IasonManolas Jun 13, 2025
dbbf985
Added interface for the atomic operations and the execution of atomic…
IasonManolas Jun 13, 2025
22b7704
injected code that calls my refactored atomic operations using a prep…
IasonManolas Jun 13, 2025
cac5b81
Renamed benchmark_atomic_tetrahedral_remeshing to benchmark_refactore…
IasonManolas Jun 16, 2025
0e1f6ee
Renamed "atomic" to "elementary"
IasonManolas Jun 18, 2025
b534982
Merge remote-tracking branch 'jane_cgal_origin/Tet_remeshing-determin…
IasonManolas Jun 20, 2025
4982970
- Creating the absolute path of the results json
IasonManolas Jun 24, 2025
2a62abb
Moved the switch for the refactored split version into the split() fu…
IasonManolas Jun 24, 2025
f5e122c
First working refactored elementary operation. It produces the same r…
IasonManolas Jun 24, 2025
24de54c
Revised elementary operations interface and execution classes
IasonManolas Jun 24, 2025
b191aa2
Added an additional template parameter to ElementaryOperation to allo…
IasonManolas Jun 25, 2025
3c5293a
Fix crash in benchmark_refactored_tetrahedral_remeshing.cpp
IasonManolas Jun 25, 2025
fab9e09
Revert "Fix crash in benchmark_refactored_tetrahedral_remeshing.cpp"
IasonManolas Jun 25, 2025
1fe1e7f
updated benchmark creation and comparison scripts and config files. a…
IasonManolas Jun 25, 2025
ab5041b
Reduced the number of template parameters of the ElementaryOperation …
IasonManolas Jun 26, 2025
e26216a
Implemented LockManager and hardcoded the execution policy of interna…
IasonManolas Jul 1, 2025
d83b856
Refactored
IasonManolas Jul 1, 2025
0918c80
Fixed compilation issues
IasonManolas Jul 1, 2025
603f816
fixed compilation issues
IasonManolas Jul 1, 2025
755b53e
added missing code
IasonManolas Jul 1, 2025
243b612
- Added preproccessor macro for using the threadsafe variant of the i…
IasonManolas Jul 8, 2025
e7872b1
Removed dangling "}"
IasonManolas Jul 8, 2025
8f0c633
- dumping info for debugging purposes
IasonManolas Jul 8, 2025
10bb7ff
-added dump edge function
IasonManolas Jul 8, 2025
f6e3cbe
-using the parallel tag in the Remeshing_triangulation structure
IasonManolas Jul 8, 2025
a4d4ec6
- added some preprocessor macros for
IasonManolas Jul 8, 2025
d88e1ba
Fix trailing whitespace
MaelRL Jul 8, 2025
7254859
Fix static thread local variable definitions
MaelRL Jul 8, 2025
c705ba9
Fix taking reference to temporary object
MaelRL Jul 8, 2025
41a8778
- The execution policy of the internal flip operation depends on whet…
IasonManolas Jul 8, 2025
68d95d7
Enable some macros
MaelRL Jul 9, 2025
3623b14
Try to get a superset of the lock zone for edge flips
MaelRL Jul 9, 2025
41dec1a
Change batch size to 5
MaelRL Jul 9, 2025
830ed3f
Fix trailing whitespace
MaelRL Jul 9, 2025
789b099
Added debug functions
IasonManolas Jul 10, 2025
6e6f140
Refactor locking mechanism in edge flip operations. Working version
IasonManolas Jul 10, 2025
32bc09b
Implemented parallel boundary edge flipping operation. Quality metric…
IasonManolas Jul 10, 2025
e793a75
Small Refactoring
IasonManolas Jul 11, 2025
92f8eb7
Added comment for thread-safety of updating the valence maps during f…
IasonManolas Jul 15, 2025
c5a2b0a
Added an additional command line parameter
IasonManolas Jul 17, 2025
53b2b16
Refactor elementary operations to use a unified ElementSource type
IasonManolas Jul 17, 2025
03301ca
Refactor tetrahedral remeshing operations for improved configurability
IasonManolas Jul 17, 2025
e36a869
Add preprocessor macros configuration and enhance benchmark scripts
IasonManolas Jul 18, 2025
6f9ceaa
Update benchmark configuration and documentation for preprocessor macros
IasonManolas Jul 18, 2025
cc38302
Enhance vertex smoothing operations with new context and surface hand…
IasonManolas Jul 18, 2025
9ca1601
Refactor vertex smoothing operations and enhance context management
IasonManolas Jul 21, 2025
3de21b9
Refactor vertex smoothing operations and enhance context management
IasonManolas Jul 24, 2025
17a89fc
- Modified the smooth() function to incorporate a new preprocessor ma…
IasonManolas Jul 24, 2025
14c8f80
added missing #endif
IasonManolas Jul 24, 2025
39e7d15
- Changed the boost::bimap to a vector for testing purposes
IasonManolas Jul 24, 2025
2acb2e6
small fix
IasonManolas Jul 24, 2025
a6f6cdd
Fixed const correctness for the edge parameter
IasonManolas Aug 1, 2025
6c400d0
- Removed redundant methods
IasonManolas Aug 1, 2025
31efdfc
Add thread-safe logging and edge pair dumping functionality
IasonManolas Aug 1, 2025
696bd52
Reset to original
IasonManolas Aug 1, 2025
9f06945
First correct parallel collapse and paralle remeshing in general.
IasonManolas Aug 13, 2025
1967525
- Updated benchmark files to utilize the C3t3 type for computing the …
IasonManolas Aug 29, 2025
e881b42
fix compilation and trailing whitespaces
janetournois Sep 2, 2025
e82acfb
- Refactor adaptive tetrahedral remeshing benchmark to utilize C3t3 s…
IasonManolas Sep 4, 2025
56e054d
Merge branch 'gsoc2025-Tetra_remeshing_parallel-imanolas' of https://…
IasonManolas Sep 4, 2025
c011fee
Merge branch 'CGAL:master' into gsoc2025-Tetra_remeshing_parallel-ima…
IasonManolas Sep 4, 2025
314f47c
Merge branch 'gsoc2025-Tetra_remeshing_parallel-imanolas' of https://…
IasonManolas Sep 4, 2025
e8344c0
fix compilation
janetournois Sep 4, 2025
421dc84
fix compilation (and remove a few trailing whitespaces)
janetournois Sep 4, 2025
ee33f57
Merge branch 'gsoc2025-Tetra_remeshing_parallel-imanolas' of github.c…
janetournois Sep 4, 2025
a708ffc
fix tabs and indentation
janetournois Sep 5, 2025
6e0352f
add concurrent remeshing to examples
janetournois Sep 5, 2025
1802252
fix license issues, trailing whitespaces, and compilation without tbb
janetournois Sep 5, 2025
6aaa0d5
more compilation fixes
janetournois Sep 5, 2025
361d7f4
add missing mutable
janetournois Sep 5, 2025
f5fdca6
add missing template parameter for CI
janetournois Sep 8, 2025
c6b7a95
start using parallel code in tests
janetournois Sep 8, 2025
29fcd3d
more tests and compilation fixes
janetournois Sep 9, 2025
87d3e66
replace tabs
janetournois Sep 9, 2025
8f9efe3
remove CMakeLists.txt that does not fit the package template
janetournois Sep 9, 2025
c5c77bd
remaining tabs
janetournois Sep 9, 2025
54484a6
fix compilation with g++
janetournois Sep 9, 2025
7d5fdf6
trailing whitespaces and removed extra files
janetournois Sep 9, 2025
44df91c
missing dependencies
janetournois Sep 9, 2025
91cfbfa
Writing lock stats when CGAL_TETRAHEDRAL_REMESHING_WRITE_LOCK_STATS i…
IasonManolas Sep 11, 2025
ae316c6
Dedicated macro for flip debug logs, saving incident cells if locking…
IasonManolas Sep 11, 2025
bb0fd7a
dedicated macro for debug logs for the split operation
IasonManolas Sep 11, 2025
5b00d88
Removed tabs
IasonManolas Sep 11, 2025
3660ac6
deleted trailing whitespaces
IasonManolas Sep 11, 2025
0b76568
fix compilation when using a T3 with Sequential_tag and CGAL_LINKED_W…
janetournois Sep 11, 2025
f9e8374
add more parallel tests
janetournois Sep 11, 2025
06cf5c4
these assertions are wrong
janetournois Sep 11, 2025
0391f33
fix verbose macros
janetournois Sep 11, 2025
34adfe4
initialize m_moves, not a temporary vector
janetournois Sep 11, 2025
c9fc73f
fix execution policy
janetournois Sep 11, 2025
beb282f
shorten a few lines
janetournois Sep 11, 2025
4fb13a9
cosmetic (typedefs, loops, indentation)
janetournois Sep 12, 2025
7764fd5
indentation
janetournois Sep 12, 2025
bbeac00
remove useless code
janetournois Sep 12, 2025
9f1c116
fix warnings + compilation error
sloriot Sep 15, 2025
4bfccec
fix warnings
sloriot Sep 15, 2025
343640c
avoid possible infinite loop
janetournois Sep 15, 2025
53416d0
add cout
janetournois Sep 18, 2025
33c0b59
refactored vertex smoothing operations to use shared context. Resolve…
IasonManolas Sep 18, 2025
a1af565
Merge branch 'gsoc2025-Tetra_remeshing_parallel-imanolas' of https://…
janetournois Sep 18, 2025
5f6cba7
add stuff in the test
janetournois Sep 18, 2025
fb205ac
remove static functions
janetournois Sep 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
results_root: C:/Users/iason.manolas/Documents/learning/gsoc2025-Tetra_remeshing_parallel-imanolas/Tetrahedral_remeshing/build_debug_tetrahedral_remeshing/BenchmarkResults # Folder containing multiple benchmark run folders
include_reports: [] # Optional: list of subfolders to include, or leave empty for all
# metrics:
# - metrics.Performance.Total_Time.Value
# - metrics.Quality.Edge_Length.Mean
group_by: [] # (Unused, now auto-detected)
significant_change_threshold: 0.0 # Only show metrics with >1% change (set to 0 to show all)
outlier_threshold: 3.0 # Highlight changes >3x stddev as outliers

# Chart grid configuration
report_chart_grid_cols: 2 # Number of columns in the chart grid (charts will be scaled accordingly)

charts:
- kind: line
y: Performance.Total_Time.Value
title: "Total Time across versions"
save_as: "total_time_timeseries.png"
style: "o-"
- kind: line
y: Performance.Memory.Value
title: "Memory across versions"
save_as: "memory_timeseries.png"
style: "o-"

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
# =========================================================================
# Benchmark Comparison Configuration Template
# =========================================================================
# Copy this file to 'benchmark_comparison_config.yaml' and customize

# REQUIRED: Path to directory containing benchmark result folders
# This should point to the directory that contains timestamped benchmark runs
# Example: C:/path/to/BenchmarkResults or /home/user/results
results_root: /path/to/Benchmark_results

# OPTIONAL: Specify which subdirectories to include
# Leave empty [] to include all subdirectories
# Or specify folder names: ["2024-01-15_10-30-00", "2024-01-15_11-45-00"]
include_reports: []

# Analysis configuration
analysis:
# OPTIONAL: Threshold for highlighting significant changes (0.0 = show all)
significant_change_threshold: 0.0

# OPTIONAL: Threshold for highlighting outliers (standard deviations)
outlier_threshold: 2.0

# COMPARISON MODE CONFIGURATION:
# Set to false to compare across different executables (e.g., current vs refactored implementations)
# Set to true to compare only within same executable (for fine-tuning single implementation)
group_by_executable: false # Use false for cross-implementation comparison

# Report configuration
report:
# OPTIONAL: Chart grid layout - number of columns for time-series charts
chart_grid_cols: 2

# =========================================================================
# UNIFIED CHARTS CONFIGURATION
# =========================================================================
# These charts support both time-series and parameter-based comparisons
# Useful for: regression testing, performance monitoring over time, scaling studies, parameter optimization
# Requirements: Multiple runs with varying input_arguments

charts:
# Time-series chart (no x specified, defaults to timestamp)
- kind: line
y: metrics.Performance.Total_Time.Value
title: "Total Time across versions"
style: "o-"

# Parameter-based charts - compare metrics across different parameter values
- kind: line
y: metrics.Performance.Total_Time.Value
x: run_metadata.input_arguments.threads
title: "Total Time vs Number of Threads"
style: "o-"

- kind: line
y: metrics.Performance.Memory.Value
x: run_metadata.input_arguments.threads
title: "Memory Usage vs Number of Threads"
style: "o-"

# Cross-executable comparison example
- kind: line
y: metrics.Performance.Total_Time.Value
x: run_metadata.input_arguments.target_edge_factor
title: "Performance Comparison: Current vs Refactored Implementation"
style: "o-"
# When group_by_executable=false, this will show both implementations on the same chart

# =========================================================================
# PATH EXAMPLES
# =========================================================================
# All parameters and metrics must be specified using full dot notation paths:
#
# JSON structure: Full path:
# {
# "metrics": { metrics.Performance.Total_Time.Value
# "Performance": { metrics.Performance.Total_Time.Unit
# "Total_Time": { metrics.Performance.Memory.Value
# "Value": 45.67, metrics.Quality.Edge_Length.Mean
# "Unit": "seconds" metrics.Quality.Edge_Length.StdDev
# },
# "Memory": {
# "Value": 1024
# }
# },
# "Quality": {
# "Edge_Length": {
# "Mean": 0.5,
# "StdDev": 0.1
# }
# }
# },
# "run_metadata": { run_metadata.input_arguments.input_mesh
# "input_arguments": { run_metadata.input_arguments.threads
# "input_mesh": "mesh1.off", run_metadata.input_arguments.num_iterations
# "threads": 4, run_metadata.timestamp
# "num_iterations": 10 run_metadata.status
# },
# "timestamp": "2024-01-15T10:30:00",
# "status": "success"
# }
# }

# =========================================================================
# COMMON PARAMETER PATHS
# =========================================================================
# Typical parameter paths (adjust based on your benchmark structure):
# - run_metadata.input_arguments.input_mesh
# - run_metadata.input_arguments.threads
# - run_metadata.input_arguments.num_iterations
# - run_metadata.input_arguments.target_edge_factor
# - run_metadata.input_arguments.algorithm
# - run_metadata.input_arguments.quality_threshold

# =========================================================================
# COMMON METRIC PATHS
# =========================================================================
# Typical metric paths (adjust based on your benchmark structure):
# - metrics.Performance.Total_Time.Value
# - metrics.Performance.Memory.Value
# - metrics.Performance.CPU_Usage.Value
# - metrics.Quality.Edge_Length.Mean
# - metrics.Quality.Edge_Length.StdDev
# - metrics.Quality.Dihedral_Angle.Mean
# - metrics.Output.Vertices_Count.Value
# - metrics.Output.Tetrahedra_Count.Value

# =========================================================================
# RESOURCE USAGE PATHS
# =========================================================================
# Resource monitoring paths (available when resource monitoring is enabled):
# - resource_usage.duration_seconds # Total execution time
# - resource_usage.cpu.mean_percent # Average CPU usage
# - resource_usage.cpu.max_percent # Peak CPU usage
# - resource_usage.cpu.total_user_time # Total user CPU time
# - resource_usage.cpu.total_system_time # Total system CPU time
# - resource_usage.memory.peak_rss_mb # Peak memory usage (MB)
# - resource_usage.memory.mean_rss_mb # Average memory usage (MB)
# - resource_usage.memory.peak_rss_bytes # Peak memory usage (bytes)
# - resource_usage.memory.mean_percent # Average memory percentage
# - resource_usage.memory.max_percent # Peak memory percentage
# - resource_usage.io.total_read_mb # Total data read (MB)
# - resource_usage.io.total_write_mb # Total data written (MB)
# - resource_usage.io.total_read_ops # Total read operations
# - resource_usage.io.total_write_ops # Total write operations
# - resource_usage.threads.max_threads # Maximum thread count

# =========================================================================
# MATPLOTLIB STYLE EXAMPLES
# =========================================================================
# Line styles: "-", "--", "-.", ":"
# Markers: "o", "s", "^", "v", "<", ">", "D", "*", "+"
# Combined: "o-", "s--", "^:", etc.
# Colors: Add color codes like "ro-" (red circles with lines)
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
results_root: C:/Users/iason.manolas/Documents/learning/gsoc2025-Tetra_remeshing_parallel-imanolas/Tetrahedral_remeshing/build_debug_tetrahedral_remeshing/Benchmark_results # Folder containing multiple benchmark run folders
include_reports: [] # Optional: list of subfolders to include, or leave empty for all

# Analysis configuration
analysis:
significant_change_threshold: 0.0 # Only show metrics with >1% change (set to 0 to show all)
outlier_threshold: 1.0 # Highlight values >1.0 standard deviations from mean as outliers (for testing)
group_by_executable: false # Set to false to compare across different executables (current vs refactored)
# Set to true to compare only within same executable (for fine-tuning)

# Report configuration
report:
chart_grid_cols: 2 # Number of columns in the chart grid (charts will be scaled accordingly)

# Unified charts configuration - supports both time-series and parameter-based charts
charts:
# Time-series chart (no x specified, defaults to timestamp)
- kind: line
y: metrics.Performance.Total_Time.Value
title: "Total Time across versions"
# save_as: "total_time_timeseries.png"
# filter:
# benchmark_name: uniform
style: "o-"

# Parameter-based charts - compare metrics across different parameter values
# Results are automatically grouped by input_arguments + exec_metadata
- kind: line
y: metrics.Performance.Total_Time.Value
x: run_metadata.input_arguments.threads # The parameter to vary on x-axis
title: "Total Time vs Number of Threads"
style: "o-"

- kind: line
y: metrics.Performance.Memory.Value
x: run_metadata.input_arguments.threads
title: "Memory Usage vs Number of Threads"
style: "o-"

- kind: line
y: resource_usage.memory.peak_rss_mb
title: "Peak Memory Usage Across Runs"
# save_as: "peak_memory_timeseries.png"
style: "d-" # diamonds with lines

Loading
Loading