Skip to content

Commit

Permalink
Release 0.14.3 backports (#1135)
Browse files Browse the repository at this point in the history
* Read: time/dt also in long double (#1096)

* Python: time/dt round-trip

Test writing and reading time and dt on an iteration via properties.

* Fix: Iteration read of long double time

Support reading of `dt` and `time` attributes if they are of type
`long double`. (openPMD standard: all `floatX` supported)

* Executables: CXX_STANDARD/EXTENSIONS (#1102)

Set `CXX_EXTENSIONS OFF` and `CXX_STANDARD_REQUIRED ON` for created
executables.

This mitigates issues with NVCC 11.0 and C++17 builds seen as added
`-std=gnu++17` flags that lead to
```
nvcc fatal   : Value 'gnu++17' is not defined for option 'std'
```
when using `nvcc` as CXX compiler directly.

* Doc: More Locations -DPython_EXECUTABLE (#1104)

Mention the `-DPython_EXECUTABLE` twice more in build examples.

* NVCC + C++17 (#1103)

* NVCC + C++17

Work-around a build issue with NVCC in C++17 builds.
```
include/openPMD/backend/Attributable.hpp(437):
error #289: no instance of constructor "openPMD::Attribute::Attribute" matches the argument list
            argument types are: (std::__cxx11::string)
          detected during instantiation of "__nv_bool openPMD::AttributableInterface::setAttribute(const std::__cxx11::string &, T) [with T=std::__cxx11::string]"
```
from
```
inline bool
AttributableInterface::setAttribute( std::string const & key, char const value[] )
{
    return this->setAttribute(key, std::string(value));
}
```

Seen with:
- NVCC 11.0.2 + GCC 8.3.0
- NVCC 11.0.2 + GCC 7.5.0

* NVCC 11.0.2 C++17 work-around: Add Comment

* Lazy parsing: Make findable in docs and use in openpmd-ls (#1111)

* Use deferred iteration parsing in openpmd-ls

* Make lazy/deferred parsing searchable

* Add a way to search for usesteps key

* HDF5: Document HDF5_USE_FILE_LOCKING (#1106)

Document a HDF5 read work-around that we currently need on OLCF
Jupyter (https://jupyter.olcf.ornl.gov), due to a mounting issue
of GPFS in the Jupyter serice (OLCFHELP-3685).

From the HDF5 1.10.1 Release Notes:
```
Other New Features and Enhancements
===================================

    Library
    -------
    - Added a mechanism for disabling the SWMR file locking scheme.

      The file locking calls used in HDF5 1.10.0 (including patch1)
      will fail when the underlying file system does not support file
      locking or where locks have been disabled. To disable all file
      locking operations, an environment variable named
      HDF5_USE_FILE_LOCKING can be set to the five-character string
      'FALSE'. This does not fundamentally change HDF5 library
      operation (aside from initial file open/create, SWMR is lock-free),
      but users will have to be more careful about opening files
      to avoid problematic access patterns (i.e.: multiple writers)
      that the file locking was designed to prevent.

      Additionally, the error message that is emitted when file lock
      operations set errno to ENOSYS (typical when file locking has been
      disabled) has been updated to describe the problem and potential
      resolution better.

      (DER, 2016/10/26, HDFFV-9918)
```

This also exists as a compilation option for HDF5 in CMake, where it
defaults to ``TRUE`` by default, which is also what distributions/
package managers ship.

Disabling from Bash:
```bash
export HDF5_USE_FILE_LOCKING=FALSE
```

Disabling from Python:
```py
import os
os.environ['HDF5_USE_FILE_LOCKING'] = "FALSE"
```

* Avoid object slicing when deriving from Series class (#1107)

* Make Series class final

* Use private constructor to avoid object slicing

* Doc: OMPI_MCA_io Control (#1114)

Document OpenMPI MPI-I/O backend control.

We have documented this long in #446.

* openPMD.hpp: Include auxiliary StringManip (#1124)

Include this, handy functions.

* CXX Std: Remember <variant> Impl. (#1128)

We use `<variant>` or `<mpark/variant.hpp>` in our public API
interface for datatypes, depending on the C++ standard.

This pull request makes sure that the same implementation is used
in downstream code, even if the C++ standard is switched. This avoids
ABI issues when, e.g., using a C++14 built openPMD-api in a C++17
downstream code.

* Spack: No More `load -r` (#1125)

The `-r` argument was removed from `spack load` and is now implied.

* Fix AppVeyor: Python Executable (#1127)

* GH Action: Add MSVC & ClangCL on Win

* Fix AppVeyor: Python Executable

* Avoid mismatching system Python and Conda Python
* Conda: Fix Numpy

* CMake: Skip Pipe Test

Written in a too special way, we cannot assume SH is always present

* Test 8b (Bench Read Parallel): Support Variable encoding, Fix Bugs (#1131)

* added support to read variable encoding, plus fixed some bugs

* fixed style

* Update examples/8b_benchmark_read_parallel.cpp

remove commented out code

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* Update examples/8b_benchmark_read_parallel.cpp

Co-authored-by: Axel Huebl <[email protected]>

* removed commented line

* updated 8b env option

Co-authored-by: Axel Huebl <[email protected]>

* HDF5 I/O optimizations (#1129)

* Include HDF5 optimization options

* Fix code style check

* Fix validations and include checks

* Fix style check

* Remove unecessary strict check

* Update documentation with HDF5 tuning options

* Update contributions

* Fix Guards for H5Pset_all_coll_metadata*

* MPI Guard: H5Pset_all_coll_metadata*

* Remove duplicated variable

Co-authored-by: Axel Huebl <[email protected]>

* Include known issues section for HDF5 (#1132)

* Update known issues with HDF5 and collective metadata operations

* Fix rst link and tiny typo

* Add targeted bugfix releases.

Co-authored-by: Axel Huebl <[email protected]>

* Include check for paged allocation (#1133)

* Include check for paged allocation

* Update ParallelHDF5IOHandler.cpp

* libfabric 1.6+: Document SST Work-Arounds (#1134)

* libfabric 1.6+: Document SST Work-Arounds

Document work-arounds for libfabric 1.6+ on Cray systems when using
data staging / streaming with ADIOS2 SST.

Co-authored-by: Franz Pöschel <[email protected]>

* Fix: Read Inconsistent Zero Pads (#1118)

* [Draft] Fix: Read Inconsistent Zero Pads

Some codes mess up the zero-padding in `fileBased` encoding, e.g.,
when specifying padding to 5 digits but creating >100'000 output
steps.

Files like those cannot yet be parsed and fell back to no padding,
which fails to open the file:
```
openpmd_00000.h5
openpmd_02000.h5
openpmd_101000.h5
openpmd_01000.h5
openpmd_100000.h5
openpmd_104000.h5
```

Error:
```
RuntimeError: [HDF5] Failed to open HDF5 file diags/diag1/openpmd_0.h5
```

* Revert previous changes except for test

Parse iteration numbers that are longer than their padding

Read inconsistent zero padding

* Overflow Padding: Read Test

* Warn if the prefix does end in a digit

* Fix: Don't let oversize numbers accidentally bump the padding

* Update test

* Issue warnings on misleading patterns also when writing

* Minor Style Update

Co-authored-by: Franz Pöschel <[email protected]>

* Release: 0.14.3

Co-authored-by: Franz Pöschel <[email protected]>
Co-authored-by: guj <[email protected]>
Co-authored-by: Jean Luca Bez <[email protected]>
Co-authored-by: Jean Luca Bez <[email protected]>
  • Loading branch information
5 people authored Nov 4, 2021
1 parent e00bede commit 00532a7
Show file tree
Hide file tree
Showing 32 changed files with 771 additions and 230 deletions.
33 changes: 9 additions & 24 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,19 @@
environment:
matrix:
- TARGET_ARCH: x86
CONDA_PY: 36
CONDA_INSTALL_LOCN: C:\\Miniconda36
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
platform: x86
SHARED: ON

- TARGET_ARCH: x64
CONDA_PY: 37
CONDA_PY: 3.7
CONDA_INSTALL_LOCN: C:\\Miniconda37-x64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
platform: x64
SHARED: ON
SHARED: OFF

- TARGET_ARCH: x86
CONDA_PY: 37
CONDA_PY: 3.7
CONDA_INSTALL_LOCN: C:\\Miniconda37
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
platform: x86
SHARED: ON

- TARGET_ARCH: x64
CONDA_PY: 36
CONDA_INSTALL_LOCN: C:\\Miniconda36-x64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
platform: x64
SHARED: OFF

configuration:
# - Debug
- Release
Expand Down Expand Up @@ -91,7 +77,6 @@ install:

# Add path, activate `conda` and update conda.
- cmd: call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
- cmd: conda update --yes --quiet conda

- cmd: set PYTHONUNBUFFERED=1

Expand All @@ -101,9 +86,9 @@ install:
- cmd: conda config --append channels conda-forge

# Configure the VM.
- cmd: conda install -n root --quiet --yes numpy>=1.15 cmake hdf5
# ADIOS2 build only for 64bit Windows and Python 3.6+
- cmd: if "%TARGET_ARCH%"=="x64" if %CONDA_PY% GEQ 36 conda install -n root --quiet --yes adios2
- cmd: conda install -n root --quiet --yes numpy cmake hdf5 python=%CONDA_PY%
# ADIOS2 build only for 64bit Windows
- cmd: if "%TARGET_ARCH%"=="x64" conda install -n root --quiet --yes adios2 python=%CONDA_PY%

before_build:
- cmd: cd C:\projects\openpmd-api
Expand All @@ -121,12 +106,12 @@ before_build:
# - cmd: if "%TARGET_ARCH%"=="x64" "C:\Program Files (x86)\Microsoft Visual Studio 15.9\VC\vcvarsall.bat" amd64

# CMake configure
- cmd: cmake -G "%OPENPMD_CMAKE_GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DBUILD_SHARED_LIBS=%SHARED% -DBUILD_TESTING=ON -DCMAKE_INSTALL_PREFIX="%CONDA_INSTALL_LOCN%" -DCMAKE_INSTALL_BINDIR="Library\bin" ".."
- cmd: cmake -G "%OPENPMD_CMAKE_GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DBUILD_SHARED_LIBS=%SHARED% -DBUILD_TESTING=ON -DopenPMD_USE_PYTHON=ON -DPython_EXECUTABLE="%CONDA_INSTALL_LOCN%\python.exe" -DCMAKE_INSTALL_PREFIX="%CONDA_INSTALL_LOCN%" -DCMAKE_INSTALL_BINDIR="Library\bin" ".."

build_script:
- cmd: cmake --build . --config %CONFIGURATION%
- cmd: cmake --build . --config %CONFIGURATION% -j 2
- cmd: cmake --build . --config %CONFIGURATION% --target install

test_script:
- cmd: ctest -V -C %CONFIGURATION%
- cmd: python -c "import openpmd_api; print(openpmd_api.__version__); print(openpmd_api.variants)"
- cmd: call %CONDA_INSTALL_LOCN%\python.exe -c "import openpmd_api; print(openpmd_api.__version__); print(openpmd_api.variants)"
57 changes: 57 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: 🪟 Windows

on: [push, pull_request]

concurrency:
group: ${{ github.ref }}-${{ github.head_ref }}-windows
cancel-in-progress: true

jobs:
build_win_msvc:
name: MSVC w/o MPI
runs-on: windows-latest
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v2
- name: Build & Install
run: |
python3.exe -m pip install --upgrade pip
python3.exe -m pip install --upgrade numpy
pwsh "share\openPMD\download_samples.ps1" build
cmake -S . -B build `
-DCMAKE_BUILD_TYPE=Debug `
-DopenPMD_USE_MPI=OFF
cmake --build build --config Debug --parallel 2
cmake --build build --config Debug --target install
# add before install, and fix Python path:
# ctest --test-dir build -C Debug --output-on-failure


build_win_clang:
name: Clang w/o MPI
runs-on: windows-2019
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v2
- uses: seanmiddleditch/gha-setup-ninja@master
- name: Build & Install
shell: cmd
run: |
python3.exe -m pip install --upgrade pip
python3.exe -m pip install --upgrade numpy
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\vc\Auxiliary\build\vcvarsall.bat" x64
pwsh "share\openPMD\download_samples.ps1" build
cmake -S . -B build ^
-G "Ninja" ^
-DCMAKE_C_COMPILER=clang-cl ^
-DCMAKE_CXX_COMPILER=clang-cl ^
-DCMAKE_BUILD_TYPE=Release ^
-DopenPMD_USE_MPI=OFF
cmake --build build --config Release --parallel 2
cmake --build build --config Debug --target install
# add before install, and fix Python path:
# ctest --test-dir build -C Debug --output-on-failure
6 changes: 6 additions & 0 deletions .rodare.json
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@
"name": "Schnetter, Erik",
"orcid": "0000-0002-4518-9017",
"type": "Other"
},
{
"affiliation": "Lawrence Berkeley National Laboratory",
"name": "Bez, Jean Luca",
"orcid": "0000-0002-3915-1135",
"type": "Other"
}
],
"title": "C++ & Python API for Scientific I/O with openPMD",
Expand Down
43 changes: 43 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,49 @@
Changelog
=========

0.14.2
------
**Date:** 2021-11-03

Read Bugs, C++17 Mixing and HDF5 Performance

This release makes reads more robust by fixing small API, file-based parsing and test bugs.
Building the library in C++14 and using it in C++17 will not result in incompatible ABIs anymore.
HDF5 1.10.1+ performance was improved significantly.

Changes to "0.14.2"
^^^^^^^^^^^^^^^^^^^

Bug Fixes
"""""""""

- read:

- allow inconsistent zero pads #1118
- time/dt also in long double #1096
- test 8b - bench read parallel:

- support variable encoding #1131
- block located at top left corner was mistaken to read a block in the center #1131
- CI (AppVeyor): Python executable #1127
- C++17 mixing: remember ``<variant>`` implementation #1128
- support NVCC + C++17 #1103
- avoid object slicing when deriving from ``Series`` class #1107
- executables: ``CXX_STANDARD``/``EXTENSIONS`` #1102

Other
"""""

- HDF5 I/O optimizations #1129 #1132 #1133
- libfabric 1.6+: Document SST Work-Arounds #1134
- OpenMPI: Document ``OMPI_MCA_io`` Control #1114
- HDF5: Document ``HDF5_USE_FILE_LOCKING`` #1106
- Lazy parsing: Make findable in docs and use in ``openpmd-ls`` #1111
- Docs: More Locations ``-DPython_EXECUTABLE`` #1104
- Spack: No More ``load -r`` #1125
- ``openPMD.hpp``: include auxiliary ``StringManip`` #1124


0.14.2
------
**Date:** 2021-08-17
Expand Down
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ contact:
orcid: https://orcid.org/0000-0003-1943-7141
email: [email protected]
title: "openPMD-api: C++ & Python API for Scientific I/O with openPMD"
version: 0.14.2
version: 0.14.3
repository-code: https://github.com/openPMD/openPMD-api
doi: 10.14278/rodare.27
license: LGPL-3.0-or-later
Expand Down
80 changes: 57 additions & 23 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
cmake_minimum_required(VERSION 3.15.0)

project(openPMD VERSION 0.14.2) # LANGUAGES CXX
project(openPMD VERSION 0.14.3) # LANGUAGES CXX

# the openPMD "markup"/"schema" standard version
set(openPMD_STANDARD_VERSION 1.1.0)
Expand Down Expand Up @@ -453,26 +453,36 @@ target_include_directories(openPMD PUBLIC
$<INSTALL_INTERFACE:include>
)

# is this a C++17 compile? If yes, skip MPark.Variant
try_compile(openPMD_HAS_CXX17
${openPMD_BINARY_DIR}/try_variant
${openPMD_SOURCE_DIR}/cmake/try_variant.cpp
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
message(STATUS "<variant> supported (C++17 or newer): ${openPMD_HAS_CXX17}")

# C++11 std::variant (C++17 stdlib preview)
# TODO not needed with C++17 compiler
add_library(openPMD::thirdparty::mpark_variant INTERFACE IMPORTED)
set(openPMD_PC_EXTRA_INCLUDE "")
if(openPMD_USE_INTERNAL_VARIANT)
target_include_directories(openPMD::thirdparty::mpark_variant SYSTEM INTERFACE
$<BUILD_INTERFACE:${openPMD_SOURCE_DIR}/share/openPMD/thirdParty/variant/include>
)
message(STATUS "MPark.Variant: Using INTERNAL version '1.4.0'")
else()
find_package(mpark_variant 1.3.0 REQUIRED) # TODO: we want 1.4.1+
target_link_libraries(openPMD::thirdparty::mpark_variant
INTERFACE mpark_variant)
get_target_property(EXTERNAL_MPARK_INCLUDE mpark_variant INTERFACE_INCLUDE_DIRECTORIES)
if(openPMD_HAVE_PKGCONFIG AND EXTERNAL_MPARK_INCLUDE)
set(openPMD_PC_EXTRA_INCLUDE "-I${EXTERNAL_MPARK_INCLUDE}")
if(NOT openPMD_HAS_CXX17)
add_library(openPMD::thirdparty::mpark_variant INTERFACE IMPORTED)
set(openPMD_PC_EXTRA_INCLUDE "")
if(openPMD_USE_INTERNAL_VARIANT)
target_include_directories(openPMD::thirdparty::mpark_variant SYSTEM INTERFACE
$<BUILD_INTERFACE:${openPMD_SOURCE_DIR}/share/openPMD/thirdParty/variant/include>
)
message(STATUS "MPark.Variant: Using INTERNAL version '1.4.0'")
else()
find_package(mpark_variant 1.3.0 REQUIRED) # TODO: we want 1.4.1+
target_link_libraries(openPMD::thirdparty::mpark_variant
INTERFACE mpark_variant)
get_target_property(EXTERNAL_MPARK_INCLUDE mpark_variant INTERFACE_INCLUDE_DIRECTORIES)
if(openPMD_HAVE_PKGCONFIG AND EXTERNAL_MPARK_INCLUDE)
set(openPMD_PC_EXTRA_INCLUDE "-I${EXTERNAL_MPARK_INCLUDE}")
endif()
message(STATUS "MPark.Variant: Found version '${mpark_variant_VERSION}'")
endif()
message(STATUS "MPark.Variant: Found version '${mpark_variant_VERSION}'")
target_link_libraries(openPMD PUBLIC openPMD::thirdparty::mpark_variant)
endif()
target_link_libraries(openPMD PUBLIC openPMD::thirdparty::mpark_variant)

# Catch2 for unit tests
if(openPMD_BUILD_TESTING)
Expand Down Expand Up @@ -518,8 +528,10 @@ if(openPMD_HAVE_ADIOS1)
)
target_compile_options(openPMD.ADIOS1.Serial PUBLIC ${_msvc_options})
target_compile_options(openPMD.ADIOS1.Parallel PUBLIC ${_msvc_options})
target_link_libraries(openPMD.ADIOS1.Serial PUBLIC openPMD::thirdparty::mpark_variant)
target_link_libraries(openPMD.ADIOS1.Parallel PUBLIC openPMD::thirdparty::mpark_variant)
if(NOT openPMD_HAS_CXX17)
target_link_libraries(openPMD.ADIOS1.Serial PUBLIC openPMD::thirdparty::mpark_variant)
target_link_libraries(openPMD.ADIOS1.Parallel PUBLIC openPMD::thirdparty::mpark_variant)
endif()

target_include_directories(openPMD.ADIOS1.Serial PRIVATE
${openPMD_SOURCE_DIR}/include ${openPMD_BINARY_DIR}/include)
Expand Down Expand Up @@ -811,13 +823,22 @@ if(openPMD_BUILD_TESTING)
else()
target_link_libraries(${testname}Tests PRIVATE CatchMain)
endif()

set_target_properties(${testname}Tests PROPERTIES
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED ON
)
endforeach()
endif()

if(openPMD_BUILD_CLI_TOOLS)
foreach(toolname ${openPMD_CLI_TOOL_NAMES})
add_executable(openpmd-${toolname} src/cli/${toolname}.cpp)
target_link_libraries(openpmd-${toolname} PRIVATE openPMD)
set_target_properties(openpmd-${toolname} PROPERTIES
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED ON
)
endforeach()
endif()

Expand All @@ -827,10 +848,18 @@ if(openPMD_BUILD_EXAMPLES)
if(openPMD_HAVE_MPI)
add_executable(${examplename} examples/${examplename}.cpp)
target_link_libraries(${examplename} PRIVATE openPMD)
set_target_properties(${examplename} PROPERTIES
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED ON
)
endif()
else()
add_executable(${examplename} examples/${examplename}.cpp)
target_link_libraries(${examplename} PRIVATE openPMD)
set_target_properties(${examplename} PROPERTIES
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED ON
)
endif()
endforeach()
endif()
Expand Down Expand Up @@ -983,7 +1012,7 @@ if(openPMD_INSTALL)
)
# install third-party libraries
# TODO not needed with C++17 compiler
if(openPMD_USE_INTERNAL_VARIANT)
if(NOT openPMD_HAS_CXX17 AND openPMD_USE_INTERNAL_VARIANT)
install(DIRECTORY "${openPMD_SOURCE_DIR}/share/openPMD/thirdParty/variant/include/mpark"
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
Expand Down Expand Up @@ -1216,7 +1245,8 @@ if(openPMD_BUILD_TESTING)
endforeach()

# openpmd-pipe (python) test
if( openPMD_HAVE_HDF5
if( NOT WIN32
AND openPMD_HAVE_HDF5
AND (openPMD_HAVE_ADIOS2 OR openPMD_HAVE_ADIOS1)
AND EXAMPLE_DATA_FOUND
)
Expand Down Expand Up @@ -1345,7 +1375,11 @@ if(openPMD_INSTALL)
endif()
message("")
message(" Additionally, install following third party libraries:")
message(" MPark.Variant: ${openPMD_USE_INTERNAL_VARIANT}")
if(openPMD_HAS_CXX17)
message(" MPark.Variant: OFF")
else()
message(" MPark.Variant: ${openPMD_USE_INTERNAL_VARIANT}")
endif()
else()
message(" Installation: OFF")
endif()
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ Choose *one* of the install methods below to get started:
```bash
# optional: +python +adios1 -adios2 -hdf5 -mpi
spack install openpmd-api
spack load -r openpmd-api
spack load openpmd-api
```

### [Conda](https://conda.io)
Expand Down Expand Up @@ -232,7 +232,7 @@ cd openPMD-api-build
# for options append:
# -DopenPMD_USE_...=...
# e.g. for python support add:
# -DopenPMD_USE_PYTHON=ON
# -DopenPMD_USE_PYTHON=ON -DPython_EXECUTABLE=$(which python3)
cmake ../openPMD-api

cmake --build .
Expand Down Expand Up @@ -412,6 +412,8 @@ Further thanks go to improvements and contributions from:
Dask guidance & reviews
* [Erik Schnetter (PITP)](https://github.com/eschnett):
C++ API bug fixes
* [Jean Luca Bez (LBNL)](https://github.com/jeanbez):
HDF5 performance tuning

### Grants

Expand Down
Loading

0 comments on commit 00532a7

Please sign in to comment.