Skip to content

Conversation

@IasonManolas
Copy link
Member

@IasonManolas IasonManolas commented Aug 29, 2025

Summary of Changes

Parallel tetrahedral remeshing using TBB
Iason Manola's GSoC 2025 Submission
Mentor: @janetournois

  • Affected package(s): Tetrahedral_remeshing

  • Features:

    • A generic benchmarking framework that could be extended to other cgal packages written in python. Its configurable via yaml files
    • A framework for tetrahedral remeshing that splits the core logic of the operations from their execution context i.e. sequential or parallel

TODO

  • Finer performance tuning of the parallel execution framework
  • Parallel tests
  • Porting the core logic of the operations to the (currently) wrapper classes e.g. split_long_edges.h to edge_split_operation.h, collapse_short_edges.h to edge_collapse_operation.h
  • Documentation
  • make get_element_source() concurrent for each operation

IasonManolas and others added 30 commits May 27, 2025 18:06
…g XML exporter, implicit functions, and Python scripts for benchmarking and chart generation.
…dding support for adaptive remeshing, integrating Python metadata generation, and improving dependency management. Introduced a new Python script for generating executable metadata and updated build commands accordingly.
… results output. Removed deprecated performance data macros.
This commit introduces a new header file, benchmark_tetrahedral_remeshing_common.h, which includes common typedefs, helper functions, and utilities for managing benchmark results in JSON format. The file facilitates the integration of performance metrics and run metadata for both uniform and adaptive remeshing benchmarks.
…shing

This commit introduces several new Python scripts and a YAML configuration file to facilitate the benchmarking process for tetrahedral remeshing. Key additions include:
- `config.yaml`: Configuration for benchmark execution, including result directories and chart generation settings.
- `generate_charts.py`: Script to generate performance charts from benchmark results.
- `generate_report.py`: Script to create an HTML report summarizing benchmark results.
- `generate_run_matrix.py`: Script to generate a run matrix from the benchmark configuration.
- `parse_results.py`: Script to parse and validate benchmark results from JSON files.
- `run_benchmarks.py`: Main script to execute benchmarks based on the provided configuration and manage results.

Additionally, a results schema file (`results_schema.yaml`) is included to define the expected structure of benchmark results.
…meshing

This commit introduces new Python scripts and a YAML configuration file to facilitate the comparison of benchmark results for tetrahedral remeshing. Key additions include:
- `benchmark_comparison_config.yaml`: Configuration for benchmark comparison, including result directories and chart generation settings.
- `compare_benchmark_results.py`: Script to load benchmark results, compare metrics, and generate visualizations for performance analysis.

These additions enhance the benchmarking framework by enabling detailed analysis and reporting of performance metrics across different runs.
…ng. This commit deletes `benchmark_config.h` and `concurrent_mesher_config.cfg`, which are no longer needed for the current benchmarking framework.
This commit introduces two new README files: `README.md` provides an overview of the generic benchmarking pipeline, including features, quickstart instructions, and directory structure. `README_DEEPDIVE.md` offers an in-depth technical explanation of the pipeline's components, implementation details, and best practices for usage. These additions enhance documentation and usability for users and contributors.
… uses my generic atomic operation functions.
…rocessor macro. In the future this will change but will use this approach for now in order to gradually build up the refactored atomic operations
Replaced tabs with spaces
…istic-jtournois' into gsoc2025-Tetra_remeshing_parallel-imanolas
-Using CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
…esults as the original implementation but currently has some workarounds for code that was not fitting in our current ElementaryOperation interface. Its performance is also currently worse than the original.
…w returning and ElementSource instead of an iterator range. This is used in the edge flip operation to return a vector of vertex pairs instead of an iterator range
- Fixed InternalEdgeFlipOperation to use Finite_edges_iterator correctly
- Fixed execute_internal_edge_flip to construct vertex pairs from edge iterator
- Resolved static member definition type compatibility issues
- Both original and refactored benchmarks now run without crashes
- Verified with sphere.mesh test case producing meaningful results
This reverts commit 2c5293aca29ba5950aa1979e0f754958acc2e64b.

3c5293a#
@sloriot sloriot added the gsoc label Sep 15, 2025
typedef Tetrahedral_remeshing_smoother<C3t3, SizingFunction, CellSelector> Smoother;

typedef Elementary_remesher<C3t3, SizingFunction, CellSelector, Visitor> Elementary_remesher;
typedef Elementary_remesher<C3t3, SizingFunction, CellSelector, Visitor> ElementaryRemesher;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CamelCase ???

janetournois and others added 6 commits September 15, 2025 15:45
between the empty() test and the call to try_pop(),
another thread may have popped the last element,
leading to an infinite loop
…4bfccec

Updated the vertex smoothing operations to utilize a shared context for parameters, simplifying the function signatures and improving code clarity. Removed unnecessary parameters from the smooth function calls and adjusted the internal logic to reference the context directly.
@sloriot sloriot changed the base branch from master to main September 18, 2025 15:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants