diff --git a/Dockerfile.must b/Dockerfile.must index 0ee258b500b5d7ed3d8c074d86fa1991c14b1c09..9e5891957506ba873e9bbd1a1bf1f51b19d08812 100644 --- a/Dockerfile.must +++ b/Dockerfile.must @@ -30,7 +30,7 @@ RUN wget https://hpc.rwth-aachen.de/must/files/MUST-v1.9.2.tar.gz RUN tar xfz MUST-*.tar.gz RUN mkdir -p /tmp/build-must/build WORKDIR /tmp/build-must/build -RUN CC=clang CXX=clang++ cmake ../MUST-v1.9.2 -DCMAKE_INSTALL_PREFIX=/MBI-builds/MUST192 -DCMAKE_BUILD_TYPE=Release -DENABLE_FORTRAN=OFF -DENABLE_TYPEART=On && \ +RUN CC=clang CXX=clang++ cmake ../MUST-v1.9.2 -DCMAKE_INSTALL_PREFIX=/MBB-builds/MUST192 -DCMAKE_BUILD_TYPE=Release -DENABLE_FORTRAN=OFF -DENABLE_TYPEART=On && \ make -j$(nproc) install VERBOSE=1 && \ make -j$(nproc) install-prebuilds VERBOSE=1 && \ rm -rf /tmp/build-must diff --git a/Dockerfile.parcoach b/Dockerfile.parcoach index 56a7c27acbdb5513ec5bc7f6d1787fc88a88eed1..ba09f2e167bef15baa4ebcf97644d45e4eaff42b 100644 --- a/Dockerfile.parcoach +++ b/Dockerfile.parcoach @@ -23,8 +23,6 @@ RUN apt-get -y install wget cmake git clang-15 clang++-15 clang-format openmpi- #/MBI/MBI.py -c build -x parcoach && \ apt-get clean -y - #apt-get -y remove cmake git&& \ - #apt-get autoremove -y && apt-get clean -y && rm -rf /tmp/* RUN mkdir /tmp/build-parcoach WORKDIR /tmp/build-parcoach diff --git a/MBI.py b/MBI.py index a400767138b27621c80fcd7c59584850c8cc0c26..df907a7ec50426e9b03726279019f728980833bd 100755 --- a/MBI.py +++ b/MBI.py @@ -39,7 +39,7 @@ try: plots_loaded = True except ImportError: - print("[MBI] Warning: ImportError for the plots module.") + print("[MBB] Warning: ImportError for the plots module.") import tools.parcoach import tools.simgrid @@ -57,7 +57,7 @@ try: itac_loaded = True except ImportError: print( - "[MBI] Warning: ITAC module cannot be loaded because of an ImportError (that's OK if you did not plan to use it).") + "[MBB] Warning: ITAC module cannot be loaded because of an ImportError (that's OK if you did not plan to use it).") import tools.civl import tools.aislinn import tools.mpi_checker @@ -295,12 +295,12 @@ iframe { </script> <body> <iframe width="100%" height="45%" src="summary.html"></iframe> -<iframe width="100%" height="55%" name="MBI_details"></iframe> +<iframe width="100%" height="55%" name="MBB_details"></iframe> </body></html> """) with open(f"{rootdir}/summary.html", "w") as outHTML: - outHTML.write(f"<html><head><title>MBI outcomes for all tests</title></head>\n") + outHTML.write(f"<html><head><title>MBB outcomes for all tests</title></head>\n") outHTML.write(""" <style> .tooltip { @@ -393,7 +393,7 @@ iframe { expected = test['expect'] outHTML.write( - f"<td><a href='{test['filename']}' target='MBI_details'>{binary}</a> <a href='{test['filename']}'><img title='Download source' src='img/html.svg' height='24' /></a>") + f"<td><a href='{test['filename']}' target='MBB_details'>{binary}</a> <a href='{test['filename']}'><img title='Download source' src='img/html.svg' height='24' /></a>") if ID != 0: outHTML.write(f' (test {ID + 1}) ') outHTML.write("</td>") @@ -405,7 +405,7 @@ iframe { results[toolname][res_category].append(f"{test_id} expected {test['detail']}, outcome: {diagnostic}") outHTML.write( - f"<td align='center'><a href='{args.logs_dir}/{toolname}/{test_id}.txt' target='MBI_details'><img title='{displayed_name[toolname]} {diagnostic} (returned {outcome})' src='img/{res_category}.svg' width='24' /></a> ({outcome})") + f"<td align='center'><a href='{args.logs_dir}/{toolname}/{test_id}.txt' target='MBB_details'><img title='{displayed_name[toolname]} {diagnostic} (returned {outcome})' src='img/{res_category}.svg' width='24' /></a> ({outcome})") extra = None report = [] @@ -422,7 +422,7 @@ iframe { if extra is not None: outHTML.write( - f" <a href='{extra}' target='MBI_details'><img title='more info' src='img/html.svg' height='24' /></a>") + f" <a href='{extra}' target='MBB_details'><img title='more info' src='img/html.svg' height='24' /></a>") outHTML.write("</td>") if res_category != 'timeout' and elapsed is not None: @@ -1980,7 +1980,7 @@ elif args.c == 'html': cmd_html(rootdir, toolnames=toolnames) elif args.c == 'plots': if not plots_loaded: - print("[MBI] Error: Dependancies ('numpy' or 'matplotlib') are not available!") + print("[MBB] Error: Dependancies ('numpy' or 'matplotlib') are not available!") exit(-1) extract_all_todo_from_logdir(args.x, args.logs_dir) if args.x == 'mpirun': diff --git a/README.md b/README.md index 004f7b4eac2438e6e49366950829965beef0923c..6932ed6e215c1ff89f9dd344cbce98b94c6ee4d8 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,22 @@ ``` docker build -f Dockerfile.<parcoach|itac|must> -t mbb:latest . -docker run -v `pwd`:/MBI -it mbb:latest bash +docker run -v `pwd`:/MBB -it mbb:latest bash ``` ## Generate the codes ``` -cd /MBI +cd /MBB tar -xf real_world_data.csv.tar.gz -cd /MBI/scripts +cd /MBB/scripts PYTHONPATH=../ python3 main.py --generator_dir errors --level 2 --real_world_data ../output.csv ``` ## Run a tool on the codes ``` -cd /MBI +cd /MBB python3 MBI.py -c run -x <parcoach|itac|must> -t <timeout in seconds> -l <logs output dir> -n <number of workers> ``` @@ -30,7 +30,7 @@ python3 MBI.py -c run -x parcoach -t 180 -l mylogdir -n 4 ## To get stats on a tool ``` -cd /MBI +cd /MBB python3 MBI.py -x <parcoach|itac|must> -l <logs output dir> -c csv ``` diff --git a/scripts/tools/must.py b/scripts/tools/must.py index 8346e2ee76ec6ffd1ec3e25e5c88da7acdd63a6c..e7a9c50c7672611906f645262de2e16a229c9a57 100644 --- a/scripts/tools/must.py +++ b/scripts/tools/must.py @@ -26,14 +26,14 @@ class V18(AbstractTool): AbstractTool.ensure_image(self, "-x must") def build(self, rootdir, cached=True): - if cached and os.path.exists("/MBI-builds/MUST192/bin/mustrun"): + if cached and os.path.exists("/MBB-builds/MUST192/bin/mustrun"): os.environ['PATH'] = os.environ['PATH'] + \ - ":/MBI-builds/MUST192/bin/" + ":/MBB-builds/MUST192/bin/" os.environ['OMPI_CC'] = "clang-14" return # MUST sometimes fails when reinstalling over the same dir - subprocess.run(f"rm -rf /MBI-builds/MUST192", shell=True, check=True) + subprocess.run(f"rm -rf /MBB-builds/MUST192", shell=True, check=True) # Build it here = os.getcwd() # Save where we were @@ -47,8 +47,8 @@ class V18(AbstractTool): shell=True, check=True) os.chdir("/tmp/build-must/build") - subprocess.run(f"CC=$(which gcc) CXX=$(which gcc++) cmake ../MUST-v1.9.2 -DCMAKE_INSTALL_PREFIX=/MBI-builds/MUST192 -DCMAKE_BUILD_TYPE=Release -DENABLE_FORTRAN=OFF -DENABLE_TYPEART=On", shell=True, check=True) - # subprocess.run(f"CC=$(which clang) CXX=$(which clang++) cmake ../MUST-v1.9.2 -DCMAKE_INSTALL_PREFIX=/MBI-builds/MUST192 -DCMAKE_BUILD_TYPE=Release -DENABLE_FORTRAN=OFF -DENABLE_TYPEART=On", shell=True, check=True) + subprocess.run(f"CC=$(which gcc) CXX=$(which gcc++) cmake ../MUST-v1.9.2 -DCMAKE_INSTALL_PREFIX=/MBB-builds/MUST192 -DCMAKE_BUILD_TYPE=Release -DENABLE_FORTRAN=OFF -DENABLE_TYPEART=On", shell=True, check=True) + # subprocess.run(f"CC=$(which clang) CXX=$(which clang++) cmake ../MUST-v1.9.2 -DCMAKE_INSTALL_PREFIX=/MBB-builds/MUST192 -DCMAKE_BUILD_TYPE=Release -DENABLE_FORTRAN=OFF -DENABLE_TYPEART=On", shell=True, check=True) subprocess.run(f"make -j$(nproc) install VERBOSE=1", shell=True, check=True) subprocess.run( @@ -59,7 +59,7 @@ class V18(AbstractTool): os.chdir(here) def setup(self): - os.environ['PATH'] = os.environ['PATH'] + ":/MBI-builds/MUST192/bin/" + os.environ['PATH'] = os.environ['PATH'] + ":/MBB-builds/MUST192/bin/" os.environ['OMPI_ALLOW_RUN_AS_ROOT'] = "1" os.environ['OMPI_ALLOW_RUN_AS_ROOT_CONFIRM'] = "1" @@ -74,7 +74,7 @@ class V18(AbstractTool): with tempfile.TemporaryDirectory() as tmpdirname: ran = self.run_cmd( - buildcmd=f"typeart-mpicc -g -fPIC {filename} -o {tmpdirname}/{binary} -L/MBI-builds/MUST192/lib -lpnmpi", + buildcmd=f"typeart-mpicc -g -fPIC {filename} -o {tmpdirname}/{binary} -L/MBB-builds/MUST192/lib -lpnmpi", execcmd=execcmd, cachefile=cachefile, filename=filename, @@ -313,4 +313,4 @@ class V18(AbstractTool): output["status"] = "successful" output["messages"] = parsed_reports - return output \ No newline at end of file + return output diff --git a/scripts/tools/parcoach.py b/scripts/tools/parcoach.py index 8d25353d21742b8feec622c967f5949b3f60670f..0a1b1ec1ca20c4945adf6efd97c4d187d80a4194 100644 --- a/scripts/tools/parcoach.py +++ b/scripts/tools/parcoach.py @@ -99,13 +99,6 @@ class Tool(AbstractTool): with open(f'{cachefile}.txt' if os.path.exists(f'{cachefile}.txt') else f'{logs_dir}/parcoach/{cachefile}.txt', 'r') as infile: output = infile.read() - #if re.search('MBI_MSG_RACE', output): - # return 'MBI_MSG_RACE' - #if re.search('Local concurrency', output): - # return 'local concurrency' - #if re.search('warning', output): - # return 'deadlock' - if re.search('Compilation of .*? raised an error \(retcode: ', output): output = {}