Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
9b30f8b
add lookup tables
ole-alb Feb 28, 2025
efff7e3
start impelemting types
ole-alb Apr 10, 2025
055c808
Merge remote-tracking branch 'origin/main' into standalone-scheme-types
ole-alb Apr 10, 2025
9d3ce51
add more type functionality
ole-alb Apr 11, 2025
4f3d26e
add luts
ole-alb Apr 11, 2025
1176bf7
add types to standalone
ole-alb Apr 11, 2025
b6c665d
fix type functionality
ole-alb Apr 15, 2025
0993001
rebuild count_leaves test
ole-alb Apr 16, 2025
35eaa8f
add lut for face-corner and corner-face
ole-alb Apr 23, 2025
a6cba74
add calculation of standalone pyramid contro volume
ole-alb Apr 25, 2025
3b9b087
new name for helper function
ole-alb Apr 25, 2025
40ffd20
add new test for reference coords
ole-alb Apr 25, 2025
c957d1c
fix reference coordinate issues
ole-alb Apr 25, 2025
8b3b0d3
fix reference coords for standalone scheme
ole-alb May 9, 2025
3599a72
cleanup
ole-alb May 9, 2025
4d82579
add Assertions to check tet coords
ole-alb May 9, 2025
02f257d
Merge remote-tracking branch 'origin/main' into standalone-scheme-types
ole-alb May 9, 2025
66ef631
delete duplicated test
ole-alb May 9, 2025
18ab26d
cleanup
ole-alb May 9, 2025
ff71c8f
delete duplicated test
ole-alb May 9, 2025
dc59084
fix debug print error
ole-alb May 9, 2025
2822d28
remove unused value
ole-alb May 9, 2025
38aff55
remove unused variable
ole-alb May 9, 2025
f6d5752
fix test
ole-alb May 12, 2025
9beb28a
add function get_max_num_children
ole-alb May 14, 2025
53ed5b1
Merge remote-tracking branch 'origin/max_num_children' into standalon…
ole-alb May 15, 2025
7055935
fix merge error
ole-alb May 15, 2025
36b197f
Merge remote-tracking branch 'origin/max_num_children' into standalon…
ole-alb May 15, 2025
534a96b
disable test
ole-alb May 15, 2025
2dc7999
implement new test logic
ole-alb May 20, 2025
3ced503
Merge branch 'main' into standalone-scheme-types
ole-alb May 20, 2025
303a496
add maybe_unused
ole-alb May 20, 2025
684f4f6
apply suggestions from review
ole-alb May 21, 2025
7128129
Merge branch 'main' into standalone-scheme-types
ole-alb May 21, 2025
126d1ec
apply review
ole-alb May 21, 2025
29fc2e0
switch are_family implementation
ole-alb May 26, 2025
ada3535
apply review
ole-alb Aug 19, 2025
1aff0a3
Merge branch 'main' into standalone-scheme-types
lukasdreyer Oct 21, 2025
e653fc3
change type to uint8, compute ancestorid correctly
lukasdreyer Oct 21, 2025
a7640c2
fix assertion
lukasdreyer Oct 21, 2025
d0ad701
Only look at type when it is allowed to
lukasdreyer Oct 22, 2025
2fd0b6a
fix type access
lukasdreyer Oct 22, 2025
c5e2676
Do not use type for hypercubes
lukasdreyer Oct 22, 2025
314edc6
improve ancestor_id
lukasdreyer Oct 21, 2025
bb8e4e4
remove unneeded variable
lukasdreyer Oct 22, 2025
41bcd8e
add pragma unrolls
lukasdreyer Oct 21, 2025
92191a0
add loop unroll cmake option
lukasdreyer Oct 21, 2025
89f799b
add flag around unroll option
lukasdreyer Oct 21, 2025
19c4bc6
Add timing for search
lukasdreyer Oct 21, 2025
e787958
indent
lukasdreyer Oct 22, 2025
98ed04c
indent
lukasdreyer Oct 22, 2025
88d63e0
Add profiling barrier option to cmake
lukasdreyer Oct 21, 2025
b766dd4
Use Barriers in profiling
lukasdreyer Oct 21, 2025
fa2f261
Apply suggestions from code review
lukasdreyer Oct 22, 2025
c229d0d
indent
lukasdreyer Oct 22, 2025
eb58b97
Merge branch 'enhancement-profile_barrier' into feature-benchmark_search
lukasdreyer Oct 22, 2025
cebe240
add benchmark for search
lukasdreyer Oct 22, 2025
ee5f289
disable check for non comitted, as profiling for search needs to be s…
lukasdreyer Oct 22, 2025
e588030
fix function names
lukasdreyer Oct 22, 2025
a467b60
add profiling to search
lukasdreyer Oct 22, 2025
2f99eb4
fix test level macro
lukasdreyer Oct 22, 2025
769afe0
indent
lukasdreyer Oct 22, 2025
acbd9ad
fix werror
lukasdreyer Oct 23, 2025
e216b79
spell_check
lukasdreyer Oct 23, 2025
78e6869
fix werror
lukasdreyer Oct 23, 2025
a1872ca
Add instruction for benchmark
lukasdreyer Oct 23, 2025
bc2e64a
Add benchmark runscript for slurm
lukasdreyer Oct 23, 2025
45d1e0f
temporarily delete deduction of version from git tag
lukasdreyer Oct 28, 2025
7acad5b
fix barrier communicator argument
lukasdreyer Oct 28, 2025
f97bfd8
remove unused
lukasdreyer Oct 28, 2025
fe006eb
update help message
lukasdreyer Oct 28, 2025
04243b9
Measure each repetition seperately and skip first measurement
lukasdreyer Oct 28, 2025
0732adc
Always barrier at beginning of repetition
lukasdreyer Oct 28, 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
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ option( T8CODE_ENABLE_MPI "Enable t8code's features which rely on MPI" ON )
option( T8CODE_ENABLE_VTK "Enable t8code's features which rely on VTK" OFF )
option( T8CODE_ENABLE_OCC "Enable t8code's features which rely on OpenCASCADE" OFF )
option( T8CODE_ENABLE_NETCDF "Enable t8code's features which rely on netCDF" OFF )
option( T8CODE_ENABLE_STANDALONE_LOOP_UNROLL "Enables t8code's loop unroll in standalone scheme" OFF )

