From e5d305a5276fd987259a50197c6f04e37f563eb0 Mon Sep 17 00:00:00 2001 From: Christophe Prud'homme Date: Fri, 20 Sep 2024 17:32:40 +0200 Subject: [PATCH] update methodo update benchmark methodology #17 --- chapters/WP3/00-index.tex | 2 +- chapters/software.tex | 136 +++++++++---- exama-software.xlsx | Bin 213174 -> 214197 bytes gen.py | 185 ++++++------------ sections/benchmarking.tex | 26 +++ software/arcane-framework/WP3/WP3.tex | 3 +- .../arcane-framework/arcane-framework.tex | 3 +- software/cgal/WP1/WP1.tex | 2 +- software/cgal/cgal.tex | 2 +- software/composyx/WP3/WP3.tex | 3 +- software/composyx/composyx.tex | 3 +- software/feelpp/WP1/WP1.tex | 2 +- software/feelpp/WP2/WP2.tex | 2 +- software/feelpp/WP3/WP3.tex | 2 +- software/feelpp/WP4/WP4.tex | 2 +- software/feelpp/WP5/WP5.tex | 2 +- software/feelpp/feelpp.tex | 2 +- software/freefempp/WP1/WP1.tex | 2 +- software/freefempp/WP3/WP3.tex | 2 +- software/freefempp/WP5/WP5.tex | 2 +- software/freefempp/freefempp.tex | 2 +- software/hawen/WP1/WP1.tex | 2 +- software/hawen/WP3/WP3.tex | 2 +- software/hawen/WP4/WP4.tex | 2 +- software/hawen/hawen.tex | 2 +- software/hpddm/WP3/WP3.tex | 62 ++++-- software/hpddm/hpddm.tex | 71 +++++-- software/mahyco/mahyco.tex | 3 +- software/manta/WP3/WP3.tex | 2 +- software/manta/manta.tex | 2 +- software/mmg-parmmg/WP1/WP1.tex | 2 +- software/mmg-parmmg/mmg-parmmg.tex | 2 +- software/pbb/WP5/WP5.tex | 3 +- software/pbb/pbb.tex | 3 +- software/samurai/WP1/WP1.tex | 2 +- software/samurai/samurai.tex | 4 +- software/scimba/WP2/WP2.tex | 2 +- software/scimba/scimba.tex | 2 +- software/trust-platform/WP3/WP3.tex | 6 +- software/trust-platform/trust-platform.tex | 4 +- software/zellij/WP5/WP5.tex | 2 +- software/zellij/zellij.tex | 2 +- templates/software.tex | 75 +++++++ 43 files changed, 408 insertions(+), 234 deletions(-) create mode 100644 templates/software.tex diff --git a/chapters/WP3/00-index.tex b/chapters/WP3/00-index.tex index 80a6c93..cc33c39 100644 --- a/chapters/WP3/00-index.tex +++ b/chapters/WP3/00-index.tex @@ -3,6 +3,6 @@ \input{software/feelpp/WP3/WP3.tex} \input{software/freefempp/WP3/WP3.tex} \input{software/hawen/WP3/WP3.tex} -\input{software/hpdomain-decomposition-methods/WP3/WP3.tex} +\input{software/hpddm/WP3/WP3.tex} \input{software/manta/WP3/WP3.tex} \input{software/trust-platform/WP3/WP3.tex} diff --git a/chapters/software.tex b/chapters/software.tex index 245a08b..b4db2ba 100644 --- a/chapters/software.tex +++ b/chapters/software.tex @@ -2,25 +2,68 @@ \chapter{Software} \label{sec:software} - This chapter presents the software developed within Exa-MA, focusing on features, mathematics, functionalities, publications, acknowledgments, and contact details. - - First, we present some general statistics about the software identified for Exa-MA that will present some benchmarking results. - Other software (new or existing) will be included in the future version of this document. - - \paragraph{Architectures} - The following pie chart~\ref{fig:arch} shows the distribution of hardware architectures used. - \begin{figure}[H] +This chapter presents the software developed within Exa-MA, focusing on features, mathematics, functionalities, publications, acknowledgments, and contact details. + +First, we present some general statistics about the software identified for Exa-MA that will present some benchmarking results. +Other software (new or existing) will be included in the future versions of this document. + +In the context of the D7.1 deliverable, it is essential to clarify the supported features across different hardware configurations, specifically CPUs, GPUs, and hybrid setups. +The following classification describes the architectural capabilities that will be benchmarked: + +\paragraph{CPU Only} +Software that will exclusively run on CPU architectures (e.g., CGAL, Freefem++, Feel++, Manta). Benchmarks for these codes will only target CPU architectures. + +\paragraph{GPU Only} +Software that will exclusively run on GPU architectures (e.g., Zellij). Benchmarks for these codes will focus solely on GPU architectures. + +\paragraph{CPU or GPU} +Software that can run on either CPU or GPU but not both simultaneously (e.g., PyTorch, SciMba). In this case, benchmarks will be performed on both CPU and GPU, but no single run will execute on both architectures simultaneously. Some benchmarks may be CPU-only, others GPU-only, depending on the software's capabilities. + +\paragraph{CPU and GPU} +Software that supports simultaneous execution on both CPU and GPU during a single simulation run (e.g., TRUST). Benchmarks in this category will involve executing components on both CPU and GPU, ensuring that at least one computational component runs on each architecture. + +\paragraph{Explanation of Benchmarking Criteria} +\begin{itemize} + \item \textbf{CPU Only:} If selected, benchmarks will be performed exclusively on CPU architectures. + \item \textbf{GPU Only:} If selected, benchmarks will focus exclusively on GPU architectures. + \item \textbf{CPU and GPU:} If selected, benchmarks will involve simultaneous execution on CPU and GPU within the same run. + \item \textbf{CPU or GPU:} If selected, benchmarks will involve execution on either CPU or GPU, but not simultaneously. Some benchmarks will target CPU, others GPU, depending on the computational components. +\end{itemize} + + + +\section{General Statistics} +\label{sec:software:statistics} + +In this section, we provide an overview of the key characteristics and technological choices for the software developed and benchmarked within Exa-MA. +These statistics offer insights into the diversity of hardware architectures, programming languages, and parallel computing technologies utilized across the different software packages. + +The aim is to highlight the widespread usage of various technologies, demonstrating both the flexibility and the breadth of approaches within the project. +Additionally, the DevOps practices employed, such as continuous integration, testing, and deployment, are presented to underscore the commitment to ensuring quality, reliability, and maintainability of the software developed under Exa-MA. + +The following subsections provide detailed breakdowns of the different aspects of the software involved in the project, from supported architectures and programming languages to specific parallelism technologies, data formats, and DevOps strategies. +It helps to assess the readiness of the software for large-scale simulations and benchmarks in exascale computing environments. + + +\subsection{Architectures} + +The following pie chart~\ref{fig:arch} shows the distribution of hardware architectures used. + +\begin{figure}[H] \centering \begin{tikzpicture} -\pie[text=legend, color={red, orange, yellow}, sum=auto]{13/CPU, 7/GPU, 1/Hybrid} +\pie[text=legend, color={red, orange, yellow, lime}, sum=auto]{5/CPU or GPU, 7/CPU Only, 2/CPU and GPU, 1/GPU Only} \end{tikzpicture} -\caption{Distribution of hardware architectures} +\caption{Distribution of bemchmarked hardware architectures} \label{fig:arch} \end{figure} - \paragraph{Programming Languages} - The following pie chart~\ref{fig:languages} shows the distribution of programming languages used, highlighting the variety of computational solutions employed. - \begin{figure}[H] + +\subsection{Programming Languages} + +The following pie chart~\ref{fig:languages} shows the distribution of programming languages used, highlighting the variety of computational solutions employed. + +\begin{figure}[H] \centering \begin{tikzpicture} \pie[text=legend, color={red, orange, yellow, lime, skyblue, pink, cyan, magenta}, sum=auto]{11/C++, 1/C\#, 3/C, 4/Fortran, 2/C++17, 4/Python, 1/C++20, 1/C++14} @@ -29,20 +72,28 @@ \chapter{Software} \label{fig:languages} \end{figure} - \paragraph{Parallelism Technology} - The pie chart~\ref{fig:parallelism} below represents the parallelism techniques used in Exa-MA software selected for this document. - \begin{figure}[H] + +\subsection{Parallelism Technology} + + +The pie chart~\ref{fig:parallelism} below represents the parallelism techniques used in Exa-MA software selected for this document. + +\begin{figure}[H] \centering \begin{tikzpicture} -\pie[text=legend, color={red, orange, yellow, lime, skyblue, pink}, sum=auto]{7/Multithread, 13/MPI, 6/GPU, 1/Parallelism - C++, 1/Task based, 1/Chapel} +\pie[text=legend, color={red, orange, yellow, lime, skyblue, pink}, sum=auto]{7/Multithread, 13/MPI, 7/GPU, 1/Parallelism - C++, 1/Task based, 1/Chapel} \end{tikzpicture} \caption{Distribution of parallelism technologies} \label{fig:parallelism} \end{figure} - \paragraph{Data Formats} - The chart~\ref{fig:data} shows the supported data formats, for flexibility and compatibility in data handling, supported by Exa-MA software selected for this document. - \begin{figure}[H] + + +\subsection{Data Formats} + +The chart~\ref{fig:data} shows the supported data formats, for flexibility and compatibility in data handling, supported by Exa-MA software selected for this document. + +\begin{figure}[H] \centering \begin{tikzpicture} \pie[text=legend, color={red, orange, yellow, lime, skyblue, pink, cyan, magenta, peach, lavender}, sum=auto]{2/XML, 5/HDF5, 2/JSON, 2/Ensight, 5/None, 1/YAML, 1/Data-management system, 6/VTK, 6/in-house format, 4/Gmsh and associated formats, 2/MED, 1/MFront} @@ -51,20 +102,26 @@ \chapter{Software} \label{fig:data} \end{figure} - \paragraph{DevOps - CI/CD} - The pie chart~\ref{fig:devops-cicd} below displays the support of continuous integration and deployment practices as well as continuous benchmarking, showcasing systematic software updates, quality maintenance and performance regression. - \begin{figure}[H] + +\subsection{DevOps - CI/CD} + +The pie chart~\ref{fig:devops-cicd} below displays the support of continuous integration and deployment practices as well as continuous benchmarking, showcasing systematic software updates, quality maintenance and performance regression. + +\begin{figure}[H] \centering \begin{tikzpicture} -\pie[text=legend, color={red, orange, yellow, lime}, sum=auto]{11/Continuous Integration, 1/Continuous Benchmarking, 1/Continuous Delivery, 4/None} +\pie[text=legend, color={red, orange, yellow, lime}, sum=auto]{11/Continuous Integration, 1/Continuous Benchmarking, 2/Continuous Delivery, 4/None} \end{tikzpicture} \caption{Distribution of DevOps CI/CD/CD} \label{fig:devops-cicd} \end{figure} - \paragraph{DevOps - Packaging} - The next chart~\ref{fig:devops-packaging} shows different packaging methods used, which help in the distribution and management of software. - \begin{figure}[H] + +\subsection{DevOps - Packaging} + +The next chart~\ref{fig:devops-packaging} shows different packaging methods used, which help in the distribution and management of software. + +\begin{figure}[H] \centering \begin{tikzpicture} \pie[text=legend, color={red, orange, yellow, lime, skyblue, pink}, sum=auto]{10/None, 5/Debian-based, 2/Fedora, 2/Spack, 1/GUIX, 1/Other} @@ -73,9 +130,12 @@ \chapter{Software} \label{fig:devops-packaging} \end{figure} - \paragraph{DevOps - Containers} - The pie chart~\ref{fig:devops-containers} displays the use of container technologies, which help encapsulate the software to run reliably in various environments. - \begin{figure}[H] + +\subsection{DevOps - Containers} + +The pie chart~\ref{fig:devops-containers} displays the use of container technologies, which help encapsulate the software to run reliably in various environments. + +\begin{figure}[H] \centering \begin{tikzpicture} \pie[text=legend, color={red, orange, yellow}, sum=auto]{12/None, 2/Apptainer/Singularity, 2/Docker} @@ -84,23 +144,28 @@ \chapter{Software} \label{fig:devops-containers} \end{figure} - \paragraph{DevOps - Testing} - The following pie chart~\ref{fig:devops-testing} details the testing practices adopted, illustrating the commitment to software reliability and functionality. - \begin{figure}[H] + +\subsection{DevOps - Testing} + +The following pie chart~\ref{fig:devops-testing} details the testing practices adopted, illustrating the commitment to software reliability and functionality. + +\begin{figure}[H] \centering \begin{tikzpicture} -\pie[text=legend, color={red, orange, yellow, lime}, sum=auto]{8/Unit, 7/Verification, 3/Validation, 6/None} +\pie[text=legend, color={red, orange, yellow, lime, skyblue}, sum=auto]{8/Unit, 7/Verification, 3/Validation, 6/None, 1/Functional} \end{tikzpicture} \caption{Distribution of DevOps Testing} \label{fig:devops-testing} \end{figure} + + \input{software/arcane-framework/arcane-framework.tex} \input{software/cgal/cgal.tex} \input{software/composyx/composyx.tex} \input{software/feelpp/feelpp.tex} \input{software/freefempp/freefempp.tex} \input{software/hawen/hawen.tex} -\input{software/hpdomain-decomposition-methods/hpdomain-decomposition-methods.tex} +\input{software/hpddm/hpddm.tex} \input{software/mahyco/mahyco.tex} \input{software/manta/manta.tex} \input{software/mmg-parmmg/mmg-parmmg.tex} @@ -109,3 +174,4 @@ \chapter{Software} \input{software/scimba/scimba.tex} \input{software/trust-platform/trust-platform.tex} \input{software/zellij/zellij.tex} + diff --git a/exama-software.xlsx b/exama-software.xlsx index 624c4232caf01a588fbd1783f5c680d437ccadf8..7d46a003048bf260ef233e685f8dc6459728ee91 100644 GIT binary patch delta 109470 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 NNQ>~07SdP1{{Zta9~b}t delta 107331 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

uW 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 B(Cz>L diff --git a/gen.py b/gen.py index a45e9f6..ae5cafa 100644 --- a/gen.py +++ b/gen.py @@ -135,9 +135,10 @@ def generate_latex_table_simple(input_string): def normalize_archs(arch_string): # Define a dictionary to map various input forms to standardized forms arch_map = { - 'CPU': ['CPU'], - 'GPU': ['GPU'], - 'Hybrid': ['HYBRID'], + 'CPU Only': ['CPU ONLY'], + 'GPU Only': ['GPU ONLY'], + 'CPU or GPU': ['CPU OR GPU'], + 'CPU and GPU': ['CPU AND GPU'], 'Indirect': ['INDIRECT'], 'Not Yet Benchmarked': ['NOT YET'] } @@ -149,6 +150,7 @@ def normalize_archs(arch_string): # Normalize each architecture entry for arch in archs: found = False + print(f"arch: {arch}\n") # Check each category for a match for standard, variations in arch_map.items(): if arch in variations: @@ -317,6 +319,7 @@ def count_frequencies(df,column,debug=False): return Counter(items) archs_freq = count_frequencies(stats_software,'Benchmarked') +print(archs_freq) languages_freq = count_frequencies(stats_software,'Languages') parallelism_freq = count_frequencies(stats_software,'Parallelism') data_freq = count_frequencies(stats_software,'Data') @@ -350,7 +353,7 @@ def tikz_pie_chart(data, title, caption, label): chart += "\\end{figure}\n" return chart -arch_chart = tikz_pie_chart(archs_freq, "Architectures", caption="Distribution of hardware architectures", label="arch") +arch_chart = tikz_pie_chart(archs_freq, "Benchmarked Architectures", caption="Distribution of bemchmarked hardware architectures", label="arch") languages_chart = tikz_pie_chart(languages_freq, "Languages", caption="Distribution of programming languages", label="languages") parallelism_chart = tikz_pie_chart(parallelism_freq, "Parallelism", caption="Distribution of parallelism technologies", label="parallelism") data_chart = tikz_pie_chart(data_freq, "Data", caption="Distribution of data formats", label="data") @@ -519,7 +522,7 @@ def tikz_pie_chart(data, title, caption, label): # Load template from file template_desc = env.get_template('templates/desc-software.tex') template_wp = env.get_template('templates/wp-software.tex') - +template_soft = env.get_template('templates/software.tex') # for software in software_list: # rendered = template.render(software=software) # @@ -536,123 +539,61 @@ def tikz_pie_chart(data, title, caption, label): # Dictionary to store LaTeX content per category latex_content_per_category = {} -with open(f'chapters/software.tex', 'w') as software_index: - software_index.write('\clearpage\n\chapter{Software}\n') - software_index.write('\label{sec:software}\n') - software_index.write( - """ - This chapter presents the software developed within Exa-MA, focusing on features, mathematics, functionalities, publications, acknowledgments, and contact details. - - First, we present some general statistics about the software identified for Exa-MA that will present some benchmarking results. - Other software (new or existing) will be included in the future version of this document. - """) - - software_index.write( - """ - \paragraph{Architectures} - The following pie chart~\\ref{fig:arch} shows the distribution of hardware architectures used. - """) - software_index.write(arch_chart) - # Programming Languages Pie Chart - software_index.write( - """ - \paragraph{Programming Languages} - The following pie chart~\\ref{fig:languages} shows the distribution of programming languages used, highlighting the variety of computational solutions employed. - """) - software_index.write(languages_chart) - - # Parallelism Techniques Pie Chart - software_index.write( - """ - \paragraph{Parallelism Technology} - The pie chart~\\ref{fig:parallelism} below represents the parallelism techniques used in Exa-MA software selected for this document. - """) - software_index.write(parallelism_chart) - - # Data Formats Pie Chart - software_index.write( - """ - \paragraph{Data Formats} - The chart~\\ref{fig:data} shows the supported data formats, for flexibility and compatibility in data handling, supported by Exa-MA software selected for this document. - """) - software_index.write(data_chart) - - # DevOps - CI/CD Pie Chart - software_index.write( - """ - \paragraph{DevOps - CI/CD} - The pie chart~\\ref{fig:devops-cicd} below displays the support of continuous integration and deployment practices as well as continuous benchmarking, showcasing systematic software updates, quality maintenance and performance regression. - """) - software_index.write(devops_cicd_chart) - - # DevOps - Packaging Pie Chart - software_index.write( - """ - \paragraph{DevOps - Packaging} - The next chart~\\ref{fig:devops-packaging} shows different packaging methods used, which help in the distribution and management of software. - """) - software_index.write(devops_packaging_chart) - - # DevOps - Containers Pie Chart - software_index.write( - """ - \paragraph{DevOps - Containers} - The pie chart~\\ref{fig:devops-containers} displays the use of container technologies, which help encapsulate the software to run reliably in various environments. - """) - software_index.write(devops_containers_chart) - - # DevOps - Testing Pie Chart - software_index.write( - """ - \paragraph{DevOps - Testing} - The following pie chart~\\ref{fig:devops-testing} details the testing practices adopted, illustrating the commitment to software reliability and functionality. - """) - software_index.write(devops_testing_chart) - - # sort software_list with respect to name in lexical order - software_list = sorted(software_list, key=lambda x: x['name']) - for index,software in benchmarked_software.iterrows(): - software_json = json.loads(software.to_json()) - software_json['name'] = software['Software'] - for column_name in ['Emails','Consortium', 'Partner', 'License', 'Languages', 'Benchmarked', 'Parallelism', 'Data', 'DevOps', 'CI', 'Packaging', 'Containers', 'Tests', 'Resilience','Interfaces']: - software_json[column_name] = generate_latex_table_simple( - input_string=software[column_name]) - - desc = template_desc.render(software= software_json) - name = software['Software'] - prefix = software_prefix(software) - os.makedirs(f'software/{prefix}', exist_ok=True) - software_json['prefix'] = prefix - software_index.write('\input{software/'+f'{prefix}/{prefix}.tex'+'}\n') - - with open(f'software/{prefix}/{prefix}.tex', 'w') as f: - f.write(desc) - # Loop through all categories for the current software - for wpindex in range(1,7): - category = f'WP{wpindex}' - if is_benchmarked_in(category,software): - software_json = json.loads(software.to_json()) - software_json['name'] = software['Software'] - software_json['WP'] = generate_latex_table( - desc="Features", input_string=software[category]) - for column_name in ['Emails', 'Consortium', 'Partner', 'License', 'Languages', 'Benchmarked', 'Parallelism', 'Data', 'DevOps', 'CI', 'Packaging', 'Containers', 'Tests', 'Resilience', 'Interfaces']: - software_json[column_name] = generate_latex_table_simple( - input_string=software[column_name]) - software_json['Emails'] = generate_latex_table_simple( - input_string=software['Emails']) - wp = template_wp.render(software=software_json,wp=category) - # Ensure the category has an entry in the dictionary - if category not in latex_content_per_category: - latex_content_per_category[category] = [] - # Append the rendered content to the category - software_json['wp'] = wp - #print(software['rendered']) - latex_content_per_category[category].append(software_json) - os.makedirs(f'software/{prefix}/{category}', exist_ok=True) - with open(f'software/{prefix}/{category}/{category}.tex', 'w') as f: - f.write(wp) - print(f"- Generated LaTeX file for {name} in category {category}: software/{prefix}/{category}/{category}.tex") - +software_list = dict() +software_list['arch_chart'] = arch_chart +software_list['languages_chart'] = languages_chart +software_list['parallelism_chart'] = parallelism_chart +software_list['data_chart'] = data_chart +software_list['devops_cicd_chart'] = devops_cicd_chart +software_list['devops_packaging_chart'] = devops_packaging_chart +software_list['devops_containers_chart'] = devops_containers_chart +software_list['devops_testing_chart'] = devops_testing_chart +software_list["software"] = "" +# sort software_list with respect to name in lexical order +#software_list = sorted(software_list, key=lambda x: x['name']) +for index,software in benchmarked_software.iterrows(): + software_json = json.loads(software.to_json()) + software_json['name'] = software['Software'] + for column_name in ['Emails','Consortium', 'Partner', 'License', 'Languages', 'Benchmarked', 'Parallelism', 'Data', 'DevOps', 'CI', 'Packaging', 'Containers', 'Tests', 'Resilience','Interfaces']: + software_json[column_name] = generate_latex_table_simple( + input_string=software[column_name]) + desc = template_desc.render(software= software_json) + name = software['Software'] + prefix = software_prefix(software) + os.makedirs(f'software/{prefix}', exist_ok=True) + software_json['prefix'] = prefix + software_list["software"] += '\input{software/'+f'{prefix}/{prefix}.tex'+'}\n' + + with open(f'software/{prefix}/{prefix}.tex', 'w') as f: + f.write(desc) + # Loop through all categories for the current software + for wpindex in range(1,7): + category = f'WP{wpindex}' + if is_benchmarked_in(category,software): + software_json = json.loads(software.to_json()) + software_json['name'] = software['Software'] + software_json['WP'] = generate_latex_table( + desc="Features", input_string=software[category]) + for column_name in ['Emails', 'Consortium', 'Partner', 'License', 'Languages', 'Benchmarked', 'Parallelism', 'Data', 'DevOps', 'CI', 'Packaging', 'Containers', 'Tests', 'Resilience', 'Interfaces']: + software_json[column_name] = generate_latex_table_simple( + input_string=software[column_name]) + software_json['Emails'] = generate_latex_table_simple( + input_string=software['Emails']) + wp = template_wp.render(software=software_json,wp=category) + # Ensure the category has an entry in the dictionary + if category not in latex_content_per_category: + latex_content_per_category[category] = [] + # Append the rendered content to the category + software_json['wp'] = wp + #print(software['rendered']) + latex_content_per_category[category].append(software_json) + os.makedirs(f'software/{prefix}/{category}', exist_ok=True) + with open(f'software/{prefix}/{category}/{category}.tex', 'w') as f: + f.write(wp) + print(f"- Generated LaTeX file for {name} in category {category}: software/{prefix}/{category}/{category}.tex") + +with open('chapters/software.tex', 'w') as f: + f.write(template_soft.render(software=software_list)) # sort latex_content_per_category with respect to category in lexical order latex_content_per_category = dict(sorted(latex_content_per_category.items())) diff --git a/sections/benchmarking.tex b/sections/benchmarking.tex index 376c6a8..6312aa3 100644 --- a/sections/benchmarking.tex +++ b/sections/benchmarking.tex @@ -15,6 +15,32 @@ \section{Introduction} \section{Types of Benchmarking} \label{sec:methodology-types} +\subsection{Architectures} + +In the context of the D7.1 deliverable, it is essential to clarify the supported features across different hardware configurations, specifically CPUs, GPUs, and hybrid setups. +The following classification describes the architectural capabilities that will be benchmarked: + +\paragraph{CPU Only} +Software that will exclusively run on CPU architectures (e.g., CGAL, Freefem++, Feel++, Manta). Benchmarks for these codes will only target CPU architectures. + +\paragraph{GPU Only} +Software that will exclusively run on GPU architectures (e.g., Zellij). Benchmarks for these codes will focus solely on GPU architectures. + +\paragraph{CPU or GPU} +Software that can run on either CPU or GPU but not both simultaneously (e.g., PyTorch, SciMba). In this case, benchmarks will be performed on both CPU and GPU, but no single run will execute on both architectures simultaneously. Some benchmarks may be CPU-only, others GPU-only, depending on the software's capabilities. + +\paragraph{CPU and GPU} +Software that supports simultaneous execution on both CPU and GPU during a single simulation run (e.g., TRUST). Benchmarks in this category will involve executing components on both CPU and GPU, ensuring that at least one computational component runs on each architecture. + +\paragraph{Explanation of Benchmarking Criteria} +\begin{itemize} + \item \textbf{CPU Only:} If selected, benchmarks will be performed exclusively on CPU architectures. + \item \textbf{GPU Only:} If selected, benchmarks will focus exclusively on GPU architectures. + \item \textbf{CPU and GPU:} If selected, benchmarks will involve simultaneous execution on CPU and GPU within the same run. + \item \textbf{CPU or GPU:} If selected, benchmarks will involve execution on either CPU or GPU, but not simultaneously. Some benchmarks will target CPU, others GPU, depending on the computational components. +\end{itemize} + + \subsection{Pure Performance Benchmarks} \label{sec:methodology-types-performance} Description of benchmarks based on computational performance, including metrics such as execution time and FLOPS. diff --git a/software/arcane-framework/WP3/WP3.tex b/software/arcane-framework/WP3/WP3.tex index 190975a..7f4f3ee 100644 --- a/software/arcane-framework/WP3/WP3.tex +++ b/software/arcane-framework/WP3/WP3.tex @@ -20,8 +20,7 @@ \section{Software: Arcane Framework} lydie.grospellier@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/arcaneframework/framework}{https://github.com/arcaneframework/framework} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/arcane-framework/arcane-framework.tex b/software/arcane-framework/arcane-framework.tex index 6c6b470..d0875e9 100644 --- a/software/arcane-framework/arcane-framework.tex +++ b/software/arcane-framework/arcane-framework.tex @@ -22,8 +22,7 @@ \section{Software: Arcane Framework} lydie.grospellier@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/arcaneframework/framework}{https://github.com/arcaneframework/framework} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/cgal/WP1/WP1.tex b/software/cgal/WP1/WP1.tex index 31d4e9c..9914f7c 100644 --- a/software/cgal/WP1/WP1.tex +++ b/software/cgal/WP1/WP1.tex @@ -19,7 +19,7 @@ \section{Software: CGAL} pierre.alliez@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/CGAL}{https://github.com/CGAL} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/cgal/cgal.tex b/software/cgal/cgal.tex index 97bc4a1..f6e0c33 100644 --- a/software/cgal/cgal.tex +++ b/software/cgal/cgal.tex @@ -21,7 +21,7 @@ \section{Software: CGAL} pierre.alliez@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/CGAL}{https://github.com/CGAL} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/composyx/WP3/WP3.tex b/software/composyx/WP3/WP3.tex index be27fc9..5cf6c8d 100644 --- a/software/composyx/WP3/WP3.tex +++ b/software/composyx/WP3/WP3.tex @@ -19,8 +19,7 @@ \section{Software: Composyx} gilles.marait@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU and GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.inria.fr/composyx/composyx}{https://gitlab.inria.fr/composyx/composyx} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/composyx/composyx.tex b/software/composyx/composyx.tex index ec99b8f..febaf62 100644 --- a/software/composyx/composyx.tex +++ b/software/composyx/composyx.tex @@ -21,8 +21,7 @@ \section{Software: Composyx} gilles.marait@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU and GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.inria.fr/composyx/composyx}{https://gitlab.inria.fr/composyx/composyx} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/feelpp/WP1/WP1.tex b/software/feelpp/WP1/WP1.tex index 7421044..16ca660 100644 --- a/software/feelpp/WP1/WP1.tex +++ b/software/feelpp/WP1/WP1.tex @@ -22,7 +22,7 @@ \section{Software: Feel++} vincent.chabannes@cemosis.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/feelpp/feelpp}{https://github.com/feelpp/feelpp} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/feelpp/WP2/WP2.tex b/software/feelpp/WP2/WP2.tex index 6819af3..e01184f 100644 --- a/software/feelpp/WP2/WP2.tex +++ b/software/feelpp/WP2/WP2.tex @@ -22,7 +22,7 @@ \section{Software: Feel++} vincent.chabannes@cemosis.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/feelpp/feelpp}{https://github.com/feelpp/feelpp} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/feelpp/WP3/WP3.tex b/software/feelpp/WP3/WP3.tex index df1188c..90ac5c9 100644 --- a/software/feelpp/WP3/WP3.tex +++ b/software/feelpp/WP3/WP3.tex @@ -22,7 +22,7 @@ \section{Software: Feel++} vincent.chabannes@cemosis.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/feelpp/feelpp}{https://github.com/feelpp/feelpp} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/feelpp/WP4/WP4.tex b/software/feelpp/WP4/WP4.tex index 65d7e7d..91a3d0c 100644 --- a/software/feelpp/WP4/WP4.tex +++ b/software/feelpp/WP4/WP4.tex @@ -22,7 +22,7 @@ \section{Software: Feel++} vincent.chabannes@cemosis.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/feelpp/feelpp}{https://github.com/feelpp/feelpp} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/feelpp/WP5/WP5.tex b/software/feelpp/WP5/WP5.tex index db78357..ffa4c8f 100644 --- a/software/feelpp/WP5/WP5.tex +++ b/software/feelpp/WP5/WP5.tex @@ -22,7 +22,7 @@ \section{Software: Feel++} vincent.chabannes@cemosis.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/feelpp/feelpp}{https://github.com/feelpp/feelpp} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/feelpp/feelpp.tex b/software/feelpp/feelpp.tex index 085178c..913b69e 100644 --- a/software/feelpp/feelpp.tex +++ b/software/feelpp/feelpp.tex @@ -24,7 +24,7 @@ \section{Software: Feel++} vincent.chabannes@cemosis.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/feelpp/feelpp}{https://github.com/feelpp/feelpp} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/freefempp/WP1/WP1.tex b/software/freefempp/WP1/WP1.tex index cf2c0fc..3fc3c41 100644 --- a/software/freefempp/WP1/WP1.tex +++ b/software/freefempp/WP1/WP1.tex @@ -22,7 +22,7 @@ \section{Software: Freefem++} pierre.jolivet@sorbonne-universite.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/FreeFem/FreeFem-sources}{https://github.com/FreeFem/FreeFem-sources} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/freefempp/WP3/WP3.tex b/software/freefempp/WP3/WP3.tex index 967e5ce..dcaa4f7 100644 --- a/software/freefempp/WP3/WP3.tex +++ b/software/freefempp/WP3/WP3.tex @@ -22,7 +22,7 @@ \section{Software: Freefem++} pierre.jolivet@sorbonne-universite.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/FreeFem/FreeFem-sources}{https://github.com/FreeFem/FreeFem-sources} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/freefempp/WP5/WP5.tex b/software/freefempp/WP5/WP5.tex index 07ff2fd..e23ace4 100644 --- a/software/freefempp/WP5/WP5.tex +++ b/software/freefempp/WP5/WP5.tex @@ -22,7 +22,7 @@ \section{Software: Freefem++} pierre.jolivet@sorbonne-universite.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/FreeFem/FreeFem-sources}{https://github.com/FreeFem/FreeFem-sources} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/freefempp/freefempp.tex b/software/freefempp/freefempp.tex index 6c7c375..fb7bd25 100644 --- a/software/freefempp/freefempp.tex +++ b/software/freefempp/freefempp.tex @@ -24,7 +24,7 @@ \section{Software: Freefem++} pierre.jolivet@sorbonne-universite.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/FreeFem/FreeFem-sources}{https://github.com/FreeFem/FreeFem-sources} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/hawen/WP1/WP1.tex b/software/hawen/WP1/WP1.tex index 7ce591d..91319fa 100644 --- a/software/hawen/WP1/WP1.tex +++ b/software/hawen/WP1/WP1.tex @@ -19,7 +19,7 @@ \section{Software: Hawen} florian.faucher@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.com/ffaucher/hawen}{https://gitlab.com/ffaucher/hawen} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/hawen/WP3/WP3.tex b/software/hawen/WP3/WP3.tex index 9f8eb25..4894c0a 100644 --- a/software/hawen/WP3/WP3.tex +++ b/software/hawen/WP3/WP3.tex @@ -19,7 +19,7 @@ \section{Software: Hawen} florian.faucher@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.com/ffaucher/hawen}{https://gitlab.com/ffaucher/hawen} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/hawen/WP4/WP4.tex b/software/hawen/WP4/WP4.tex index 0dfb477..8b633c3 100644 --- a/software/hawen/WP4/WP4.tex +++ b/software/hawen/WP4/WP4.tex @@ -19,7 +19,7 @@ \section{Software: Hawen} florian.faucher@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.com/ffaucher/hawen}{https://gitlab.com/ffaucher/hawen} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/hawen/hawen.tex b/software/hawen/hawen.tex index cb2c630..050fde5 100644 --- a/software/hawen/hawen.tex +++ b/software/hawen/hawen.tex @@ -21,7 +21,7 @@ \section{Software: Hawen} florian.faucher@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.com/ffaucher/hawen}{https://gitlab.com/ffaucher/hawen} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/hpddm/WP3/WP3.tex b/software/hpddm/WP3/WP3.tex index 67f0177..74a48dc 100644 --- a/software/hpddm/WP3/WP3.tex +++ b/software/hpddm/WP3/WP3.tex @@ -1,5 +1,5 @@ -\section{Software: 14} -\label{sec:WP3:14:software} +\section{Software: HPDDM} +\label{sec:WP3:HPDDM:software} \begin{table}[h!] \centering @@ -9,26 +9,62 @@ \section{Software: 14} {\fontsize{9}{11}\selectfont \begin{tabular}{!{\color{numpexgray}\vrule}p{.4\textwidth}!{\color{numpexgray}\vrule}p{.6\textwidth}!{\color{numpexgray}\vrule}} \rowcolor{numpexgray}{\rule{0pt}{2.5ex}\color{white}\bf Field} & {\rule{0pt}{2.5ex}\color{white}\bf Details} \\ - - \rowcolor{white}\textbf{Contact Emails} & pierre@joliv.et \\ - \rowcolor{numpexlightergray}\textbf{Supported Architectures} & CPU \\ - \rowcolor{white}\textbf{Repository Link} & \href{https://github.com/hpddm/hpddm}{https://github.com/hpddm/hpddm} \\ - \rowcolor{numpexlightergray}\textbf{License} & OSS:: LGPL v* \\ + \rowcolor{white}\textbf{Consortium} & \begin{tabular}{l} +None\\ +\end{tabular} \\ + \rowcolor{numpexlightergray}\textbf{Exa-MA Partners} & \begin{tabular}{l} +Inria PARIS\\ +Sorbonne U\\ +\end{tabular} \\ + \rowcolor{white}\textbf{Contact Emails} & \begin{tabular}{l} +pierre@joliv.et\\ +\end{tabular} \\ + \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} +CPU or GPU\\ +\end{tabular} \\ + \rowcolor{white}\textbf{Repository} & \href{https://github.com/hpdomain decomposition methods/hpdomain decomposition methods}{https://github.com/hpdomain decomposition methods/hpdomain decomposition methods} \\ + \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} +OSS:: LGPL v*\\ +\end{tabular} \\ \bottomrule \end{tabular} }} - \caption{14 Information} + \caption{WP3: HPDDM Information} \end{table} \subsection{Software Overview} -\label{sec:WP3:14:summary} +\label{sec:WP3:HPDDM:summary} Provide a brief overview of the software with respect to WP3. -nan +\begin{table}[h!] + \centering + { + \setlength{\parindent}{0pt} + \def\arraystretch{1.25} + \arrayrulecolor{numpexgray} + { + \fontsize{9}{11}\selectfont + \begin{tabular}{!{\color{numpexgray}\vrule}p{.25\linewidth}!{\color{numpexgray}\vrule}p{.6885\linewidth}!{\color{numpexgray}\vrule}} + + \rowcolor{numpexgray}{\rule{0pt}{2.5ex}\color{white}\bf Features} & {\rule{0pt}{2.5ex}\color{white}\bf Short Description }\\ + +\rowcolor{white} domain decomposition methods & provide short description here \\ +\rowcolor{numpexlightergray} multi-precision & provide short description here \\ +\rowcolor{white} tensor calculus & provide short description here \\ +\rowcolor{numpexlightergray} "reuse of Krylov subspaces for multiple right-hand sides" & provide short description here \\ +\rowcolor{white} randomization & provide short description here \\ +\rowcolor{numpexlightergray} low-rank & provide short description here \\ +\rowcolor{white} interface & provide short description here \\ +\end{tabular} + } + } + \caption{WP3: HPDDM Features} +\end{table} + \subsection{Parallel Capabilities} -\label{sec:WP3:14:performances} +\label{sec:WP3:HPDDM:performances} \begin{itemize} @@ -40,7 +76,7 @@ \subsection{Parallel Capabilities} \end{itemize} \subsection{Initial Performance Metrics} -\label{sec:WP3:14:metrics} +\label{sec:WP3:HPDDM:metrics} In this section, provide a summary of the initial performance metrics of the software with respect to WP3. You can list one or more benchmarks and their associated results, the challenges , bottlenecks and the expectations for future versions of the software. @@ -56,6 +92,6 @@ \subsubsection{Benchmark \#1} \end{itemize} \subsection{12 months roadmap} -\label{sec:WP3:14:roadmap} +\label{sec:WP3:HPDDM:roadmap} Describe the planned improvements for the software in the context of WP3 and Exa-MA for the year to come that will be adressed in the next version of this deliverable. \ No newline at end of file diff --git a/software/hpddm/hpddm.tex b/software/hpddm/hpddm.tex index 3ffeabd..4b52c0f 100644 --- a/software/hpddm/hpddm.tex +++ b/software/hpddm/hpddm.tex @@ -11,11 +11,23 @@ \section{Software: HPDDM} {\fontsize{9}{11}\selectfont \begin{tabular}{!{\color{numpexgray}\vrule}p{.4\textwidth}!{\color{numpexgray}\vrule}p{.6\textwidth}!{\color{numpexgray}\vrule}} \rowcolor{numpexgray}{\rule{0pt}{2.5ex}\color{white}\bf Field} & {\rule{0pt}{2.5ex}\color{white}\bf Details} \\ - - \rowcolor{white}\textbf{Contact Emails} & pierre@joliv.et \\ - \rowcolor{numpexlightergray}\textbf{Supported Architectures} & CPU \\ - \rowcolor{white}\textbf{Repository Link} & \href{https://github.com/hpddm/hpddm}{https://github.com/hpddm/hpddm} \\ - \rowcolor{numpexlightergray}\textbf{License} & OSS:: LGPL v* \\ + \rowcolor{white}\textbf{Consortium} & \begin{tabular}{l} +None\\ +\end{tabular} \\ + \rowcolor{numpexlightergray}\textbf{Exa-MA Partners} & \begin{tabular}{l} +Inria PARIS\\ +Sorbonne U\\ +\end{tabular} \\ + \rowcolor{white}\textbf{Contact Emails} & \begin{tabular}{l} +pierre@joliv.et\\ +\end{tabular} \\ + \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} +CPU or GPU\\ +\end{tabular} \\ + \rowcolor{white}\textbf{Repository} & \href{https://github.com/hpdomain decomposition methods/hpdomain decomposition methods}{https://github.com/hpdomain decomposition methods/hpdomain decomposition methods} \\ + \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} +OSS:: LGPL v*\\ +\end{tabular} \\ \bottomrule \end{tabular} }} @@ -47,18 +59,43 @@ \subsection{Programming and Computational Environment} {\fontsize{9}{11}\selectfont \begin{tabular}{lp{.3\textwidth}p{.5\textwidth}} \rowcolor{numpexgray}{\rule{0pt}{2.5ex}\color{white}\bf Category} & {\rule{0pt}{2.5ex}\color{white}\bf Details} & {\rule{0pt}{2.5ex}\color{white}\bf Description}\\ - \rowcolor{white}Languages & C, -C++, -Fortran, -Python & Programming languages and language standards supported by the software \\ - \rowcolor{numpexlightergray}Parallelism & MPI, -Multithread - OpenMP & Parallel computing methods and frameworks utilized by the software.\\ - \rowcolor{white}Data Formats & in-house format & Data formats that the software can handle or produce.\\ - \rowcolor{numpexlightergray}Resilience & None & Fault tolerance and recovery mechanisms employed by the software.\\ - \rowcolor{white}DevOps & Continuous Integration & Outlines the development and operational practices including continuous integration, containerization, and testing methodologies. \\ - \rowcolor{numpexlightergray}Packaging & None & Software packaging and distribution.\\ - \rowcolor{white}Testing & Unit, Verification & Testing methodologies employed to ensure software quality and correctness.\\ - \rowcolor{numpexlightergray}Containerization & None & Container technologies used to package and deploy the software.\\ + \rowcolor{white}Languages & \begin{tabular}{l} +C\\ +C++\\ +Fortran\\ +Python\\ +\end{tabular} & Programming languages and language standards supported by the software \\ + \rowcolor{numpexlightergray}Parallelism & \begin{tabular}{l} +GPU\\ +MPI\\ +Multithread\\ +\end{tabular} & Parallel computing methods and frameworks utilized by the software.\\ + \rowcolor{white}Data Formats & \begin{tabular}{l} +in-house format\\ +\end{tabular} & Data formats that the software can handle or produce.\\ + \rowcolor{numpexlightergray}Resilience & \begin{tabular}{l} +None\\ +\end{tabular} & Fault tolerance and recovery mechanisms employed by the software.\\ + \rowcolor{white}DevOps & \begin{tabular}{l} +Continuous Integration\\ +\end{tabular} & Outlines the development and operational practices including continuous integration, containerization, and testing methodologies. \\ + \rowcolor{numpexlightergray}Packaging & \begin{tabular}{l} +None\\ +\end{tabular} & Software packaging and distribution.\\ + \rowcolor{white}Testing & \begin{tabular}{l} +Unit\\ +Verification\\ +\end{tabular} & Testing methodologies employed to ensure software quality and correctness.\\ + \rowcolor{numpexlightergray}Containerization & \begin{tabular}{l} +None\\ +\end{tabular} & Container technologies used to package and deploy the software.\\ + \rowcolor{white}Interfaces & \begin{tabular}{l} +Feel++\\ +Freefem++\\ +MUMPS\\ +PETSc\\ +PaStIX\\ +\end{tabular} & List of software HPDDM has interfaces with.\\ \bottomrule \end{tabular} }} diff --git a/software/mahyco/mahyco.tex b/software/mahyco/mahyco.tex index 6993507..e5d5df9 100644 --- a/software/mahyco/mahyco.tex +++ b/software/mahyco/mahyco.tex @@ -21,8 +21,7 @@ \section{Software: MaHyCo} jean-philippe.perlat@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/cea-hpc/MaHyCo}{https://github.com/cea-hpc/MaHyCo} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/manta/WP3/WP3.tex b/software/manta/WP3/WP3.tex index 4cbcb67..4f43a9a 100644 --- a/software/manta/WP3/WP3.tex +++ b/software/manta/WP3/WP3.tex @@ -19,7 +19,7 @@ \section{Software: MANTA} olivier.jamond@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{None}{None} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/manta/manta.tex b/software/manta/manta.tex index d8df162..9233eff 100644 --- a/software/manta/manta.tex +++ b/software/manta/manta.tex @@ -21,7 +21,7 @@ \section{Software: MANTA} olivier.jamond@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{None}{None} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/mmg-parmmg/WP1/WP1.tex b/software/mmg-parmmg/WP1/WP1.tex index 99059b6..5c75645 100644 --- a/software/mmg-parmmg/WP1/WP1.tex +++ b/software/mmg-parmmg/WP1/WP1.tex @@ -21,7 +21,7 @@ \section{Software: MMG/ParMMG} None\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{None}{None} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/mmg-parmmg/mmg-parmmg.tex b/software/mmg-parmmg/mmg-parmmg.tex index 93b09eb..9d9850c 100644 --- a/software/mmg-parmmg/mmg-parmmg.tex +++ b/software/mmg-parmmg/mmg-parmmg.tex @@ -23,7 +23,7 @@ \section{Software: MMG/ParMMG} None\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{None}{None} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/pbb/WP5/WP5.tex b/software/pbb/WP5/WP5.tex index f83c911..ae8e43e 100644 --- a/software/pbb/WP5/WP5.tex +++ b/software/pbb/WP5/WP5.tex @@ -19,8 +19,7 @@ \section{Software: pBB} nouredine.melab@univ-lille.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.inria.fr/jgmys/permutationbb}{https://gitlab.inria.fr/jgmys/permutationbb} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/pbb/pbb.tex b/software/pbb/pbb.tex index 9d0511b..d352357 100644 --- a/software/pbb/pbb.tex +++ b/software/pbb/pbb.tex @@ -21,8 +21,7 @@ \section{Software: pBB} nouredine.melab@univ-lille.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.inria.fr/jgmys/permutationbb}{https://gitlab.inria.fr/jgmys/permutationbb} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/samurai/WP1/WP1.tex b/software/samurai/WP1/WP1.tex index 14f181c..15b2a7f 100644 --- a/software/samurai/WP1/WP1.tex +++ b/software/samurai/WP1/WP1.tex @@ -20,7 +20,7 @@ \section{Software: Samurai} Loic Gouarin\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/hpc-maths/samurai}{https://github.com/hpc-maths/samurai} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/samurai/samurai.tex b/software/samurai/samurai.tex index 41d42a9..5539f0e 100644 --- a/software/samurai/samurai.tex +++ b/software/samurai/samurai.tex @@ -22,7 +22,7 @@ \section{Software: Samurai} Loic Gouarin\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ +CPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/hpc-maths/samurai}{https://github.com/hpc-maths/samurai} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} @@ -75,12 +75,14 @@ \subsection{Programming and Computational Environment} None\\ \end{tabular} & Fault tolerance and recovery mechanisms employed by the software.\\ \rowcolor{white}DevOps & \begin{tabular}{l} +Continuous Delivery\\ Continuous Integration\\ \end{tabular} & Outlines the development and operational practices including continuous integration, containerization, and testing methodologies. \\ \rowcolor{numpexlightergray}Packaging & \begin{tabular}{l} Other\\ \end{tabular} & Software packaging and distribution.\\ \rowcolor{white}Testing & \begin{tabular}{l} +Functional\\ Unit\\ Validation\\ Verification\\ diff --git a/software/scimba/WP2/WP2.tex b/software/scimba/WP2/WP2.tex index f02b93d..cf492bf 100644 --- a/software/scimba/WP2/WP2.tex +++ b/software/scimba/WP2/WP2.tex @@ -20,7 +20,7 @@ \section{Software: Scimba} emmanuel.franck@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.inria.fr/scimba/scimba}{https://gitlab.inria.fr/scimba/scimba} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/scimba/scimba.tex b/software/scimba/scimba.tex index fa413e8..99d309f 100644 --- a/software/scimba/scimba.tex +++ b/software/scimba/scimba.tex @@ -22,7 +22,7 @@ \section{Software: Scimba} emmanuel.franck@inria.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -GPU\\ +CPU or GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://gitlab.inria.fr/scimba/scimba}{https://gitlab.inria.fr/scimba/scimba} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/trust-platform/WP3/WP3.tex b/software/trust-platform/WP3/WP3.tex index c566a14..867130d 100644 --- a/software/trust-platform/WP3/WP3.tex +++ b/software/trust-platform/WP3/WP3.tex @@ -19,9 +19,7 @@ \section{Software: TRUST Platform} pierre.ledac@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ -Hybrid\\ +CPU and GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/cea-trust-platform}{https://github.com/cea-trust-platform} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} @@ -52,6 +50,8 @@ \subsection{Software Overview} \rowcolor{numpexgray}{\rule{0pt}{2.5ex}\color{white}\bf Features} & {\rule{0pt}{2.5ex}\color{white}\bf Short Description }\\ \rowcolor{white} multiphysics coupling & provide short description here \\ +\rowcolor{numpexlightergray} krylov solver & provide short description here \\ +\rowcolor{white} direct solver & provide short description here \\ \end{tabular} } } diff --git a/software/trust-platform/trust-platform.tex b/software/trust-platform/trust-platform.tex index 4f3711b..3de8f24 100644 --- a/software/trust-platform/trust-platform.tex +++ b/software/trust-platform/trust-platform.tex @@ -21,9 +21,7 @@ \section{Software: TRUST Platform} pierre.ledac@cea.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -CPU\\ -GPU\\ -Hybrid\\ +CPU and GPU\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/cea-trust-platform}{https://github.com/cea-trust-platform} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/zellij/WP5/WP5.tex b/software/zellij/WP5/WP5.tex index f9cb3f4..e861dac 100644 --- a/software/zellij/WP5/WP5.tex +++ b/software/zellij/WP5/WP5.tex @@ -19,7 +19,7 @@ \section{Software: Zellij} el-ghazali.talbi@univ-lille.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -GPU\\ +GPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/ThomasFirmin/zellij}{https://github.com/ThomasFirmin/zellij} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/software/zellij/zellij.tex b/software/zellij/zellij.tex index 91f6828..5daff37 100644 --- a/software/zellij/zellij.tex +++ b/software/zellij/zellij.tex @@ -21,7 +21,7 @@ \section{Software: Zellij} el-ghazali.talbi@univ-lille.fr\\ \end{tabular} \\ \rowcolor{numpexlightergray}\textbf{Supported Architectures} & \begin{tabular}{l} -GPU\\ +GPU Only\\ \end{tabular} \\ \rowcolor{white}\textbf{Repository} & \href{https://github.com/ThomasFirmin/zellij}{https://github.com/ThomasFirmin/zellij} \\ \rowcolor{numpexlightergray}\textbf{License} & \begin{tabular}{l} diff --git a/templates/software.tex b/templates/software.tex new file mode 100644 index 0000000..5d1526f --- /dev/null +++ b/templates/software.tex @@ -0,0 +1,75 @@ +\clearpage +\chapter{Software} +\label{sec:software} + +This chapter presents the software developed within Exa-MA, focusing on features, mathematics, functionalities, publications, acknowledgments, and contact details. + +First, we present some general statistics about the software identified for Exa-MA that will present some benchmarking results. +Other software (new or existing) will be included in the future versions of this document. + + +\section{General Statistics} +\label{sec:software:statistics} + +In this section, we provide an overview of the key characteristics and technological choices for the software developed and benchmarked within Exa-MA. +These statistics offer insights into the diversity of hardware architectures, programming languages, and parallel computing technologies utilized across the different software packages. + +The aim is to highlight the widespread usage of various technologies, demonstrating both the flexibility and the breadth of approaches within the project. +Additionally, the DevOps practices employed, such as continuous integration, testing, and deployment, are presented to underscore the commitment to ensuring quality, reliability, and maintainability of the software developed under Exa-MA. + +The following subsections provide detailed breakdowns of the different aspects of the software involved in the project, from supported architectures and programming languages to specific parallelism technologies, data formats, and DevOps strategies. +It helps to assess the readiness of the software for large-scale simulations and benchmarks in exascale computing environments. + + +\subsection{Architectures} + +The following pie chart~\ref{fig:arch} shows the distribution of hardware architectures used for the benchmarks. + +\VAR{software.arch_chart} + +\subsection{Programming Languages} + +The following pie chart~\ref{fig:languages} shows the distribution of programming languages used, highlighting the variety of computational solutions employed. + +\VAR{software.languages_chart} + +\subsection{Parallelism Technology} + + +The pie chart~\ref{fig:parallelism} below represents the parallelism techniques used in Exa-MA software selected for this document. + +\VAR{software.parallelism_chart} + + +\subsection{Data Formats} + +The chart~\ref{fig:data} shows the supported data formats, for flexibility and compatibility in data handling, supported by Exa-MA software selected for this document. + +\VAR{software.data_chart} + +\subsection{DevOps - CI/CD} + +The pie chart~\ref{fig:devops-cicd} below displays the support of continuous integration and deployment practices as well as continuous benchmarking, showcasing systematic software updates, quality maintenance and performance regression. + +\VAR{software.devops_cicd_chart} + +\subsection{DevOps - Packaging} + +The next chart~\ref{fig:devops-packaging} shows different packaging methods used, which help in the distribution and management of software. + +\VAR{software.devops_packaging_chart} + +\subsection{DevOps - Containers} + +The pie chart~\ref{fig:devops-containers} displays the use of container technologies, which help encapsulate the software to run reliably in various environments. + +\VAR{software.devops_containers_chart} + +\subsection{DevOps - Testing} + +The following pie chart~\ref{fig:devops-testing} details the testing practices adopted, illustrating the commitment to software reliability and functionality. + +\VAR{software.devops_testing_chart} + +\VAR{software.software} +