From 5d3b9eed7491a471e87c3fca87025ef4c52b0460 Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Mon, 28 Nov 2022 22:41:56 -0800 Subject: [PATCH 1/7] include QMCPACK --- .gitmodules | 3 +++ CMakeLists.txt | 18 ++++++++++++++ qmcpack | 1 + src/h5bench.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 160000 qmcpack diff --git a/.gitmodules b/.gitmodules index 3ac7ac39..73945f35 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,3 +9,6 @@ [submodule "e3sm"] path = e3sm url = https://github.com/Parallel-NetCDF/E3SM-IO +[submodule "qmcpack"] + path = qmcpack + url = https://github.com/QMCPACK/qmcpack diff --git a/CMakeLists.txt b/CMakeLists.txt index f7e2fbc0..6f4d7b29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ option(H5BENCH_EXERCISER "Enable Exerciser benchmark" OFF) option(H5BENCH_AMREX "Enable AMReX benchmark" OFF) option(H5BENCH_OPENPMD "Enable OpenPMD benchmark" OFF) option(H5BENCH_E3SM "Enable E3SM benchmark" OFF) +option(H5BENCH_QMCPACK "Enable QMCPACK benchmark" OFF) message(STATUS "h5bench baseline: ON") @@ -39,6 +40,7 @@ if(H5BENCH_ALL) set(H5BENCH_AMREX ON) set(H5BENCH_OPENPMD ON) set(H5BENCH_E3SM ON) + set(H5BENCH_QMCPACK ON) endif() message(STATUS "h5bench METADATA: ${H5BENCH_METADATA}") @@ -46,6 +48,7 @@ message(STATUS "h5bench EXERCISER: ${H5BENCH_EXERCISER}") message(STATUS "h5bench AMREX: ${H5BENCH_AMREX}") message(STATUS "h5bench OPENPMD: ${H5BENCH_OPENPMD}") message(STATUS "h5bench E3SM: ${H5BENCH_E3SM}") +message(STATUS "h5bench QMCPACK: ${H5BENCH_QMCPACK}") # HDF5 Dependency ############################################################# # @@ -258,6 +261,21 @@ configure_file(${CMAKE_SOURCE_DIR}/src/h5bench.py ${CMAKE_BINARY_DIR}/h5bench CO configure_file(${CMAKE_SOURCE_DIR}/src/h5bench_version.py ${CMAKE_BINARY_DIR}/h5bench_version.py COPYONLY) configure_file(${CMAKE_SOURCE_DIR}/src/h5bench_configuration.py.in ${CMAKE_BINARY_DIR}/h5bench_configuration.py) +# QMCPACK ##################################################################### +# +# https://github.com/QMCPACK/qmcpack + +if(H5BENCH_QMCPACK) + set(ENV{HDF5_ROOT} ${HDF5_HOME}) + set(QMC_BUILD_SANDBOX_ONLY ON) + + add_subdirectory(qmcpack) + + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/qmcpack/bin/restart ${CMAKE_BINARY_DIR}/h5bench_qmcpack + ) +endif() + # Install binaries ############################################################ install( diff --git a/qmcpack b/qmcpack new file mode 160000 index 00000000..5a317ffe --- /dev/null +++ b/qmcpack @@ -0,0 +1 @@ +Subproject commit 5a317ffed3f5ff47149691a277882a903d1f44cc diff --git a/src/h5bench.py b/src/h5bench.py index 38f35666..ddd3dce3 100755 --- a/src/h5bench.py +++ b/src/h5bench.py @@ -32,6 +32,7 @@ class H5bench: H5BENCH_OPENPMD_WRITE = 'h5bench_openpmd_write' H5BENCH_OPENPMD_READ = 'h5bench_openpmd_read' H5BENCH_E3SM = 'h5bench_e3sm' + H5BENCH_QMCPACK = 'h5bench_qmcpack' def __init__(self, setup, prefix=None, debug=None, abort=None, validate=None, filter=None): """Initialize the suite.""" @@ -222,6 +223,8 @@ def run(self): self.run_openpmd(id, benchmark) elif name == 'e3sm': self.run_e3sm(id, benchmark) + elif name == 'qmcpack': + self.run_qmcpack(id, benchmark) else: self.logger.critical('{} - Unsupported benchmark/kernel') @@ -841,6 +844,70 @@ def run_e3sm(self, id, setup): except Exception as e: self.logger.error('Unable to run the benchmark: %s', e) + def run_qmcpack(self, id, setup): + """Run the QMCPACK benchmark.""" + if not self.is_available(self.H5BENCH_QMCPACK): + self.logger.critical('{} is not available'.format(self.H5BENCH_QMCPACK)) + + sys.exit(os.EX_UNAVAILABLE) + + try: + start = time.time() + + configuration = setup['configuration'] + + parameters = [] + + # Create the configuration parameter list + for key in configuration: + if key not in ['d'] and configuration[key]: + parameters.append('-{} {} '.format(key, configuration[key])) + + # Waiting for https://github.com/QMCPACK/qmcpack/pull/4343 to be merged + # parameters.append('-d {}/{} '.format(self.directory, id)) + + if self.prefix: + benchmark_path = self.prefix + '/' + self.H5BENCH_QMCPACK + else: + if os.path.isfile(h5bench_configuration.__install__ + '/' + self.H5BENCH_QMCPACK): + benchmark_path = h5bench_configuration.__install__ + '/' + self.H5BENCH_QMCPACK + else: + benchmark_path = self.H5BENCH_QMCPACK + + command = '{} {} {}'.format( + self.mpi, + benchmark_path, + ' '.join(parameters) + ) + + self.logger.info(command) + + # Make sure the command line is in the correct format + arguments = shlex.split(command) + + stdout_file_name = '{}/{}/stdout'.format(self.directory, id) + stderr_file_name = '{}/{}/stderr'.format(self.directory, id) + + with open(stdout_file_name, mode='w') as stdout_file, open(stderr_file_name, mode='w') as stderr_file: + s = subprocess.Popen(arguments, stdout=stdout_file, stderr=stderr_file, env=self.vol_environment) + sOutput, sError = s.communicate() + + if s.returncode == 0 and not self.check_for_hdf5_error(stderr_file_name): + self.logger.info('SUCCESS (all output files are located at %s/%s)', self.directory, id) + else: + self.logger.error('Return: %s (check %s for detailed log)', s.returncode, stderr_file_name) + + if self.abort: + self.logger.critical('h5bench execution aborted upon first error') + + sys.exit(os.EX_SOFTWARE) + + end = time.time() + + self.logger.info('Runtime: {:.7f} seconds (elapsed time, includes allocation wait time)'.format(end - start)) + except Exception as e: + self.logger.error('Unable to run the benchmark: %s', e) + def main(): PARSER = argparse.ArgumentParser( From 5abd6687f3024a2300499ad6e71c5d26096f92f5 Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Mon, 28 Nov 2022 22:44:17 -0800 Subject: [PATCH 2/7] update CI with new tests --- .github/workflows/h5bench-hdf5-1.10.4.yml | 7 +++++++ .github/workflows/h5bench-hdf5-1.10.7.yml | 7 +++++++ .github/workflows/h5bench-hdf5-1.10.8.yml | 7 +++++++ .github/workflows/h5bench-hdf5-1.12.0.yml | 7 +++++++ .github/workflows/h5bench-hdf5-1.13.0.yml | 7 +++++++ .github/workflows/h5bench-hdf5-develop.yml | 11 +++++++++++ 6 files changed, 46 insertions(+) diff --git a/.github/workflows/h5bench-hdf5-1.10.4.yml b/.github/workflows/h5bench-hdf5-1.10.4.yml index 08e9feb1..46570292 100644 --- a/.github/workflows/h5bench-hdf5-1.10.4.yml +++ b/.github/workflows/h5bench-hdf5-1.10.4.yml @@ -200,6 +200,13 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json + - name: Test h5bench SYNC qmcpack + run: | + export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH + + cd build + ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json + - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.10.7.yml b/.github/workflows/h5bench-hdf5-1.10.7.yml index 714e4ffc..546d60e5 100644 --- a/.github/workflows/h5bench-hdf5-1.10.7.yml +++ b/.github/workflows/h5bench-hdf5-1.10.7.yml @@ -200,6 +200,13 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json + - name: Test h5bench SYNC qmcpack + run: | + export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH + + cd build + ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json + - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.10.8.yml b/.github/workflows/h5bench-hdf5-1.10.8.yml index de16eacc..7ff10f8e 100644 --- a/.github/workflows/h5bench-hdf5-1.10.8.yml +++ b/.github/workflows/h5bench-hdf5-1.10.8.yml @@ -200,6 +200,13 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json + - name: Test h5bench SYNC qmcpack + run: | + export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH + + cd build + ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json + - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.12.0.yml b/.github/workflows/h5bench-hdf5-1.12.0.yml index aa324560..e8229453 100644 --- a/.github/workflows/h5bench-hdf5-1.12.0.yml +++ b/.github/workflows/h5bench-hdf5-1.12.0.yml @@ -235,6 +235,13 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json + - name: Test h5bench SYNC qmcpack + run: | + export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH + + cd build + ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json + - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.13.0.yml b/.github/workflows/h5bench-hdf5-1.13.0.yml index 73eca4d6..8a7bfbd1 100644 --- a/.github/workflows/h5bench-hdf5-1.13.0.yml +++ b/.github/workflows/h5bench-hdf5-1.13.0.yml @@ -266,6 +266,13 @@ jobs: cd build-sync ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json + - name: Test h5bench SYNC qmcpack + run: | + export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH + + cd build + ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json + - name: Test h5bench ASYNC write/read run: | export HDF5_DIR=/opt/hdf5 diff --git a/.github/workflows/h5bench-hdf5-develop.yml b/.github/workflows/h5bench-hdf5-develop.yml index 58ed2f20..25b366e9 100644 --- a/.github/workflows/h5bench-hdf5-develop.yml +++ b/.github/workflows/h5bench-hdf5-develop.yml @@ -405,6 +405,17 @@ jobs: cd build-sync ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json + - name: Test h5bench SYNC qmcpack + run: | + export HDF5_HOME=/opt/hdf5 + export ABT_HOME=/opt/argobots + export ASYNC_HOME=/opt/vol-async + + export LD_LIBRARY_PATH=$ASYNC_HOME/lib:$HDF5_HOME/lib:$ABT_HOME/lib:$LD_LIBRARY_PATH + + cd build-sync + ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json + - name: Test h5bench ASYNC write/read run: | export HDF5_DIR=/opt/hdf5 From 385989bd1fada9b650fa1cddf86661c8c55da2c6 Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Tue, 29 Nov 2022 11:33:44 -0800 Subject: [PATCH 3/7] restrict version based on requirements --- .github/workflows/h5bench-hdf5-1.10.4.yml | 7 ----- .github/workflows/h5bench-hdf5-1.10.7.yml | 7 ----- .github/workflows/h5bench-hdf5-1.10.8.yml | 7 ----- .github/workflows/h5bench-hdf5-1.12.0.yml | 7 ----- CMakeLists.txt | 33 +++++++++++++++++------ 5 files changed, 25 insertions(+), 36 deletions(-) diff --git a/.github/workflows/h5bench-hdf5-1.10.4.yml b/.github/workflows/h5bench-hdf5-1.10.4.yml index 46570292..08e9feb1 100644 --- a/.github/workflows/h5bench-hdf5-1.10.4.yml +++ b/.github/workflows/h5bench-hdf5-1.10.4.yml @@ -200,13 +200,6 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json - - name: Test h5bench SYNC qmcpack - run: | - export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH - - cd build - ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json - - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.10.7.yml b/.github/workflows/h5bench-hdf5-1.10.7.yml index 546d60e5..714e4ffc 100644 --- a/.github/workflows/h5bench-hdf5-1.10.7.yml +++ b/.github/workflows/h5bench-hdf5-1.10.7.yml @@ -200,13 +200,6 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json - - name: Test h5bench SYNC qmcpack - run: | - export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH - - cd build - ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json - - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.10.8.yml b/.github/workflows/h5bench-hdf5-1.10.8.yml index 7ff10f8e..de16eacc 100644 --- a/.github/workflows/h5bench-hdf5-1.10.8.yml +++ b/.github/workflows/h5bench-hdf5-1.10.8.yml @@ -200,13 +200,6 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json - - name: Test h5bench SYNC qmcpack - run: | - export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH - - cd build - ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json - - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/.github/workflows/h5bench-hdf5-1.12.0.yml b/.github/workflows/h5bench-hdf5-1.12.0.yml index e8229453..aa324560 100644 --- a/.github/workflows/h5bench-hdf5-1.12.0.yml +++ b/.github/workflows/h5bench-hdf5-1.12.0.yml @@ -235,13 +235,6 @@ jobs: cd build ./h5bench --debug --abort-on-failure ../samples/sync-e3sm.json - - name: Test h5bench SYNC qmcpack - run: | - export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH - - cd build - ./h5bench --debug --abort-on-failure ../samples/sync-qmcpack.json - - name: Upload artifact if: always() uses: actions/upload-artifact@v2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f4d7b29..23478955 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,14 +266,22 @@ configure_file(${CMAKE_SOURCE_DIR}/src/h5bench_configuration.py.in ${CMAKE_BINAR # https://github.com/QMCPACK/qmcpack if(H5BENCH_QMCPACK) - set(ENV{HDF5_ROOT} ${HDF5_HOME}) - set(QMC_BUILD_SANDBOX_ONLY ON) - - add_subdirectory(qmcpack) - - execute_process( - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/qmcpack/bin/restart ${CMAKE_BINARY_DIR}/h5bench_qmcpack - ) + if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.2.0) + if(${HDF5_VERSION} VERSION_GREATER_EQUAL "1.12.1") + set(ENV{HDF5_ROOT} ${HDF5_HOME}) + set(QMC_BUILD_SANDBOX_ONLY ON) + + add_subdirectory(qmcpack) + + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/qmcpack/bin/restart ${CMAKE_BINARY_DIR}/h5bench_qmcpack + ) + else() + message(FATAL_ERROR "QMCPACK requires at least HDF5 1.12.1") + endif() + else() + message(FATAL_ERROR "QMCPACK requires at least gcc-9.2") + endif() endif() # Install binaries ############################################################ @@ -350,6 +358,15 @@ if(H5BENCH_AMREX) endif() endif() +if(H5BENCH_QMCPACK) + install( + FILES + h5bench_qmcpack + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + DESTINATION bin + ) +endif() + # Testing ##################################################################### add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests) From b8e7ead22b806408fe0304ec405f3c91d412da06 Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Tue, 29 Nov 2022 11:43:58 -0800 Subject: [PATCH 4/7] include FFT dependency --- .github/workflows/h5bench-hdf5-1.13.0.yml | 12 ++++++++++++ .github/workflows/h5bench-hdf5-develop.yml | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/.github/workflows/h5bench-hdf5-1.13.0.yml b/.github/workflows/h5bench-hdf5-1.13.0.yml index 8a7bfbd1..bb409569 100644 --- a/.github/workflows/h5bench-hdf5-1.13.0.yml +++ b/.github/workflows/h5bench-hdf5-1.13.0.yml @@ -25,6 +25,10 @@ jobs: # VOL-ASYNC git clone --recursive https://github.com/hpc-io/vol-async.git /opt/vol-async + # FFTW + wget https://www.fftw.org/fftw-3.3.10.tar.gz + tar zxf fftw-3.3.10.tar.gz + - name: Build Argobots run: | export ABT_DIR=/opt/argobots @@ -37,6 +41,14 @@ jobs: make -j 2 make install + - name: Build FFTW + run: | + cd fftw-3.3.10 + + ./configure + + make install + - name: Build VOL-ASYNC run: | export HDF5_DIR=/opt/hdf5 diff --git a/.github/workflows/h5bench-hdf5-develop.yml b/.github/workflows/h5bench-hdf5-develop.yml index 25b366e9..bdaec512 100644 --- a/.github/workflows/h5bench-hdf5-develop.yml +++ b/.github/workflows/h5bench-hdf5-develop.yml @@ -30,6 +30,10 @@ jobs: # VOL-ASYNC git clone --recursive https://github.com/hpc-io/vol-async.git /opt/vol-async + # FFTW + wget https://www.fftw.org/fftw-3.3.10.tar.gz + tar zxf fftw-3.3.10.tar.gz + - name: Build HDF5 develop run: | export HDF5_DIR=/opt/hdf5 @@ -59,6 +63,14 @@ jobs: make -j 2 make install + - name: Build FFTW + run: | + cd fftw-3.3.10 + + ./configure + + make install + - name: Build VOL-ASYNC run: | export HDF5_DIR=/opt/hdf5 From 059e6ec6558a0d69e46722728aec3dee1ceed4c5 Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Tue, 29 Nov 2022 11:51:43 -0800 Subject: [PATCH 5/7] include dependency and disable in older versions --- .github/workflows/h5bench-hdf5-1.12.0.yml | 8 +++++++- .github/workflows/h5bench-hdf5-1.13.0.yml | 3 +++ .github/workflows/h5bench-hdf5-develop.yml | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/h5bench-hdf5-1.12.0.yml b/.github/workflows/h5bench-hdf5-1.12.0.yml index aa324560..bdc82450 100644 --- a/.github/workflows/h5bench-hdf5-1.12.0.yml +++ b/.github/workflows/h5bench-hdf5-1.12.0.yml @@ -28,7 +28,13 @@ jobs: cd build cmake .. \ - -DH5BENCH_ALL=ON + -DH5BENCH_ALL=ON \ + -DH5BENCH_METADATA=ON \ + -DH5BENCH_EXERCISER=ON \ + -DH5BENCH_AMREX=ON \ + -DH5BENCH_OPENPMD=ON \ + -DH5BENCH_E3SM=ON \ + -DH5BENCH_QMCPACK=OFF make -j 2 make install diff --git a/.github/workflows/h5bench-hdf5-1.13.0.yml b/.github/workflows/h5bench-hdf5-1.13.0.yml index bb409569..01d58ef8 100644 --- a/.github/workflows/h5bench-hdf5-1.13.0.yml +++ b/.github/workflows/h5bench-hdf5-1.13.0.yml @@ -22,6 +22,9 @@ jobs: - name: Dependencies run: | + sudo apt-get update + sudo apt-get install libblas-dev liblapack-dev -y + # VOL-ASYNC git clone --recursive https://github.com/hpc-io/vol-async.git /opt/vol-async diff --git a/.github/workflows/h5bench-hdf5-develop.yml b/.github/workflows/h5bench-hdf5-develop.yml index bdaec512..b6271a47 100644 --- a/.github/workflows/h5bench-hdf5-develop.yml +++ b/.github/workflows/h5bench-hdf5-develop.yml @@ -22,7 +22,7 @@ jobs: - name: Dependencies run: | sudo apt-get update - sudo apt-get install cmake gcc gdb libtool zlib1g-dev python3 libopenmpi-dev -y + sudo apt-get install cmake gcc gdb libtool zlib1g-dev python3 libopenmpi-dev libblas-dev liblapack-dev -y # HDF5 git clone https://github.com/HDFGroup/hdf5.git From 92e5aadb0aea5e47cffab41ec9b9339a7885648f Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Tue, 29 Nov 2022 13:56:44 -0800 Subject: [PATCH 6/7] fix version --- .github/workflows/h5bench-hdf5-1.12.0.yml | 1 - .github/workflows/h5bench-hdf5-1.13.0.yml | 2 +- .github/workflows/h5bench-hdf5-develop.yml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/h5bench-hdf5-1.12.0.yml b/.github/workflows/h5bench-hdf5-1.12.0.yml index bdc82450..cd17043a 100644 --- a/.github/workflows/h5bench-hdf5-1.12.0.yml +++ b/.github/workflows/h5bench-hdf5-1.12.0.yml @@ -28,7 +28,6 @@ jobs: cd build cmake .. \ - -DH5BENCH_ALL=ON \ -DH5BENCH_METADATA=ON \ -DH5BENCH_EXERCISER=ON \ -DH5BENCH_AMREX=ON \ diff --git a/.github/workflows/h5bench-hdf5-1.13.0.yml b/.github/workflows/h5bench-hdf5-1.13.0.yml index 01d58ef8..13d302b4 100644 --- a/.github/workflows/h5bench-hdf5-1.13.0.yml +++ b/.github/workflows/h5bench-hdf5-1.13.0.yml @@ -50,7 +50,7 @@ jobs: ./configure - make install + sudo make install - name: Build VOL-ASYNC run: | diff --git a/.github/workflows/h5bench-hdf5-develop.yml b/.github/workflows/h5bench-hdf5-develop.yml index b6271a47..b71f3727 100644 --- a/.github/workflows/h5bench-hdf5-develop.yml +++ b/.github/workflows/h5bench-hdf5-develop.yml @@ -69,7 +69,7 @@ jobs: ./configure - make install + sudo make install - name: Build VOL-ASYNC run: | From f7d1befd28c592fb32e2305f963c86ab40400c2c Mon Sep 17 00:00:00 2001 From: Jean Luca Bez Date: Wed, 10 May 2023 11:17:11 -0700 Subject: [PATCH 7/7] include test and documentation --- docs/source/index.rst | 2 ++ docs/source/qmcpack.rst | 38 ++++++++++++++++++++++++++++++++++++++ samples/sync-qmcpack.json | 22 ++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 docs/source/qmcpack.rst create mode 100644 samples/sync-qmcpack.json diff --git a/docs/source/index.rst b/docs/source/index.rst index 853d4d9c..fd3b5580 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -35,6 +35,7 @@ Exerciser ``h5bench_exerciser`` |:white_check_mark:| |:white_la OpenPMD (write) ``h5bench_openpmd_write`` |:white_check_mark:| |:white_large_square:| OpenPMD (read) ``h5bench_openpmd_read`` |:white_check_mark:| |:white_large_square:| E3SM-IO ``h5bench_e3sm`` |:white_check_mark:| |:white_large_square:| +QMCPACK ``h5bench_qmcpack`` |:white_check_mark:| |:white_large_square:| ==================== =========================== ==================== ======================== .. toctree:: @@ -54,6 +55,7 @@ E3SM-IO ``h5bench_e3sm`` |:white_check_mark:| |:white_la openpmd exerciser e3sm + qmcpack .. toctree:: :maxdepth: 2 diff --git a/docs/source/qmcpack.rst b/docs/source/qmcpack.rst new file mode 100644 index 00000000..4153f4a5 --- /dev/null +++ b/docs/source/qmcpack.rst @@ -0,0 +1,38 @@ +QMCPACK +======== + +QMCPACK is an open-source production-level many-body ab initio Quantum Monte Carlo code for computing the electronic structure of atoms, molecules, 2D nanomaterials and solids. The solid-state capabilities include metallic systems as well as insulators. + +QMCPACK has a checkpoint/restart miniapp which has been integrated into `h5bench`. It dumps walker configurations and random number seeds to the HDF5 files and then reads them in and check the correctness. To have good performance at large scale, HDF5 version >= 1.10 is needed. + +You can find more information in QMCPACK `GitHub repository `_. + +Configuration +------------- + +You can configure QMCPACK benchmark with the following options. Notice that if you use the ``configuration.json`` approach to define the runs for ``h5bench``, we will automatically generate the final configuration file based on the options you provide in the JSON file. For standalone usage of this benchmark, you can refer to E3SM-IO repository. + +====================== ============================================================================== +**Parameter** **Description** +====================== ============================================================================== +``i`` Number of Monte Carlo steps +``g`` Tiling (``tiling_1 tiling_2 tiling_3``) +``s`` Random seed +``w`` Number of walkers +``r`` Maximum pair distance (i.e., ``rmax``) +====================== ============================================================================== + +JSON Configuration (recomended) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To run an instance of AMReX HDF5 benchmark you need to include the following in the ``benchmarks`` property of your ``configuration.json`` file: + +.. code-block:: + + { + "benchmark": "qmcpack", + "configuration": { + "i": "100", + "g": "4 4 1" + } + } \ No newline at end of file diff --git a/samples/sync-qmcpack.json b/samples/sync-qmcpack.json new file mode 100644 index 00000000..b910c8a9 --- /dev/null +++ b/samples/sync-qmcpack.json @@ -0,0 +1,22 @@ +{ + "mpi": { + "command": "mpirun", + "configuration": "--allow-run-as-root --oversubscribe -np 2 " + }, + "vol": { + + }, + "file-system": { + + }, + "directory": "storage", + "benchmarks": [ + { + "benchmark": "qmcpack", + "configuration": { + "i": "100", + "g": "4 4 1" + } + } + ] +} \ No newline at end of file