option( T8CODE_USE_SYSTEM_SC "Use system-installed sc library" OFF )
option( T8CODE_USE_SYSTEM_P4EST "Use system-installed p4est library" OFF )
Expand All @@ -64,6 +65,8 @@ cmake_dependent_option( T8CODE_BUILD_DOCUMENTATION_SPHINX "Build t8code's docume
set(T8CODE_CUSTOM_PARALLEL_TEST_COMMAND "" CACHE STRING "Define a custom command for parallel tests , e.g.: mpirun -np 8 (overwrites standard mpirun -np 4 if build with mpi)")
set(T8CODE_CUSTOM_SERIAL_TEST_COMMAND "" CACHE STRING "Define a custom command for serial tests.")

option( T8CODE_ENABLE_PROFILING_BARRIERS "Use MPI-Barriers for profiling" OFF )

# Reading the option T8CODE_TEST_LEVEL: Possible choices are T8_TEST_LEVEL_FULL, T8_TEST_LEVEL_MEDIUM, or T8_TEST_LEVEL_BASIC. Default is T8_TEST_LEVEL_FULL.
set(T8CODE_TEST_LEVEL "T8_TEST_LEVEL_FULL" CACHE STRING "Test level: T8_TEST_LEVEL_FULL for full tests, T8_TEST_LEVEL_MEDIUM for less thorough tests, T8_TEST_LEVEL_BASIC for minimal tests. (WARNING: Use with care.)")
set_property(CACHE T8CODE_TEST_LEVEL PROPERTY STRINGS "T8_TEST_LEVEL_FULL" "T8_TEST_LEVEL_MEDIUM" "T8_TEST_LEVEL_BASIC")
Expand Down
4 changes: 4 additions & 0 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ function( add_t8_benchmark )
if( T8CODE_EXPORT_COMPILE_COMMANDS )
set_target_properties( ${ADD_T8_BENCHMARK_NAME} PROPERTIES EXPORT_COMPILE_COMMANDS ON )
endif( T8CODE_EXPORT_COMPILE_COMMANDS )
if( T8CODE_ENABLE_PROFILING_BARRIERS )
target_compile_definitions( ${ADD_T8_BENCHMARK_NAME} PUBLIC T8_ENABLE_PROFILE_BARRIER=1 )
endif( T8CODE_ENABLE_PROFILING_BARRIERS )

install( TARGETS ${ADD_T8_BENCHMARK_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} )
endfunction()
Expand All @@ -54,3 +57,4 @@ add_t8_benchmark( NAME t8_time_prism_adapt SOURCES t8_time_prism_adapt.cxx )
add_t8_benchmark( NAME t8_time_fractal SOURCES t8_time_fractal.cxx )
add_t8_benchmark( NAME t8_time_set_join_by_vertices SOURCES t8_time_set_join_by_vertices.cxx )
add_t8_benchmark( NAME t8_time_new_refine SOURCES t8_time_new_refine.c )
add_t8_benchmark( NAME t8_time_search SOURCES t8_time_search.cxx )
14 changes: 14 additions & 0 deletions benchmarks/search_benchmark.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
The search benchmark constructs a partitioned uniform refinement of a single coarse mesh element.
Afterwards, generates a single search point in the center of each local element, and finally searches for all these points
in the local part of the mesh.
Finally, each cell that had at least one point found, is refined (here uniform refinement, since each element has exactly one search point).
This cycle is repeated for num_repetitions with a new mesh each time.

Instructions for running the search benchmark:

It has 4 relevant parameters: scheme, eclass, level, repititions
An example call might look like:

mpirun -n 8 ./t8_time_search -s1 -e4 -l6 -r20

The file search_benchmark_runscript.py provides the python script used to create the benchmarks in the paper.
40 changes: 40 additions & 0 deletions benchmarks/search_benchmark_runscript.py
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is a file, that does not belong into t8code in my opinion. You can use it in t8data and cite t8data to make research-results reproducable.

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from pathlib import Path
import subprocess

eclasses = [4, 5, 6, 7]
schemes = [0, 1]
max_proc_log = 14

max_elem_log=20
min_elem_log=5
repititions = 20

maxlevel=18
dim=3

#CARO has 128 =2^^7 procs per node
log_procs_per_node=7

out_directory = "out"

for eclass in eclasses:
for scheme in schemes:
for proc_log in range(max_proc_log+1):
n_nodes = max(1, int(2**(proc_log- log_procs_per_node)))
string="#!/bin/bash\n"
string += "#SBATCH --time=00:15:00\n"
string += f"#SBATCH -N {n_nodes}\n"
string += f"#SBATCH --ntasks={2**proc_log}\n"
for level in range(maxlevel+1,-1,-1):
if (max_elem_log >= dim*level - proc_log >= min_elem_log):
string += f"echo srun ./t8_time_search -s{scheme} -e{eclass} -l{level} -r{repititions}\n"
string += f"srun -o {out_directory}/e{eclass}/s{scheme}/p{proc_log}_l{level}_%j ./t8_time_search -s{scheme} -e{eclass} -l{level} -r{repititions}\n"

file = Path(f"{out_directory}/e{eclass}/s{scheme}/scripts/p{proc_log}.sh")
file.parent.mkdir(exist_ok=True, parents=True)
file.write_text(string)

for eclass in eclasses:
for scheme in schemes:
for proc_log in range(max_proc_log+1):
subprocess.call(f"sbatch {out_directory}/e{eclass}/s{scheme}/scripts/p{proc_log}.sh", shell=True)
Loading
Loading