From cd17d3887d8b910ef9ed6b9d2582b9f16e460efa Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Sun, 15 Dec 2024 10:12:20 +0100 Subject: [PATCH 01/13] Add a test with a class for sparse dijkstra --- benchmarks/run_benchmarks.py | 8 +++ benchmarks/tests/dijkstra_heap.py | 94 +++++++++++++++++++++++++ benchmarks/tests/numba_dijkstra_heap.py | 94 +++++++++++++++++++++++++ benchmarks/tests/setup_tools.py | 19 +++++ 4 files changed, 215 insertions(+) create mode 100644 benchmarks/tests/dijkstra_heap.py create mode 100644 benchmarks/tests/numba_dijkstra_heap.py create mode 100644 benchmarks/tests/setup_tools.py diff --git a/benchmarks/run_benchmarks.py b/benchmarks/run_benchmarks.py index 898c6015..8f16d33c 100644 --- a/benchmarks/run_benchmarks.py +++ b/benchmarks/run_benchmarks.py @@ -82,6 +82,11 @@ ['dijkstra_distance_test'], '', 'd = dijkstra_distance_test()'), + TestInfo('Dijkstra with heap class', + 'dijkstra_heap.py', + ['dijkstra'], + 'from setup_tools import setup_sparse_dijkstra; graph, start, num_nodes, max_neighbours = setup_sparse_dijkstra()', + 'd = dijkstra(graph, start, num_nodes, max_neighbours)'), TestInfo('Euler', 'euler_mod.py', ['euler_humps_test'], @@ -181,6 +186,8 @@ def run_process(cmd: "List[str]", time_compilation: "bool"=False, env = None): ]) return returncode, out, err, cpu_time +setup_basename = 'setup_tools.py' +setup_file = os.path.join(code_folder, setup_basename) for t in tests: print("===========================================", file=log_file, flush=True) @@ -200,6 +207,7 @@ def run_process(cmd: "List[str]", time_compilation: "bool"=False, env = None): os.makedirs(new_folder, exist_ok=True) shutil.copyfile(test_file, os.path.join(new_folder, basename)) shutil.copyfile(numba_test_file, os.path.join(new_folder, numba_basename)) + shutil.copyfile(setup_file, os.path.join(new_folder, setup_basename)) os.chdir(new_folder) import_funcs = ', '.join(t.imports) diff --git a/benchmarks/tests/dijkstra_heap.py b/benchmarks/tests/dijkstra_heap.py new file mode 100644 index 00000000..37952dce --- /dev/null +++ b/benchmarks/tests/dijkstra_heap.py @@ -0,0 +1,94 @@ +import numpy as np + +class MinHeap: + def __init__(self): + self.distances: 'list[int]' = [] + self.nodes: 'list[int]' = [] + + def _sift_up(self, index: int): + parent = (index - 1) // 2 + if index > 0 and self.distances[index] < self.distances[parent]: + tmp = self.distances[index] + self.distances[index] = self.distances[parent] + self.distances[parent] = tmp + tmp = self.nodes[index] + self.nodes[index] = self.nodes[parent] + self.nodes[parent] = tmp + self._sift_up(parent) + + def _sift_down(self, index: int): + left = 2 * index + 1 + right = 2 * index + 2 + smallest = index + + if left < len(self.distances) and self.distances[left] < self.distances[smallest]: + smallest = left + if right < len(self.distances) and self.distances[right] < self.distances[smallest]: + smallest = right + + if smallest != index: + tmp = self.distances[index] + self.distances[index] = self.distances[smallest] + self.distances[smallest] = tmp + tmp = self.nodes[index] + self.nodes[index] = self.nodes[smallest] + self.nodes[smallest] = tmp + self._sift_down(smallest) + + def push(self, item_distance: 'int', item_node: 'int'): + self.distances.append(item_distance) + self.nodes.append(item_node) + self._sift_up(len(self.distances) - 1) + + def pop(self): + if len(self.distances) == 1: + return self.distances.pop(), self.nodes.pop() + root_distance = self.distances[0] + root_node = self.nodes[0] + self.distances[0] = self.distances.pop() + self.nodes[0] = self.nodes.pop() + self._sift_down(0) + return root_distance, root_node + + + def length(self) -> int: + return len(self.distances) + +def dijkstra(graph: 'int[:,:]', start: int, num_nodes: int, max_neighbors: int) -> 'int[:]': + """ + Implements Dijkstra's algorithm to find the shortest paths from a start node. + + Parameters: + graph (numpy array): A 2D numpy array where each row represents a node and contains up to 5 neighbors as pairs (neighbor, weight). -1 indicates no neighbor. + start (int): The starting node index. + num_nodes (int): Total number of nodes in the graph. + + Returns: + numpy array: Shortest distances from the start node to each node. + """ + priority_queue = MinHeap() + shortest_distances = np.full(num_nodes, int(1e9)) + shortest_distances[start] = 0 + + priority_queue.push(0, start) + + while priority_queue.length() > 0: + current_distance, current_node = priority_queue.pop() + + if current_distance > shortest_distances[current_node]: + continue + + for i in range(0, 2 * max_neighbors, 2): + neighbor = graph[current_node, i] + weight = graph[current_node, i + 1] + if neighbor == -1 or current_node == neighbor: + continue + + dist = current_distance + weight + + if dist < shortest_distances[neighbor]: + shortest_distances[neighbor] = dist + priority_queue.push(dist, neighbor) + + return shortest_distances + diff --git a/benchmarks/tests/numba_dijkstra_heap.py b/benchmarks/tests/numba_dijkstra_heap.py new file mode 100644 index 00000000..37952dce --- /dev/null +++ b/benchmarks/tests/numba_dijkstra_heap.py @@ -0,0 +1,94 @@ +import numpy as np + +class MinHeap: + def __init__(self): + self.distances: 'list[int]' = [] + self.nodes: 'list[int]' = [] + + def _sift_up(self, index: int): + parent = (index - 1) // 2 + if index > 0 and self.distances[index] < self.distances[parent]: + tmp = self.distances[index] + self.distances[index] = self.distances[parent] + self.distances[parent] = tmp + tmp = self.nodes[index] + self.nodes[index] = self.nodes[parent] + self.nodes[parent] = tmp + self._sift_up(parent) + + def _sift_down(self, index: int): + left = 2 * index + 1 + right = 2 * index + 2 + smallest = index + + if left < len(self.distances) and self.distances[left] < self.distances[smallest]: + smallest = left + if right < len(self.distances) and self.distances[right] < self.distances[smallest]: + smallest = right + + if smallest != index: + tmp = self.distances[index] + self.distances[index] = self.distances[smallest] + self.distances[smallest] = tmp + tmp = self.nodes[index] + self.nodes[index] = self.nodes[smallest] + self.nodes[smallest] = tmp + self._sift_down(smallest) + + def push(self, item_distance: 'int', item_node: 'int'): + self.distances.append(item_distance) + self.nodes.append(item_node) + self._sift_up(len(self.distances) - 1) + + def pop(self): + if len(self.distances) == 1: + return self.distances.pop(), self.nodes.pop() + root_distance = self.distances[0] + root_node = self.nodes[0] + self.distances[0] = self.distances.pop() + self.nodes[0] = self.nodes.pop() + self._sift_down(0) + return root_distance, root_node + + + def length(self) -> int: + return len(self.distances) + +def dijkstra(graph: 'int[:,:]', start: int, num_nodes: int, max_neighbors: int) -> 'int[:]': + """ + Implements Dijkstra's algorithm to find the shortest paths from a start node. + + Parameters: + graph (numpy array): A 2D numpy array where each row represents a node and contains up to 5 neighbors as pairs (neighbor, weight). -1 indicates no neighbor. + start (int): The starting node index. + num_nodes (int): Total number of nodes in the graph. + + Returns: + numpy array: Shortest distances from the start node to each node. + """ + priority_queue = MinHeap() + shortest_distances = np.full(num_nodes, int(1e9)) + shortest_distances[start] = 0 + + priority_queue.push(0, start) + + while priority_queue.length() > 0: + current_distance, current_node = priority_queue.pop() + + if current_distance > shortest_distances[current_node]: + continue + + for i in range(0, 2 * max_neighbors, 2): + neighbor = graph[current_node, i] + weight = graph[current_node, i + 1] + if neighbor == -1 or current_node == neighbor: + continue + + dist = current_distance + weight + + if dist < shortest_distances[neighbor]: + shortest_distances[neighbor] = dist + priority_queue.push(dist, neighbor) + + return shortest_distances + diff --git a/benchmarks/tests/setup_tools.py b/benchmarks/tests/setup_tools.py new file mode 100644 index 00000000..5fb56f90 --- /dev/null +++ b/benchmarks/tests/setup_tools.py @@ -0,0 +1,19 @@ +import random +import numpy as np + +def setup_sparse_dijkstra(): + random.seed(1337) + MAX_NEIGHBORS = 100 + NODES = 100_000 + MAX_DIST = 1_000_000 + + a = [] + for i in range(NODES): + neighs = random.randint(1, MAX_NEIGHBORS) + adj = [random.randint(0, NODES - 1) % NODES if i % 2 == 0 else random.randint(1, MAX_DIST) for i in range(2 * neighs)] + adj.extend([-1 for i in range(2 * (MAX_NEIGHBORS - neighs))]) + a.append(adj) + + aa = np.array(a, dtype=np.int64) + + return aa, 0, NODES, MAX_NEIGHBORS From c59118019ad17421d166a241235a62be54e2e789 Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Sun, 15 Dec 2024 10:12:31 +0100 Subject: [PATCH 02/13] Test on pasc branch --- .github/workflows/run_benchmarks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_benchmarks.yml b/.github/workflows/run_benchmarks.yml index c9f6c8d1..ebb231ff 100644 --- a/.github/workflows/run_benchmarks.yml +++ b/.github/workflows/run_benchmarks.yml @@ -32,7 +32,7 @@ jobs: - name: Install development version of pyccel from GitHub run: | pip3 install --upgrade pip - pip3 install 'pyccel @ git+https://github.com/pyccel/pyccel' + pip3 install 'pyccel @ git+https://github.com/pyccel/pyccel@test_pasc_branch' - name: Install python dependencies run: | pip3 install . From f1627a73277cc43d9ebf5f531ae3b2456e002892 Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Sun, 15 Dec 2024 10:12:57 +0100 Subject: [PATCH 03/13] Benchmark of pyccel From d3a63ac210850216c84fde2c4897a7dd1c55556b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 09:43:56 +0000 Subject: [PATCH 04/13] Update performance comparison --- .../devel_performance_310.md | 52 +- .../devel_performance_310_compilation.svg | 1815 +++++++------- .../devel_performance_310_execution.svg | 2080 +++++++++-------- .../devel_performance_310_requirements.txt | 6 +- 4 files changed, 2091 insertions(+), 1862 deletions(-) diff --git a/version_specific_results/devel_performance_310.md b/version_specific_results/devel_performance_310.md index 25bac6e2..d771891d 100644 --- a/version_specific_results/devel_performance_310.md +++ b/version_specific_results/devel_performance_310.md @@ -1,32 +1,34 @@ -### Performance Comparison (as of Tue Dec 10 10:35:43 UTC 2024) +### Performance Comparison (as of Sun Dec 15 09:43:52 UTC 2024) ## Compilation time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann | - | 2.34 | 2.13 | 0.34 | 1.34 | 1.30 | 1.42 | 1.39 -Bellman Ford | - | 3.44 | 3.69 | 1.08 | 3.64 | 3.97 | 3.80 | 4.04 -Dijkstra | - | 2.40 | 2.70 | 1.60 | 3.70 | 4.01 | 3.96 | 4.12 -Euler | - | 2.81 | 3.17 | 2.06 | 3.75 | 3.99 | 3.79 | 3.98 -Midpoint Explicit | - | 3.20 | 3.50 | 3.10 | 3.95 | 4.24 | 4.05 | 4.19 -Midpoint Fixed | - | 3.72 | 4.08 | 3.38 | 4.10 | 4.33 | 4.17 | 4.36 -RK4 | - | 3.82 | 4.33 | 3.85 | 4.46 | 4.69 | 4.53 | 4.80 -FD - L Convection | - | 2.41 | 2.77 | 0.94 | 1.49 | 4.06 | 1.65 | 4.09 -FD - NL Convection | - | 3.42 | 3.70 | 0.92 | 1.42 | 3.99 | 1.66 | 3.94 -FD - Poisson | - | 3.46 | 3.77 | 1.37 | 1.59 | 4.08 | 2.85 | 3.99 -FD - Laplace | - | 6.68 | 8.16 | 3.17 | 1.84 | 4.46 | 2.14 | 4.40 -M-D | - | 6.60 | 6.94 | 4.14 | - | - | - | - +Ackermann | - | 2.29 | 2.11 | 0.33 | 1.34 | 1.31 | 1.44 | 1.39 +Bellman Ford | - | 3.44 | 3.73 | 1.09 | 3.67 | 3.97 | 3.82 | 4.00 +Dijkstra | - | 2.39 | 2.68 | 1.59 | 3.73 | 4.01 | 3.90 | 4.05 +Dijkstra with heap class | - | - | - | - | 4.23 | 4.05 | 4.57 | 4.09 +Euler | - | 2.71 | 3.06 | 2.04 | 3.67 | 3.98 | 3.80 | 4.03 +Midpoint Explicit | - | 3.09 | 3.46 | 3.04 | 3.89 | 4.25 | 4.03 | 4.21 +Midpoint Fixed | - | 3.47 | 3.91 | 3.23 | 3.95 | 4.30 | 4.14 | 4.31 +RK4 | - | 3.76 | 4.25 | 3.80 | 4.39 | 4.68 | 4.47 | 4.70 +FD - L Convection | - | 2.33 | 2.68 | 0.88 | 1.41 | 3.98 | 1.61 | 3.95 +FD - NL Convection | - | 3.33 | 3.58 | 0.89 | 1.43 | 3.99 | 1.64 | 3.95 +FD - Poisson | - | 3.41 | 3.73 | 1.34 | 1.54 | 4.07 | 2.88 | 4.02 +FD - Laplace | - | 6.59 | 8.08 | 3.05 | 1.84 | 4.38 | 2.13 | 4.32 +M-D | - | 6.45 | 6.84 | 4.05 | - | - | - | - ## Execution time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann (ms) | 294.00 | 2.85 | 3.03 | 9.76 | 1.49 | 1.55 | 10.40 | 4.35 -Bellman Ford (ms) | 1760.00 | 5.17 | 3.43 | 3.77 | 2.87 | 5.98 | - | 19.20 -Dijkstra (ms) | 4900.00 | 26.10 | 17.00 | 19.70 | 19.30 | 31.00 | - | 23.40 -Euler (ms) | 3920.00 | 25.30 | 25.80 | 38.30 | 14.80 | 145.00 | 13.70 | 128.00 -Midpoint Explicit (ms) | 7980.00 | 52.50 | 51.40 | 77.40 | 23.90 | 281.00 | 16.80 | 250.00 -Midpoint Fixed (ms) | 41200.00 | 251.00 | 92.60 | 374.00 | 75.60 | 1400.00 | 61.00 | 1200.00 -RK4 (ms) | 19900.00 | 158.00 | 35.60 | 138.00 | 34.20 | 481.00 | 38.60 | 405.00 -FD - L Convection (ms) | 2260.00 | 1.63 | 1.62 | 2.68 | 1.51 | 1.63 | - | 4.08 -FD - NL Convection (ms) | 2710.00 | 1.88 | 1.63 | 2.83 | 1.97 | 2.02 | - | 4.08 -FD - Poisson (ms) | 6150.00 | 2.95 | 5.46 | 7.20 | 2.77 | 3.72 | - | 4.93 -FD - Laplace (ms) | 575.00 | 64.20 | 143.00 | 246.00 | 58.50 | 255.00 | - | 274.00 -M-D (ms) | 14800.00 | 15.20 | 53.10 | 59.30 | - | - | - | - +Ackermann (ms) | 291.00 | 2.87 | 3.04 | 9.65 | 1.55 | 1.59 | 9.56 | 4.33 +Bellman Ford (ms) | 1750.00 | 5.23 | 3.44 | 3.77 | 2.92 | 6.14 | - | 19.20 +Dijkstra (ms) | 4850.00 | 24.70 | 16.90 | 20.60 | 18.40 | 29.70 | - | 23.20 +Dijkstra with heap class (ms) | 9200.00 | - | - | - | 9210.00 | 272.00 | 104.00 | - | 109.00 +Euler (ms) | 3810.00 | 24.80 | 25.50 | 38.80 | 15.90 | 141.00 | 14.00 | 127.00 +Midpoint Explicit (ms) | 7800.00 | 52.30 | 51.50 | 78.80 | 23.60 | 280.00 | 17.00 | 250.00 +Midpoint Fixed (ms) | 39400.00 | 253.00 | 92.20 | 371.00 | 74.60 | 1390.00 | 63.70 | 1210.00 +RK4 (ms) | 19600.00 | 167.00 | 35.20 | 137.00 | 33.50 | 485.00 | 37.00 | 403.00 +FD - L Convection (ms) | 2170.00 | 1.63 | 1.61 | 2.66 | 1.62 | 1.62 | - | 4.10 +FD - NL Convection (ms) | 2730.00 | 1.76 | 1.68 | 2.83 | 2.04 | 2.19 | - | 4.10 +FD - Poisson (ms) | 6220.00 | 2.95 | 5.46 | 7.13 | 2.74 | 3.83 | - | 5.06 +FD - Laplace (ms) | 576.00 | 64.30 | 142.00 | 245.00 | 58.30 | 255.00 | - | 273.00 +M-D (ms) | 14600.00 | 15.20 | 53.10 | 58.90 | - | - | - | - diff --git a/version_specific_results/devel_performance_310_compilation.svg b/version_specific_results/devel_performance_310_compilation.svg index 20865409..33e3f966 100644 --- a/version_specific_results/devel_performance_310_compilation.svg +++ b/version_specific_results/devel_performance_310_compilation.svg @@ -6,11 +6,11 @@ - 2024-12-10T10:35:48.703514 + 2024-12-15T09:43:53.353229 image/svg+xml - Matplotlib v3.9.3, https://matplotlib.org/ + Matplotlib v3.10.0, https://matplotlib.org/ @@ -30,8 +30,8 @@ z - - - + - + - - - - - - - - + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - + - + - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - + - + - + - - + + - - - + + + - - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #2ca02c"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #d62728"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #9467bd"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #8c564b"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #e377c2"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2a8237dc59)" style="fill: #7f7f7f"/> - + + + + + + + + + + + + + + + + + + + + + - - + - - + - + - - + - - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - + - + - + - - - - + + + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + diff --git a/version_specific_results/devel_performance_310_execution.svg b/version_specific_results/devel_performance_310_execution.svg index 65af4442..0a89cc11 100644 --- a/version_specific_results/devel_performance_310_execution.svg +++ b/version_specific_results/devel_performance_310_execution.svg @@ -6,11 +6,11 @@ - 2024-12-10T10:35:49.100219 + 2024-12-15T09:43:53.890388 image/svg+xml - Matplotlib v3.9.3, https://matplotlib.org/ + Matplotlib v3.10.0, https://matplotlib.org/ @@ -30,8 +30,8 @@ z - - - + - + - - - - - - - - + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - + - + - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - + - + - + - - + + - - - + + + - - + - + - + - - - + + + - + - + - + @@ -1034,19 +1107,19 @@ L 361.22 72.550892 - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #ff7f0e"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #2ca02c"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #d62728"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - +" clip-path="url(#pac30c45fee)" style="fill: #9467bd"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - + - + - +" clip-path="url(#pac30c45fee)" style="fill: #8c564b"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #e377c2"/> - + - + - + - + - + - + - +" clip-path="url(#pac30c45fee)" style="fill: #e377c2"/> - + - + - + - + - + - +" clip-path="url(#pac30c45fee)" style="fill: #7f7f7f"/> - +" clip-path="url(#pac30c45fee)" style="fill: #7f7f7f"/> - +" clip-path="url(#pac30c45fee)" style="fill: #7f7f7f"/> - + - +" clip-path="url(#pac30c45fee)" style="fill: #7f7f7f"/> - + - + + + + + + + + + + + + + + + + + + + + + - - + - - + - + - - + - - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - + - + - + - - - - + + + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + diff --git a/version_specific_results/devel_performance_310_requirements.txt b/version_specific_results/devel_performance_310_requirements.txt index 7889e519..d36b1404 100644 --- a/version_specific_results/devel_performance_310_requirements.txt +++ b/version_specific_results/devel_performance_310_requirements.txt @@ -4,11 +4,11 @@ beniget==0.4.2.post1 contourpy==1.3.1 cycler==0.12.1 filelock==3.16.1 -fonttools==4.55.2 +fonttools==4.55.3 gast==0.6.0 kiwisolver==1.4.7 llvmlite==0.43.0 -matplotlib==3.9.3 +matplotlib==3.10.0 mpmath==1.3.0 numba==0.60.0 numpy==1.26.4 @@ -16,7 +16,7 @@ packaging==24.2 pillow==11.0.0 ply==3.11 psutil==6.1.0 -pyccel @ git+https://github.com/pyccel/pyccel@6aefd2178efcd0f230dde182a0a7fc04fab18764 +pyccel @ git+https://github.com/pyccel/pyccel@1eb24c64a60debe239624150983cddcc6ca674f0 pyccel-benchmarks @ file:///home/runner/work/pyccel-benchmarks/pyccel-benchmarks pyparsing==3.2.0 pyperf==2.8.1 From 685fa1e528168227cc83434a2f35616ca2b862c8 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 09:44:08 +0000 Subject: [PATCH 05/13] Update README and version --- README.md | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index cceb8251..61097a10 100644 --- a/README.md +++ b/README.md @@ -89,38 +89,40 @@ Solves a 2D Laplace problem using Finite Differences methods. The code is adapte Runs a molecular dynamics simulation. The code is adapted from examples written by [J. Burkardt](https://people.sc.fsu.edu/~jburkardt/py_src/py_src.html) ## Development branch results -### Performance Comparison (as of Tue Dec 10 10:35:43 UTC 2024) +### Performance Comparison (as of Sun Dec 15 09:43:52 UTC 2024) ## Compilation time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann | - | 2.34 | 2.13 | 0.34 | 1.34 | 1.30 | 1.42 | 1.39 -Bellman Ford | - | 3.44 | 3.69 | 1.08 | 3.64 | 3.97 | 3.80 | 4.04 -Dijkstra | - | 2.40 | 2.70 | 1.60 | 3.70 | 4.01 | 3.96 | 4.12 -Euler | - | 2.81 | 3.17 | 2.06 | 3.75 | 3.99 | 3.79 | 3.98 -Midpoint Explicit | - | 3.20 | 3.50 | 3.10 | 3.95 | 4.24 | 4.05 | 4.19 -Midpoint Fixed | - | 3.72 | 4.08 | 3.38 | 4.10 | 4.33 | 4.17 | 4.36 -RK4 | - | 3.82 | 4.33 | 3.85 | 4.46 | 4.69 | 4.53 | 4.80 -FD - L Convection | - | 2.41 | 2.77 | 0.94 | 1.49 | 4.06 | 1.65 | 4.09 -FD - NL Convection | - | 3.42 | 3.70 | 0.92 | 1.42 | 3.99 | 1.66 | 3.94 -FD - Poisson | - | 3.46 | 3.77 | 1.37 | 1.59 | 4.08 | 2.85 | 3.99 -FD - Laplace | - | 6.68 | 8.16 | 3.17 | 1.84 | 4.46 | 2.14 | 4.40 -M-D | - | 6.60 | 6.94 | 4.14 | - | - | - | - +Ackermann | - | 2.29 | 2.11 | 0.33 | 1.34 | 1.31 | 1.44 | 1.39 +Bellman Ford | - | 3.44 | 3.73 | 1.09 | 3.67 | 3.97 | 3.82 | 4.00 +Dijkstra | - | 2.39 | 2.68 | 1.59 | 3.73 | 4.01 | 3.90 | 4.05 +Dijkstra with heap class | - | - | - | - | 4.23 | 4.05 | 4.57 | 4.09 +Euler | - | 2.71 | 3.06 | 2.04 | 3.67 | 3.98 | 3.80 | 4.03 +Midpoint Explicit | - | 3.09 | 3.46 | 3.04 | 3.89 | 4.25 | 4.03 | 4.21 +Midpoint Fixed | - | 3.47 | 3.91 | 3.23 | 3.95 | 4.30 | 4.14 | 4.31 +RK4 | - | 3.76 | 4.25 | 3.80 | 4.39 | 4.68 | 4.47 | 4.70 +FD - L Convection | - | 2.33 | 2.68 | 0.88 | 1.41 | 3.98 | 1.61 | 3.95 +FD - NL Convection | - | 3.33 | 3.58 | 0.89 | 1.43 | 3.99 | 1.64 | 3.95 +FD - Poisson | - | 3.41 | 3.73 | 1.34 | 1.54 | 4.07 | 2.88 | 4.02 +FD - Laplace | - | 6.59 | 8.08 | 3.05 | 1.84 | 4.38 | 2.13 | 4.32 +M-D | - | 6.45 | 6.84 | 4.05 | - | - | - | - ## Execution time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann (ms) | 294.00 | 2.85 | 3.03 | 9.76 | 1.49 | 1.55 | 10.40 | 4.35 -Bellman Ford (ms) | 1760.00 | 5.17 | 3.43 | 3.77 | 2.87 | 5.98 | - | 19.20 -Dijkstra (ms) | 4900.00 | 26.10 | 17.00 | 19.70 | 19.30 | 31.00 | - | 23.40 -Euler (ms) | 3920.00 | 25.30 | 25.80 | 38.30 | 14.80 | 145.00 | 13.70 | 128.00 -Midpoint Explicit (ms) | 7980.00 | 52.50 | 51.40 | 77.40 | 23.90 | 281.00 | 16.80 | 250.00 -Midpoint Fixed (ms) | 41200.00 | 251.00 | 92.60 | 374.00 | 75.60 | 1400.00 | 61.00 | 1200.00 -RK4 (ms) | 19900.00 | 158.00 | 35.60 | 138.00 | 34.20 | 481.00 | 38.60 | 405.00 -FD - L Convection (ms) | 2260.00 | 1.63 | 1.62 | 2.68 | 1.51 | 1.63 | - | 4.08 -FD - NL Convection (ms) | 2710.00 | 1.88 | 1.63 | 2.83 | 1.97 | 2.02 | - | 4.08 -FD - Poisson (ms) | 6150.00 | 2.95 | 5.46 | 7.20 | 2.77 | 3.72 | - | 4.93 -FD - Laplace (ms) | 575.00 | 64.20 | 143.00 | 246.00 | 58.50 | 255.00 | - | 274.00 -M-D (ms) | 14800.00 | 15.20 | 53.10 | 59.30 | - | - | - | - +Ackermann (ms) | 291.00 | 2.87 | 3.04 | 9.65 | 1.55 | 1.59 | 9.56 | 4.33 +Bellman Ford (ms) | 1750.00 | 5.23 | 3.44 | 3.77 | 2.92 | 6.14 | - | 19.20 +Dijkstra (ms) | 4850.00 | 24.70 | 16.90 | 20.60 | 18.40 | 29.70 | - | 23.20 +Dijkstra with heap class (ms) | 9200.00 | - | - | - | 9210.00 | 272.00 | 104.00 | - | 109.00 +Euler (ms) | 3810.00 | 24.80 | 25.50 | 38.80 | 15.90 | 141.00 | 14.00 | 127.00 +Midpoint Explicit (ms) | 7800.00 | 52.30 | 51.50 | 78.80 | 23.60 | 280.00 | 17.00 | 250.00 +Midpoint Fixed (ms) | 39400.00 | 253.00 | 92.20 | 371.00 | 74.60 | 1390.00 | 63.70 | 1210.00 +RK4 (ms) | 19600.00 | 167.00 | 35.20 | 137.00 | 33.50 | 485.00 | 37.00 | 403.00 +FD - L Convection (ms) | 2170.00 | 1.63 | 1.61 | 2.66 | 1.62 | 1.62 | - | 4.10 +FD - NL Convection (ms) | 2730.00 | 1.76 | 1.68 | 2.83 | 2.04 | 2.19 | - | 4.10 +FD - Poisson (ms) | 6220.00 | 2.95 | 5.46 | 7.13 | 2.74 | 3.83 | - | 5.06 +FD - Laplace (ms) | 576.00 | 64.30 | 142.00 | 245.00 | 58.30 | 255.00 | - | 273.00 +M-D (ms) | 14600.00 | 15.20 | 53.10 | 58.90 | - | - | - | - ![Development compilation results](./version_specific_results/devel_performance_310_compilation.svg) ![Development execution results](./version_specific_results/devel_performance_310_execution.svg) From ef02b16567f30151e0bdb1ffd465fd45765d5d74 Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Sun, 15 Dec 2024 11:31:32 +0100 Subject: [PATCH 06/13] Missing continue --- benchmarks/run_benchmarks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmarks/run_benchmarks.py b/benchmarks/run_benchmarks.py index 8f16d33c..f6566e21 100644 --- a/benchmarks/run_benchmarks.py +++ b/benchmarks/run_benchmarks.py @@ -281,6 +281,7 @@ def run_process(cmd: "List[str]", time_compilation: "bool"=False, env = None): run_times.append(None) run_units.append(None) print(err, file=log_file, flush=True) + continue else: print("Compilation Process time : ",out, file=log_file, flush=True) comp_times.append('{:.2f}'.format(float(out))) From fa3ae82b32a8abcd50318bd6c21d83b04f963619 Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Sun, 15 Dec 2024 11:32:04 +0100 Subject: [PATCH 07/13] Benchmark of pyccel From 74b8a2648c4fe65c340929ac704d94da7de08074 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 11:01:18 +0000 Subject: [PATCH 08/13] Update performance comparison --- .../devel_performance_310.md | 54 +- .../devel_performance_310_compilation.svg | 592 ++++----- .../devel_performance_310_execution.svg | 1120 ++++++++--------- 3 files changed, 865 insertions(+), 901 deletions(-) diff --git a/version_specific_results/devel_performance_310.md b/version_specific_results/devel_performance_310.md index d771891d..7511b88c 100644 --- a/version_specific_results/devel_performance_310.md +++ b/version_specific_results/devel_performance_310.md @@ -1,34 +1,34 @@ -### Performance Comparison (as of Sun Dec 15 09:43:52 UTC 2024) +### Performance Comparison (as of Sun Dec 15 11:01:13 UTC 2024) ## Compilation time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann | - | 2.29 | 2.11 | 0.33 | 1.34 | 1.31 | 1.44 | 1.39 -Bellman Ford | - | 3.44 | 3.73 | 1.09 | 3.67 | 3.97 | 3.82 | 4.00 -Dijkstra | - | 2.39 | 2.68 | 1.59 | 3.73 | 4.01 | 3.90 | 4.05 -Dijkstra with heap class | - | - | - | - | 4.23 | 4.05 | 4.57 | 4.09 -Euler | - | 2.71 | 3.06 | 2.04 | 3.67 | 3.98 | 3.80 | 4.03 -Midpoint Explicit | - | 3.09 | 3.46 | 3.04 | 3.89 | 4.25 | 4.03 | 4.21 -Midpoint Fixed | - | 3.47 | 3.91 | 3.23 | 3.95 | 4.30 | 4.14 | 4.31 -RK4 | - | 3.76 | 4.25 | 3.80 | 4.39 | 4.68 | 4.47 | 4.70 -FD - L Convection | - | 2.33 | 2.68 | 0.88 | 1.41 | 3.98 | 1.61 | 3.95 -FD - NL Convection | - | 3.33 | 3.58 | 0.89 | 1.43 | 3.99 | 1.64 | 3.95 -FD - Poisson | - | 3.41 | 3.73 | 1.34 | 1.54 | 4.07 | 2.88 | 4.02 -FD - Laplace | - | 6.59 | 8.08 | 3.05 | 1.84 | 4.38 | 2.13 | 4.32 -M-D | - | 6.45 | 6.84 | 4.05 | - | - | - | - +Ackermann | - | 2.30 | 2.12 | 0.33 | 1.32 | 1.32 | 1.45 | 1.39 +Bellman Ford | - | 3.41 | 3.68 | 1.08 | 3.70 | 3.93 | 3.78 | 3.93 +Dijkstra | - | 2.38 | 2.66 | 1.56 | 3.71 | 3.98 | 3.89 | 4.04 +Dijkstra with heap class | - | - | - | - | 4.23 | 4.09 | 4.61 | 4.11 +Euler | - | 2.66 | 3.04 | 2.01 | 3.61 | 3.94 | 3.77 | 3.98 +Midpoint Explicit | - | 3.04 | 3.43 | 2.99 | 3.85 | 4.18 | 3.98 | 4.17 +Midpoint Fixed | - | 3.54 | 3.95 | 3.22 | 3.95 | 4.26 | 4.09 | 4.27 +RK4 | - | 3.72 | 4.22 | 3.74 | 4.33 | 4.62 | 4.44 | 4.64 +FD - L Convection | - | 2.31 | 2.65 | 0.87 | 1.40 | 3.93 | 1.59 | 3.93 +FD - NL Convection | - | 3.29 | 3.54 | 0.88 | 1.41 | 3.92 | 1.62 | 3.91 +FD - Poisson | - | 3.38 | 3.64 | 1.33 | 1.53 | 4.03 | 2.84 | 4.00 +FD - Laplace | - | 6.49 | 7.97 | 3.01 | 1.82 | 4.34 | 2.10 | 4.28 +M-D | - | 6.41 | 6.74 | 4.03 | - | - | - | - ## Execution time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann (ms) | 291.00 | 2.87 | 3.04 | 9.65 | 1.55 | 1.59 | 9.56 | 4.33 -Bellman Ford (ms) | 1750.00 | 5.23 | 3.44 | 3.77 | 2.92 | 6.14 | - | 19.20 -Dijkstra (ms) | 4850.00 | 24.70 | 16.90 | 20.60 | 18.40 | 29.70 | - | 23.20 -Dijkstra with heap class (ms) | 9200.00 | - | - | - | 9210.00 | 272.00 | 104.00 | - | 109.00 -Euler (ms) | 3810.00 | 24.80 | 25.50 | 38.80 | 15.90 | 141.00 | 14.00 | 127.00 -Midpoint Explicit (ms) | 7800.00 | 52.30 | 51.50 | 78.80 | 23.60 | 280.00 | 17.00 | 250.00 -Midpoint Fixed (ms) | 39400.00 | 253.00 | 92.20 | 371.00 | 74.60 | 1390.00 | 63.70 | 1210.00 -RK4 (ms) | 19600.00 | 167.00 | 35.20 | 137.00 | 33.50 | 485.00 | 37.00 | 403.00 -FD - L Convection (ms) | 2170.00 | 1.63 | 1.61 | 2.66 | 1.62 | 1.62 | - | 4.10 -FD - NL Convection (ms) | 2730.00 | 1.76 | 1.68 | 2.83 | 2.04 | 2.19 | - | 4.10 -FD - Poisson (ms) | 6220.00 | 2.95 | 5.46 | 7.13 | 2.74 | 3.83 | - | 5.06 -FD - Laplace (ms) | 576.00 | 64.30 | 142.00 | 245.00 | 58.30 | 255.00 | - | 273.00 -M-D (ms) | 14600.00 | 15.20 | 53.10 | 58.90 | - | - | - | - +Ackermann (ms) | 292.00 | 2.86 | 3.04 | 9.60 | 1.55 | 1.55 | 10.10 | 4.33 +Bellman Ford (ms) | 1750.00 | 5.22 | 3.41 | 3.90 | 2.94 | 6.09 | - | 18.90 +Dijkstra (ms) | 4870.00 | 25.30 | 16.80 | 18.90 | 18.30 | 29.30 | - | 21.00 +Dijkstra with heap class (ms) | 8920.00 | - | - | - | 264.00 | 102.00 | - | 107.00 +Euler (ms) | 3790.00 | 25.60 | 25.40 | 36.90 | 14.40 | 141.00 | 13.80 | 127.00 +Midpoint Explicit (ms) | 7630.00 | 52.70 | 51.20 | 78.00 | 22.10 | 279.00 | 16.20 | 251.00 +Midpoint Fixed (ms) | 39500.00 | 252.00 | 92.50 | 376.00 | 74.40 | 1400.00 | 58.90 | 1200.00 +RK4 (ms) | 21000.00 | 161.00 | 36.80 | 139.00 | 31.50 | 485.00 | 38.40 | 402.00 +FD - L Convection (ms) | 2260.00 | 1.63 | 1.60 | 2.67 | 1.54 | 1.85 | - | 4.06 +FD - NL Convection (ms) | 2720.00 | 1.82 | 1.62 | 2.77 | 1.83 | 2.03 | - | 4.09 +FD - Poisson (ms) | 6020.00 | 2.95 | 5.45 | 7.10 | 2.75 | 3.84 | - | 4.95 +FD - Laplace (ms) | 578.00 | 64.70 | 143.00 | 244.00 | 58.10 | 280.00 | - | 273.00 +M-D (ms) | 14600.00 | 15.30 | 52.90 | 58.90 | - | - | - | - diff --git a/version_specific_results/devel_performance_310_compilation.svg b/version_specific_results/devel_performance_310_compilation.svg index 33e3f966..4cfb4ea5 100644 --- a/version_specific_results/devel_performance_310_compilation.svg +++ b/version_specific_results/devel_performance_310_compilation.svg @@ -6,7 +6,7 @@ - 2024-12-15T09:43:53.353229 + 2024-12-15T11:01:14.803306 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -244,7 +244,7 @@ z - + @@ -370,7 +370,7 @@ z - + @@ -495,7 +495,7 @@ z - + @@ -594,7 +594,7 @@ z - + @@ -650,7 +650,7 @@ z - + @@ -712,7 +712,7 @@ z - + @@ -738,7 +738,7 @@ z - + @@ -816,7 +816,7 @@ z - + @@ -894,7 +894,7 @@ z - + @@ -939,7 +939,7 @@ z - + @@ -986,7 +986,7 @@ z - + @@ -1010,7 +1010,7 @@ z - + @@ -1028,16 +1028,16 @@ z +" clip-path="url(#p27b5b916ea)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.5; stroke-width: 0.5; stroke-linecap: square"/> - - + @@ -1072,18 +1072,18 @@ z - + - + - + - + - + - + - + - + - + - + - + - + +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #ff7f0e"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #2ca02c"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #d62728"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #9467bd"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #8c564b"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #e377c2"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> +" clip-path="url(#p27b5b916ea)" style="fill: #7f7f7f"/> + diff --git a/version_specific_results/devel_performance_310_execution.svg b/version_specific_results/devel_performance_310_execution.svg index 0a89cc11..35cc1c38 100644 --- a/version_specific_results/devel_performance_310_execution.svg +++ b/version_specific_results/devel_performance_310_execution.svg @@ -6,7 +6,7 @@ - 2024-12-15T09:43:53.890388 + 2024-12-15T11:01:15.326850 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -244,7 +244,7 @@ z - + @@ -370,7 +370,7 @@ z - + @@ -495,7 +495,7 @@ z - + @@ -594,7 +594,7 @@ z - + @@ -650,7 +650,7 @@ z - + @@ -712,7 +712,7 @@ z - + @@ -738,7 +738,7 @@ z - + @@ -816,7 +816,7 @@ z - + @@ -894,7 +894,7 @@ z - + @@ -939,7 +939,7 @@ z - + @@ -986,7 +986,7 @@ z - + @@ -1010,7 +1010,7 @@ z - + @@ -1026,23 +1026,23 @@ z - + - - + - + - + - + - + @@ -1108,18 +1108,18 @@ L 361.22 63.421335 - + - + - + - + - + - + - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1606,662 +1570,662 @@ z - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - + - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #ff7f0e"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - + - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #2ca02c"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - + - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #d62728"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - +" clip-path="url(#p2065979b41)" style="fill: #9467bd"/> - + - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - +" clip-path="url(#p2065979b41)" style="fill: #8c564b"/> - + - +" clip-path="url(#p2065979b41)" style="fill: #e377c2"/> - + - + - + - +" clip-path="url(#p2065979b41)" style="fill: #e377c2"/> - +" clip-path="url(#p2065979b41)" style="fill: #e377c2"/> - +" clip-path="url(#p2065979b41)" style="fill: #e377c2"/> - +" clip-path="url(#p2065979b41)" style="fill: #e377c2"/> - + - + - + - + - + - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - + - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - +" clip-path="url(#p2065979b41)" style="fill: #7f7f7f"/> - + + From 934a6125a2930ba537ffc1badd69c0dbb1d4ce65 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 11:01:34 +0000 Subject: [PATCH 09/13] Update README and version --- README.md | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 61097a10..65365e15 100644 --- a/README.md +++ b/README.md @@ -89,40 +89,40 @@ Solves a 2D Laplace problem using Finite Differences methods. The code is adapte Runs a molecular dynamics simulation. The code is adapted from examples written by [J. Burkardt](https://people.sc.fsu.edu/~jburkardt/py_src/py_src.html) ## Development branch results -### Performance Comparison (as of Sun Dec 15 09:43:52 UTC 2024) +### Performance Comparison (as of Sun Dec 15 11:01:13 UTC 2024) ## Compilation time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann | - | 2.29 | 2.11 | 0.33 | 1.34 | 1.31 | 1.44 | 1.39 -Bellman Ford | - | 3.44 | 3.73 | 1.09 | 3.67 | 3.97 | 3.82 | 4.00 -Dijkstra | - | 2.39 | 2.68 | 1.59 | 3.73 | 4.01 | 3.90 | 4.05 -Dijkstra with heap class | - | - | - | - | 4.23 | 4.05 | 4.57 | 4.09 -Euler | - | 2.71 | 3.06 | 2.04 | 3.67 | 3.98 | 3.80 | 4.03 -Midpoint Explicit | - | 3.09 | 3.46 | 3.04 | 3.89 | 4.25 | 4.03 | 4.21 -Midpoint Fixed | - | 3.47 | 3.91 | 3.23 | 3.95 | 4.30 | 4.14 | 4.31 -RK4 | - | 3.76 | 4.25 | 3.80 | 4.39 | 4.68 | 4.47 | 4.70 -FD - L Convection | - | 2.33 | 2.68 | 0.88 | 1.41 | 3.98 | 1.61 | 3.95 -FD - NL Convection | - | 3.33 | 3.58 | 0.89 | 1.43 | 3.99 | 1.64 | 3.95 -FD - Poisson | - | 3.41 | 3.73 | 1.34 | 1.54 | 4.07 | 2.88 | 4.02 -FD - Laplace | - | 6.59 | 8.08 | 3.05 | 1.84 | 4.38 | 2.13 | 4.32 -M-D | - | 6.45 | 6.84 | 4.05 | - | - | - | - +Ackermann | - | 2.30 | 2.12 | 0.33 | 1.32 | 1.32 | 1.45 | 1.39 +Bellman Ford | - | 3.41 | 3.68 | 1.08 | 3.70 | 3.93 | 3.78 | 3.93 +Dijkstra | - | 2.38 | 2.66 | 1.56 | 3.71 | 3.98 | 3.89 | 4.04 +Dijkstra with heap class | - | - | - | - | 4.23 | 4.09 | 4.61 | 4.11 +Euler | - | 2.66 | 3.04 | 2.01 | 3.61 | 3.94 | 3.77 | 3.98 +Midpoint Explicit | - | 3.04 | 3.43 | 2.99 | 3.85 | 4.18 | 3.98 | 4.17 +Midpoint Fixed | - | 3.54 | 3.95 | 3.22 | 3.95 | 4.26 | 4.09 | 4.27 +RK4 | - | 3.72 | 4.22 | 3.74 | 4.33 | 4.62 | 4.44 | 4.64 +FD - L Convection | - | 2.31 | 2.65 | 0.87 | 1.40 | 3.93 | 1.59 | 3.93 +FD - NL Convection | - | 3.29 | 3.54 | 0.88 | 1.41 | 3.92 | 1.62 | 3.91 +FD - Poisson | - | 3.38 | 3.64 | 1.33 | 1.53 | 4.03 | 2.84 | 4.00 +FD - Laplace | - | 6.49 | 7.97 | 3.01 | 1.82 | 4.34 | 2.10 | 4.28 +M-D | - | 6.41 | 6.74 | 4.03 | - | - | - | - ## Execution time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_fortran_gnu | pyccel_c_gnu | pyccel_fortran_intel | pyccel_c_intel ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann (ms) | 291.00 | 2.87 | 3.04 | 9.65 | 1.55 | 1.59 | 9.56 | 4.33 -Bellman Ford (ms) | 1750.00 | 5.23 | 3.44 | 3.77 | 2.92 | 6.14 | - | 19.20 -Dijkstra (ms) | 4850.00 | 24.70 | 16.90 | 20.60 | 18.40 | 29.70 | - | 23.20 -Dijkstra with heap class (ms) | 9200.00 | - | - | - | 9210.00 | 272.00 | 104.00 | - | 109.00 -Euler (ms) | 3810.00 | 24.80 | 25.50 | 38.80 | 15.90 | 141.00 | 14.00 | 127.00 -Midpoint Explicit (ms) | 7800.00 | 52.30 | 51.50 | 78.80 | 23.60 | 280.00 | 17.00 | 250.00 -Midpoint Fixed (ms) | 39400.00 | 253.00 | 92.20 | 371.00 | 74.60 | 1390.00 | 63.70 | 1210.00 -RK4 (ms) | 19600.00 | 167.00 | 35.20 | 137.00 | 33.50 | 485.00 | 37.00 | 403.00 -FD - L Convection (ms) | 2170.00 | 1.63 | 1.61 | 2.66 | 1.62 | 1.62 | - | 4.10 -FD - NL Convection (ms) | 2730.00 | 1.76 | 1.68 | 2.83 | 2.04 | 2.19 | - | 4.10 -FD - Poisson (ms) | 6220.00 | 2.95 | 5.46 | 7.13 | 2.74 | 3.83 | - | 5.06 -FD - Laplace (ms) | 576.00 | 64.30 | 142.00 | 245.00 | 58.30 | 255.00 | - | 273.00 -M-D (ms) | 14600.00 | 15.20 | 53.10 | 58.90 | - | - | - | - +Ackermann (ms) | 292.00 | 2.86 | 3.04 | 9.60 | 1.55 | 1.55 | 10.10 | 4.33 +Bellman Ford (ms) | 1750.00 | 5.22 | 3.41 | 3.90 | 2.94 | 6.09 | - | 18.90 +Dijkstra (ms) | 4870.00 | 25.30 | 16.80 | 18.90 | 18.30 | 29.30 | - | 21.00 +Dijkstra with heap class (ms) | 8920.00 | - | - | - | 264.00 | 102.00 | - | 107.00 +Euler (ms) | 3790.00 | 25.60 | 25.40 | 36.90 | 14.40 | 141.00 | 13.80 | 127.00 +Midpoint Explicit (ms) | 7630.00 | 52.70 | 51.20 | 78.00 | 22.10 | 279.00 | 16.20 | 251.00 +Midpoint Fixed (ms) | 39500.00 | 252.00 | 92.50 | 376.00 | 74.40 | 1400.00 | 58.90 | 1200.00 +RK4 (ms) | 21000.00 | 161.00 | 36.80 | 139.00 | 31.50 | 485.00 | 38.40 | 402.00 +FD - L Convection (ms) | 2260.00 | 1.63 | 1.60 | 2.67 | 1.54 | 1.85 | - | 4.06 +FD - NL Convection (ms) | 2720.00 | 1.82 | 1.62 | 2.77 | 1.83 | 2.03 | - | 4.09 +FD - Poisson (ms) | 6020.00 | 2.95 | 5.45 | 7.10 | 2.75 | 3.84 | - | 4.95 +FD - Laplace (ms) | 578.00 | 64.70 | 143.00 | 244.00 | 58.10 | 280.00 | - | 273.00 +M-D (ms) | 14600.00 | 15.30 | 52.90 | 58.90 | - | - | - | - ![Development compilation results](./version_specific_results/devel_performance_310_compilation.svg) ![Development execution results](./version_specific_results/devel_performance_310_execution.svg) From 17dbb554b357c15b71a72810e835ca82c93ac969 Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Fri, 27 Jun 2025 13:19:46 +0200 Subject: [PATCH 10/13] Run on main --- .github/workflows/run_benchmarks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_benchmarks.yml b/.github/workflows/run_benchmarks.yml index c9116230..abbae887 100644 --- a/.github/workflows/run_benchmarks.yml +++ b/.github/workflows/run_benchmarks.yml @@ -32,7 +32,7 @@ jobs: - name: Install development version of pyccel from GitHub run: | pip3 install --upgrade pip - pip3 install 'pyccel @ git+https://github.com/pyccel/pyccel@test_pasc_branch' + pip3 install 'pyccel @ git+https://github.com/pyccel/pyccel' - name: Install python dependencies run: | pip3 install . From 5f93bc607bf2c848498930762db13f9695ab2ab2 Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Fri, 27 Jun 2025 13:20:40 +0200 Subject: [PATCH 11/13] Benchmark of pyccel From d0dcf9dfb8616a3b0d1ad790f679a055c4d3f942 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 11:43:27 +0000 Subject: [PATCH 12/13] Update performance comparison --- .../devel_performance_311.md | 52 +- .../devel_performance_311_compilation.svg | 1389 ++++++------- .../devel_performance_311_execution.svg | 1721 +++++++++-------- 3 files changed, 1664 insertions(+), 1498 deletions(-) diff --git a/version_specific_results/devel_performance_311.md b/version_specific_results/devel_performance_311.md index 6c915d64..fed04f56 100644 --- a/version_specific_results/devel_performance_311.md +++ b/version_specific_results/devel_performance_311.md @@ -1,34 +1,36 @@ -### Performance Comparison (as of Fri Jun 27 09:07:43 UTC 2025) +### Performance Comparison (as of Fri Jun 27 11:43:23 UTC 2025) ## Compilation time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_gnu_c | pyccel_gnu_fortran | pyccel_intel_c | pyccel_intel_fortran ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann | - | 2.36 | 2.04 | 0.27 | 1.33 | 1.35 | 1.33 | 1.39 -Bellman Ford | - | 3.37 | 3.65 | 0.94 | 1.62 | 1.50 | 1.56 | 1.55 -Dijkstra | - | 2.35 | 2.62 | 1.20 | 1.72 | 1.60 | 1.67 | 1.69 -Euler | - | 2.59 | 2.95 | 3.30 | 1.57 | 1.46 | 1.55 | 1.52 -Midpoint Explicit | - | 2.93 | 3.32 | 3.63 | 1.83 | 1.70 | 1.75 | 1.76 -Midpoint Fixed | - | 3.27 | 3.63 | 3.71 | 1.88 | 1.75 | 1.80 | 1.81 -RK4 | - | 3.43 | 3.88 | 3.71 | 2.21 | 2.14 | 2.11 | 2.16 -FD - L Convection | - | 2.28 | 2.61 | 2.43 | 1.54 | 1.44 | 1.48 | 1.48 -FD - NL Convection | - | 3.23 | 3.54 | 2.43 | 1.53 | 1.43 | 1.50 | 1.48 -FD - Poisson | - | 3.41 | 3.67 | 5.59 | 1.66 | 1.70 | 1.63 | 1.87 -FD - Laplace | - | 6.79 | 7.50 | 6.94 | 1.90 | 1.85 | 1.80 | 1.96 -M-D | - | 6.16 | 6.10 | 8.36 | 2.33 | 2.46 | 2.22 | 2.53 +Ackermann | - | 2.34 | 2.21 | 0.28 | 1.35 | 1.36 | 1.35 | 1.44 +Bellman Ford | - | 3.35 | 3.61 | 0.93 | 1.63 | 1.50 | 1.56 | 1.56 +Dijkstra | - | 2.34 | 2.60 | 1.22 | 1.72 | 1.62 | 1.65 | 1.69 +Dijkstra with heap class | - | - | - | - | - | - | - | - +Euler | - | 2.62 | 2.98 | 3.31 | 1.58 | 1.48 | 1.53 | 1.53 +Midpoint Explicit | - | 2.92 | 3.32 | 3.59 | 1.81 | 1.70 | 1.76 | 1.74 +Midpoint Fixed | - | 3.31 | 3.68 | 3.69 | 1.90 | 1.78 | 1.82 | 1.81 +RK4 | - | 3.43 | 3.87 | 3.74 | 2.24 | 2.16 | 2.14 | 2.18 +FD - L Convection | - | 2.29 | 2.59 | 2.45 | 1.54 | 1.44 | 1.48 | 1.49 +FD - NL Convection | - | 3.23 | 3.59 | 2.45 | 1.54 | 1.46 | 1.50 | 1.50 +FD - Poisson | - | 3.44 | 3.65 | 5.64 | 1.67 | 1.71 | 1.62 | 1.87 +FD - Laplace | - | 6.86 | 7.48 | 7.04 | 1.92 | 1.87 | 1.82 | 1.94 +M-D | - | 6.18 | 6.15 | 8.44 | 2.36 | 2.47 | 2.26 | 2.57 Splines | - | - | - | 0.58 | - | - | - | - ## Execution time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_gnu_c | pyccel_gnu_fortran | pyccel_intel_c | pyccel_intel_fortran ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann (ms) | 409.00 | 2.92 | 3.05 | 9.82 | 1.23 | 1.32 | 4.00 | 9.63 -Bellman Ford (ms) | 1680.00 | 5.25 | 3.49 | 3.83 | 3.74 | 3.26 | 6.44 | 4.42 -Dijkstra (ms) | 4750.00 | 21.00 | 17.10 | 19.30 | 67.00 | 19.00 | 69.20 | 22.20 -Euler (ms) | 3380.00 | 25.30 | 25.20 | 36.40 | 26.40 | 10.60 | 26.80 | 15.10 -Midpoint Explicit (ms) | 6860.00 | 50.90 | 50.80 | 69.00 | 45.20 | 18.90 | 45.90 | 16.00 -Midpoint Fixed (ms) | 34500.00 | 268.00 | 91.90 | 323.00 | 190.00 | 71.90 | 354.00 | 51.30 -RK4 (ms) | 17100.00 | 153.00 | 36.00 | 127.00 | 95.80 | 32.30 | 90.40 | 28.00 -FD - L Convection (ms) | 2130.00 | 1.55 | 1.60 | 5.63 | 6.63 | 1.51 | 7.74 | 1.56 -FD - NL Convection (ms) | 2640.00 | 2.02 | 1.65 | 5.65 | 6.66 | 1.59 | 8.02 | 1.40 -FD - Poisson (ms) | 5460.00 | 2.97 | 5.33 | 6.74 | 16.10 | 2.63 | 24.00 | 2.60 -FD - Laplace (ms) | 623.00 | 66.80 | 127.00 | 274.00 | 484.00 | 61.30 | 656.00 | 59.50 -M-D (ms) | 14300.00 | 36.10 | 52.50 | 60.60 | 114.00 | 62.40 | 62.00 | 89.40 +Ackermann (ms) | 415.00 | 2.91 | 3.05 | 9.65 | 1.23 | 1.27 | 4.01 | 8.66 +Bellman Ford (ms) | 1680.00 | 5.24 | 3.48 | 3.92 | 3.81 | 3.22 | 5.83 | 4.28 +Dijkstra (ms) | 4810.00 | 20.60 | 17.10 | 18.60 | 64.10 | 18.70 | 65.40 | 22.20 +Dijkstra with heap class (s) | 6.58 | - | - | - | - | - | - | - +Euler (ms) | 3410.00 | 25.20 | 25.30 | 35.90 | 27.30 | 10.60 | 26.60 | 16.20 +Midpoint Explicit (ms) | 6900.00 | 51.60 | 50.90 | 70.80 | 57.10 | 19.00 | 45.60 | 16.20 +Midpoint Fixed (ms) | 35500.00 | 266.00 | 92.00 | 323.00 | 190.00 | 72.00 | 198.00 | 52.00 +RK4 (ms) | 17200.00 | 151.00 | 36.60 | 127.00 | 94.90 | 31.60 | 92.30 | 29.10 +FD - L Convection (ms) | 2100.00 | 1.52 | 1.61 | 5.67 | 7.66 | 1.64 | 7.62 | 1.49 +FD - NL Convection (ms) | 2620.00 | 1.84 | 1.77 | 5.65 | 6.82 | 1.75 | 8.54 | 1.53 +FD - Poisson (ms) | 5770.00 | 2.91 | 5.39 | 6.68 | 16.00 | 2.64 | 23.70 | 2.59 +FD - Laplace (ms) | 650.00 | 66.10 | 127.00 | 276.00 | 491.00 | 59.90 | 664.00 | 58.90 +M-D (ms) | 14400.00 | 35.90 | 52.30 | 60.00 | 117.00 | 62.60 | 61.00 | 88.80 Splines (s) | 1.66 | - | - | 0.02 | - | - | - | - diff --git a/version_specific_results/devel_performance_311_compilation.svg b/version_specific_results/devel_performance_311_compilation.svg index 6cceab41..f50f1911 100644 --- a/version_specific_results/devel_performance_311_compilation.svg +++ b/version_specific_results/devel_performance_311_compilation.svg @@ -6,7 +6,7 @@ - 2025-06-27T09:07:44.154511 + 2025-06-27T11:43:24.641731 image/svg+xml @@ -30,8 +30,8 @@ z - - - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - + - + - + - - + + - + - + - + @@ -662,15 +735,15 @@ z - - + + - + - + - + - + + - + - + - + - + + - + - + - + - + + - + - + - + - + + - + - + - + @@ -934,30 +1007,30 @@ z - - + + - + - + - + - - + + - + - + - + - - - + + + - - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + + - + - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #ff7f0e"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #2ca02c"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #d62728"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #9467bd"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #8c564b"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #e377c2"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - +" clip-path="url(#pc2fddeef10)" style="fill: #7f7f7f"/> - + + + + + + + + + + + + + + + + + + + + + - - + - - + - + - - + - - + - + - + - - - + - + - + @@ -2179,17 +2268,17 @@ z - - + - + - + - - + - + - + - - + - + - + - - + - + - + @@ -2340,17 +2429,17 @@ z - - + - + - + @@ -2377,8 +2466,8 @@ z - - + + diff --git a/version_specific_results/devel_performance_311_execution.svg b/version_specific_results/devel_performance_311_execution.svg index 69f9df6b..fec1f910 100644 --- a/version_specific_results/devel_performance_311_execution.svg +++ b/version_specific_results/devel_performance_311_execution.svg @@ -6,7 +6,7 @@ - 2025-06-27T09:07:44.487938 + 2025-06-27T11:43:24.992297 image/svg+xml @@ -30,8 +30,8 @@ z - - - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - + - + - + - - + + - + - + - + @@ -662,15 +735,15 @@ z - - + + - + - + - + - + + - + - + - + - + + - + - + - + - + + - + - + - + - + + - + - + - + @@ -934,30 +1007,30 @@ z - - + + - + - + - + - - + + - + - + - + - - - + + + - - + - + - + - - - + + + - + - + - + @@ -1086,19 +1159,19 @@ L 383.27 69.199648 - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - + - + @@ -1552,748 +1625,769 @@ L 383.27 8.939941 - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - +" clip-path="url(#pb1e658356b)" style="fill: #ff7f0e"/> - + - + - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #2ca02c"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #d62728"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - +" clip-path="url(#pb1e658356b)" style="fill: #9467bd"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - +" clip-path="url(#pb1e658356b)" style="fill: #8c564b"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - +" clip-path="url(#pb1e658356b)" style="fill: #e377c2"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #7f7f7f"/> - +" clip-path="url(#pb1e658356b)" style="fill: #7f7f7f"/> - +" clip-path="url(#pb1e658356b)" style="fill: #7f7f7f"/> - + - +" clip-path="url(#pb1e658356b)" style="fill: #7f7f7f"/> - +" clip-path="url(#pb1e658356b)" style="fill: #7f7f7f"/> - + - + + + + + + + + + + + + + + + + + + + + + - - + - - + - + - - + - - + - + - + - - - + - + - + @@ -2448,17 +2523,17 @@ z - - + - + - + - - + - + - + - - + - + - + - - + - + - + @@ -2609,17 +2684,17 @@ z - - + - + - + @@ -2646,8 +2721,8 @@ z - - + + From a1d22876f69e216d19f78b1dbcae04c28168995e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 11:43:38 +0000 Subject: [PATCH 13/13] Update README and version --- README.md | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 219f008f..13b93091 100644 --- a/README.md +++ b/README.md @@ -89,39 +89,41 @@ Solves a 2D Laplace problem using Finite Differences methods. The code is adapte Runs a molecular dynamics simulation. The code is adapted from examples written by [J. Burkardt](https://people.sc.fsu.edu/~jburkardt/py_src/py_src.html) ## Development branch results -### Performance Comparison (as of Fri Jun 27 09:07:43 UTC 2025) +### Performance Comparison (as of Fri Jun 27 11:43:23 UTC 2025) ## Compilation time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_gnu_c | pyccel_gnu_fortran | pyccel_intel_c | pyccel_intel_fortran ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann | - | 2.36 | 2.04 | 0.27 | 1.33 | 1.35 | 1.33 | 1.39 -Bellman Ford | - | 3.37 | 3.65 | 0.94 | 1.62 | 1.50 | 1.56 | 1.55 -Dijkstra | - | 2.35 | 2.62 | 1.20 | 1.72 | 1.60 | 1.67 | 1.69 -Euler | - | 2.59 | 2.95 | 3.30 | 1.57 | 1.46 | 1.55 | 1.52 -Midpoint Explicit | - | 2.93 | 3.32 | 3.63 | 1.83 | 1.70 | 1.75 | 1.76 -Midpoint Fixed | - | 3.27 | 3.63 | 3.71 | 1.88 | 1.75 | 1.80 | 1.81 -RK4 | - | 3.43 | 3.88 | 3.71 | 2.21 | 2.14 | 2.11 | 2.16 -FD - L Convection | - | 2.28 | 2.61 | 2.43 | 1.54 | 1.44 | 1.48 | 1.48 -FD - NL Convection | - | 3.23 | 3.54 | 2.43 | 1.53 | 1.43 | 1.50 | 1.48 -FD - Poisson | - | 3.41 | 3.67 | 5.59 | 1.66 | 1.70 | 1.63 | 1.87 -FD - Laplace | - | 6.79 | 7.50 | 6.94 | 1.90 | 1.85 | 1.80 | 1.96 -M-D | - | 6.16 | 6.10 | 8.36 | 2.33 | 2.46 | 2.22 | 2.53 +Ackermann | - | 2.34 | 2.21 | 0.28 | 1.35 | 1.36 | 1.35 | 1.44 +Bellman Ford | - | 3.35 | 3.61 | 0.93 | 1.63 | 1.50 | 1.56 | 1.56 +Dijkstra | - | 2.34 | 2.60 | 1.22 | 1.72 | 1.62 | 1.65 | 1.69 +Dijkstra with heap class | - | - | - | - | - | - | - | - +Euler | - | 2.62 | 2.98 | 3.31 | 1.58 | 1.48 | 1.53 | 1.53 +Midpoint Explicit | - | 2.92 | 3.32 | 3.59 | 1.81 | 1.70 | 1.76 | 1.74 +Midpoint Fixed | - | 3.31 | 3.68 | 3.69 | 1.90 | 1.78 | 1.82 | 1.81 +RK4 | - | 3.43 | 3.87 | 3.74 | 2.24 | 2.16 | 2.14 | 2.18 +FD - L Convection | - | 2.29 | 2.59 | 2.45 | 1.54 | 1.44 | 1.48 | 1.49 +FD - NL Convection | - | 3.23 | 3.59 | 2.45 | 1.54 | 1.46 | 1.50 | 1.50 +FD - Poisson | - | 3.44 | 3.65 | 5.64 | 1.67 | 1.71 | 1.62 | 1.87 +FD - Laplace | - | 6.86 | 7.48 | 7.04 | 1.92 | 1.87 | 1.82 | 1.94 +M-D | - | 6.18 | 6.15 | 8.44 | 2.36 | 2.47 | 2.26 | 2.57 Splines | - | - | - | 0.58 | - | - | - | - ## Execution time Algorithm | python | pythran_gnu | pythran_intel | numba | pyccel_gnu_c | pyccel_gnu_fortran | pyccel_intel_c | pyccel_intel_fortran ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- -Ackermann (ms) | 409.00 | 2.92 | 3.05 | 9.82 | 1.23 | 1.32 | 4.00 | 9.63 -Bellman Ford (ms) | 1680.00 | 5.25 | 3.49 | 3.83 | 3.74 | 3.26 | 6.44 | 4.42 -Dijkstra (ms) | 4750.00 | 21.00 | 17.10 | 19.30 | 67.00 | 19.00 | 69.20 | 22.20 -Euler (ms) | 3380.00 | 25.30 | 25.20 | 36.40 | 26.40 | 10.60 | 26.80 | 15.10 -Midpoint Explicit (ms) | 6860.00 | 50.90 | 50.80 | 69.00 | 45.20 | 18.90 | 45.90 | 16.00 -Midpoint Fixed (ms) | 34500.00 | 268.00 | 91.90 | 323.00 | 190.00 | 71.90 | 354.00 | 51.30 -RK4 (ms) | 17100.00 | 153.00 | 36.00 | 127.00 | 95.80 | 32.30 | 90.40 | 28.00 -FD - L Convection (ms) | 2130.00 | 1.55 | 1.60 | 5.63 | 6.63 | 1.51 | 7.74 | 1.56 -FD - NL Convection (ms) | 2640.00 | 2.02 | 1.65 | 5.65 | 6.66 | 1.59 | 8.02 | 1.40 -FD - Poisson (ms) | 5460.00 | 2.97 | 5.33 | 6.74 | 16.10 | 2.63 | 24.00 | 2.60 -FD - Laplace (ms) | 623.00 | 66.80 | 127.00 | 274.00 | 484.00 | 61.30 | 656.00 | 59.50 -M-D (ms) | 14300.00 | 36.10 | 52.50 | 60.60 | 114.00 | 62.40 | 62.00 | 89.40 +Ackermann (ms) | 415.00 | 2.91 | 3.05 | 9.65 | 1.23 | 1.27 | 4.01 | 8.66 +Bellman Ford (ms) | 1680.00 | 5.24 | 3.48 | 3.92 | 3.81 | 3.22 | 5.83 | 4.28 +Dijkstra (ms) | 4810.00 | 20.60 | 17.10 | 18.60 | 64.10 | 18.70 | 65.40 | 22.20 +Dijkstra with heap class (s) | 6.58 | - | - | - | - | - | - | - +Euler (ms) | 3410.00 | 25.20 | 25.30 | 35.90 | 27.30 | 10.60 | 26.60 | 16.20 +Midpoint Explicit (ms) | 6900.00 | 51.60 | 50.90 | 70.80 | 57.10 | 19.00 | 45.60 | 16.20 +Midpoint Fixed (ms) | 35500.00 | 266.00 | 92.00 | 323.00 | 190.00 | 72.00 | 198.00 | 52.00 +RK4 (ms) | 17200.00 | 151.00 | 36.60 | 127.00 | 94.90 | 31.60 | 92.30 | 29.10 +FD - L Convection (ms) | 2100.00 | 1.52 | 1.61 | 5.67 | 7.66 | 1.64 | 7.62 | 1.49 +FD - NL Convection (ms) | 2620.00 | 1.84 | 1.77 | 5.65 | 6.82 | 1.75 | 8.54 | 1.53 +FD - Poisson (ms) | 5770.00 | 2.91 | 5.39 | 6.68 | 16.00 | 2.64 | 23.70 | 2.59 +FD - Laplace (ms) | 650.00 | 66.10 | 127.00 | 276.00 | 491.00 | 59.90 | 664.00 | 58.90 +M-D (ms) | 14400.00 | 35.90 | 52.30 | 60.00 | 117.00 | 62.60 | 61.00 | 88.80 Splines (s) | 1.66 | - | - | 0.02 | - | - | - | - ![Development compilation results](./version_specific_results/devel_performance_311_compilation.svg)