Skip to content

Commit

Permalink
Merge pull request #351 from LLNL/v0.4.0-rc
Browse files Browse the repository at this point in the history
v0.4.0 Release
  • Loading branch information
gzagaris committed Sep 23, 2020
2 parents f0539ef + d08dc4c commit 38c0d74
Show file tree
Hide file tree
Showing 749 changed files with 90,529 additions and 53,737 deletions.
13 changes: 11 additions & 2 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
Aaron Black <black27@llnl.gov> Aaron C. Black <black27@llnl.gov>
Adam J. Kunen <kunen1@llnl.gov> Adam J. Kunen <kunen1@sierra1626.llnl.gov>
Aesha Parekh <aeshabparekh@gmail.com> Aesha Parekh <29237123+aeshapar@users.noreply.github.com>
Arlie Capps <capps2@llnl.gov> Arlie Capps <capps2@cab669.llnl.gov>
Arlie Capps <capps2@llnl.gov> Arlie Capps <capps2@cab689.llnl.gov>
Arlie Capps <capps2@llnl.gov> Arlie Capps <48997041+agcapps@users.noreply.github.com>
Arlie Capps <capps2@llnl.gov> Arlie Capps <agcapps@ucdavis.edu>
Austin Stromme <stromme1@llnl.gov> Austin James Stromme <stromme1@llnl.gov>
Austin Stromme <stromme1@llnl.gov> Austin James Stromme <stromme1@cab689.llnl.gov>
Austin Stromme <stromme1@llnl.gov> Austin James Stromme <stromme1@cab669.llnl.gov>
Benjamin Curtice Corbett <corbett5@llnl.gov> Benjamin Curtice Corbett <corbett5@cab668.llnl.gov>
Benjamin Curtice Corbett <corbett5@llnl.gov> Ben Corbett <corbett5@llnl.gov>
Benjamin Curtice Corbett <corbett5@llnl.gov> Benjamin Corbett <corbett5@llnl.gov>
Benjamin Curtice Corbett <corbett5@llnl.gov> Ben Corbett <32752943+corbett5@users.noreply.github.com>
Brian Manh Hien Han <han12@llnl.gov> Brian Han <han12@llnl.gov>
Brian Manh Hien Han <han12@llnl.gov> Brian Manh Hien Han <han12@rzansel19.coral.llnl.gov>
Chris White <white238@llnl.gov> Christopher A. White <white238@llnl.gov>
Cyrus D. Harrison <harrison37@llnl.gov> Cyrus Harrison <cyrush@llnl.gov>
Cyrus D. Harrison <harrison37@llnl.gov> Cyrus Harrison <harrison37@llnl.gov>
Expand All @@ -18,11 +22,15 @@ Evan Taylor Desantola <desantola1@llnl.gov> Evan Taylor DeSantola <desantola
George Zagaris <zagaris2@llnl.gov> George Zagaris <george.zagaris@gmail.com>
Kenneth Weiss <weiss27@llnl.gov> Kenneth Weiss <kweiss@llnl.gov>
Kenneth Weiss <weiss27@llnl.gov> Kenny Weiss <kennyweiss@users.noreply.github.com>
Kenneth Weiss <weiss27@llnl.gov> Kenny Weiss <kenny@kennyweiss.com>
Keith Edward Healy <healy22@llnl.gov> keithhealy <50376825+keithhealy@users.noreply.github.com>
Keith Edward Healy <healy22@llnl.gov> Keith Edward Healy <healy22@borax5.llnl.gov>
Lee A. Taylor <taylor16@llnl.gov> Lee A. Taylor <taylor@cab688.llnl.gov>
Lee A. Taylor <taylor16@llnl.gov> Lee A. Taylor <taylor@cab688.llnl.gov>
Lee A. Taylor <taylor16@llnl.gov> Lee Taylor <ltaylor@llnl.gov>
Lee A. Taylor <taylor16@llnl.gov> Lee Taylor <taylor16@llnl.gov>
Matt Larsen <larsen30@llnl.gov> mclarsen <larsen30@llnl.gov>
Lee A. Taylor <taylor16@llnl.gov> Lee Taylor <31938638+ltaylor16@users.noreply.github.com>
Matt Larsen <larsen30@llnl.gov> mclarsen <larsen30@llnl.gov>
Noah S. Elliott <elliott22@llnl.gov> Noah Elliott <elliott22@llnl.gov>
Punita P. Sinha <sinha2@llnl.gov> Punita P. Sinha <sinha2@cab687.llnl.gov>
Punita P. Sinha <sinha2@llnl.gov> Punita P. Sinha <sinha2@cab669.llnl.gov>
Expand All @@ -44,5 +52,6 @@ Axom Shared User <axom-dev@llnl.gov> Aaron Black <atk@cab687.llnl.gov
Axom Shared User <axom-dev@llnl.gov> Richard D. Hornung <atk@rzalastor2.llnl.gov>
Axom Shared User <axom-dev@llnl.gov> Richard D. Hornung <atk@cab687.llnl.gov>

uncrustify-robot <axom-dev@llnl.gov> uncrustify-robot <asctoolkit-dev@llnl.gov>
format-robot <axom-dev@llnl.gov> uncrustify-robot <axom-dev@llnl.gov>
format-robot <axom-dev@llnl.gov> uncrustify-robot <asctoolkit-dev@llnl.gov>
shroud-robot <axom-dev@llnl.gov> shroud-robot <asctoolkit-dev@llnl.gov>
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ PackageName: fmt
PackageHomePage: https://github.com/fmtlib/fmt
PackageLicenseDeclared: BSD-2-Clause

PackageName: sol
PackageHomePage: https://github.com/ThePhD/sol2
PackageLicenseDeclared: MIT License

PackageName: sparsehash
PackageHomePage: https://github.com/sparsehash/sparsehash
PackageLicenseDeclared: BSD-3-Clause
Expand Down
2 changes: 1 addition & 1 deletion RELEASE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
*******************************************************************************

Axom: ................................, version 0.3.3
Axom: ................................, version 0.4.0

Copyright (c) 2017-2020, Lawrence Livermore National Security, LLC.
Produced at the Lawrence Livermore National Laboratory.
Expand Down
136 changes: 133 additions & 3 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,133 @@ The format of this file is based on [Keep a Changelog](http://keepachangelog.com

The Axom project release numbers follow [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Version 0.4.0] - Release date 2020-09-22

### Added
- Exposed the tolerance parameter `EPS` that is used to determine intersections between
triangles in `primal:intersect()` as an optional final parameter.
- Added BVH spatial index option to the `mesh_tester` utility for calculating
triangle-triangle intersection.
- Added `axom::execution_space< ExecSpace >::onDevice()` to check if execution
space is on device.
- Added Axom macro `AXOM_SUPPRESS_HD_WARN` to silence host device compiler
warnings.
- Added option to quest's `SignedDistance` class and C API to toggle whether
the distance query computes the sign.
- Added a `batched` option to quest's signed distance query example application.
This computes all distance queries on an array of points using a single call to `computeDistance`.
The query uses OpenMP threading, when available.
- Added new component, Inlet, to assist in retrieving and storing data from
an input deck.
- Added the ability to specify an [Umpire] allocator ID to use with the
BVH. This allows the application to use a device allocator for the BVH and
avoid use of Unified Memory (UM) on the GPU, which can hinder perfomrmance,
or use a pool allocator to mitigate the latencies associated with allocation/deallocation.
The allocator ID is specified as an optional argument to the BVH constructor.
- Added new CMake option, `AXOM_ENABLE_ANNOTATIONS`, to enable/disable code
annotations in Axom. Default is OFF.
- Added Axom annotation macros. The macros can be used to annotate functions,
using the `AXOM_PERF_MARK_FUNCTION` macro, or at a more fine grain level,
different sections of code can be annotated by wrapping them within an
`AXOM_PERF_MARK_SECTION` block. As a first cut, this works with NVTX tools.
However, the hooks are in place to add support for Caliper in the future.
- Added a simple interface to NVTX that allows an application to set the color
and category for NVTX ranges corresponding to annotated code in Axom. The
application can now call `axom::nvtx:set_color()` and
`axom::nvtx::set_category()` to set the corresponding parameters respectively.
This facilitates in the performance evaluation by allowing developers to easily
filter out calls by category or visually by setting a different color to use
in GUI tools, such as, NVVP and NSight.
- Added a portable floating_point_limits traits class, to return min(), max(), lowest()
and epsilon() of a `float` or `double` type. The functionality is equivalent to that provided by
std::numeric_limits, but, the code is host/device decorated accordingly such that it
can also be called on the device.
- Added initial support for ray queries using the BVH. The caller may now supply a set of rays to
a BVH and the BVH will return a set of candidate BVH bins that intersect each ray.
- Added initial support for bounding box queries using the BVH. The caller may
now supply a set of bounding boxes to a BVH and the BVH will return a set of
candidate BVH bins that intersect each bounding box.
- Added an `axom-config.cmake` file to axom's installation to streamline incorporating axom
into user applications. See `<axom-install>/examples/axom` for example usages.
- Added [Sol] as a built-in TPL for fast and simple `C++` and `Lua` binding.
Sol is automatically enabled when `LUA_DIR` is found.
The version of Sol used in this release is `v2.20.6`, which requires `C++14`.

### Removed
- Removed the `AXOM_ENABLE_CUB` option, since `CUB` is no lonher used directly in
Axom code. Instead, we use `RAJA::stable_sort` with RAJA-v0.12.1 and fallback
to `std::stable_sort` with older versions of RAJA and when the code is built
without RAJA.

### Deprecated

### Changed
- Updated Axom to support RAJA-v0.12.1 and Umpire-v4.01, but the code remains
backwards compatible with previous versions of RAJA and Umpire.
- Transitioned Axom's code formatting tool from `Uncrustify` to [clang-format].
Axom's clang-format rules depend on clang 10.
- Modified the command line interface for `mesh_tester` utility. Interface
now uses a *-m, --method* option to select the spatial index, and *-p, policy*
option now accepts a string or integer value.
- Renamed the `AXOM_USE_MPI3`option to `AXOM_ENABLE_MPI3` for consistency.
- Modified the API for the BVH to accomodate different query types. The queries are now
more explicitly called `BVH::findPoints()` and `BVH::findRays()`.
- Modified the API of Axom's memory management routines to not leak usage of Umpire. Instead of
passing an `umpire::Allocator` object to specify an allocator, we now use the corresponding
integer ID associated with the allocator.
- All names in the C API now preserve the case of the C++ function.
ex. `SIDRE_datastore_new` is now `SIDRE_DataStore_new`.
- Fortran API in slic module. `axom::slic::message` Level enums are changed
from *enum-name_enumerator* to *namespace_enumerator*.
ex. `level_error` is now `message_error`.
- Fortran derived-type constructors are now generic functions named afer the derived type.
`datastore_new` is now `SidreDataStore`
`iomanager_new` is now `IOManager`

### Fixed
- Fixed a bug in `primal::intersect(Segment, BoundingBox)` and added regression tests.
- Spin's octrees can now be used with 64-bit indexes. This allows octrees
with up to 64 levels of resolution when using a 64-bit index type.
- Resolved issue with `AXOM_USE_64BIT_INDEXTYPE` configurations. Axom can once again
be configured with 64-bit index types.
- Fixed a triangle-triangle intersection case in primal that produced inconsistent results
depending on the order of the triangle's vertices.
- Fixed issue in the parallel construction of the BVH on GPUs, due to incoherent
L1 cache that could result in some data corruption in the BVH. The code now
calls ``__threadfence_system()`` after the parent is computed and stored back
to global memory to ensure that the *write* is visible to all threads.
- Fixed issue in Mint that would cause the clang@9.0.0 compiler to segfault. The
`mint_cell_types.cpp` test was causing a segfault in the compiler. The main
issue triggering this compiler bug was the use of `constexpr` when defining the
static `cell_info` array of structs. The code has been modified to use `const`
instead.
- Fixed issue in Quest's Signed Distance query that would prevent consecutive
calls to Quest when MPI-3 shared memory is enabled due to not properly
nullifying internal pointers when finalize is called.
- Fixed issue where the BVH would dispatch to the CPU sort() routine when the
specified execution policy was CUDA_EXEC async. Now, when the execution policy
is CUDA_EXEC the code would correctly dispatch to the GPU sort, using CUB
(when CUB is enabled), regardless of whether it's synchronous or asynchronous.
- Fixed issue with missing the bvh_traverse.hpp from the install prefix, which was preventing
applications from using the BVH when pointing to an Axom install prefix.
- Fixed usage of cuda kernel policies in Mint. Raja v0.11.0 changed the way max threads
launch bounds is calculated. Consequently, a large number of threads was being launched
leading to max registry count violation when linking. We are now using fixed kernel size
of 256 threads (16x16 in 2D and 8x8x4 in 3D).
- Third-party libraries can now build on the Windows platform through uberenv using vcpkg
("zero-to-axom support on Windows")

### Known Bugs
- Encountered a compiler bug on IBM LC platforms when using the IBM XL C/C++
compiler. The issue is manifested in the `generate_aabbs_and_centroids` method
in the `spin_bvh.cpp` unit test. It seems that the compiler does not handle
the lambda capture of the arrays correctly which leads to a segfault. A
workaround for the IBM XL compiler is provided.
- There is a known bug in MVAPICH that prevents consecutive creation/deletion
of MPI windows. This was encountered on LC platforms when enabling shared
memory in the Signed Distance Query. See the corresponding
[Github Issue](https://github.com/LLNL/axom/issues/257) for details.

## [Version 0.3.3] - Release date 2020-01-31

### Added
Expand All @@ -18,7 +145,7 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/
- Added [CLI11](https://github.com/CLIUtils/CLI11) command line parser as a built-in third party library.

### Removed

### Deprecated

### Changed
Expand Down Expand Up @@ -282,7 +409,8 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/
### Known Bugs
-

[Unreleased]: https://github.com/LLNL/axom/compare/v0.3.3...develop
[Unreleased]: https://github.com/LLNL/axom/compare/v0.4.0...develop
[Version 0.4.0]: https://github.com/LLNL/axom/compare/v0.3.3...v0.4.0
[Version 0.3.3]: https://github.com/LLNL/axom/compare/v0.3.2...v0.3.3
[Version 0.3.2]: https://github.com/LLNL/axom/compare/v0.3.1...v0.3.2
[Version 0.3.1]: https://github.com/LLNL/axom/compare/v0.3.0...v0.3.1
Expand All @@ -291,4 +419,6 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/

[Scalable Checkpoint Restart (SCR)]: https://computation.llnl.gov/projects/scalable-checkpoint-restart-for-mpi
[SU2 Mesh file format]: https://su2code.github.io/docs/Mesh-File/

[Umpire]: https://github.com/LLNL/Umpire
[clang-format]: https://releases.llvm.org/10.0.0/tools/clang/docs/ClangFormatStyleOptions.html
[Sol]: https://github.com/ThePhD/sol2
77 changes: 52 additions & 25 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,56 +8,80 @@
variables:
DO_BUILD: 'yes'
DO_TEST: 'yes'
DO_CLEAN: 'no'

strategy:
matrix:
linux_gcc6:
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/compilers:gcc-6'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
COMPILER: 'g++'
TEST_TARGET: 'linux_gcc6'
# Temporarily disabled due to running out of space
# linux_gcc6:
# VM_ImageName: 'ubuntu-16.04'
# Compiler_ImageName: 'axom/tpls:gcc-6'
# CMAKE_EXTRA_FLAGS: ''
# COMPILER: 'g++'
# TEST_TARGET: 'linux_gcc6'
# HOST_CONFIG: 'docker-linux-ubuntu16.04-x86_64-gcc@6.1.0'
linux_gcc7:
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/compilers:gcc-7'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
Compiler_ImageName: 'axom/tpls:gcc-7'
CMAKE_EXTRA_FLAGS: ''
COMPILER: 'g++'
TEST_TARGET: 'linux_gcc7'
HOST_CONFIG: 'docker-linux-ubuntu16.04-x86_64-gcc@7.3.0'
linux_gcc8:
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/compilers:gcc-8'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
Compiler_ImageName: 'axom/tpls:gcc-8'
CMAKE_EXTRA_FLAGS: ''
COMPILER: 'g++'
TEST_TARGET: 'linux_gcc8'
linux_clang4:
HOST_CONFIG: 'docker-linux-ubuntu16.04-x86_64-gcc@8.1.0'
linux_gcc8_64bit:
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/compilers:clang-4'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
COMPILER: 'clang++'
TEST_TARGET: 'linux_clang4'
Compiler_ImageName: 'axom/tpls:gcc-8'
CMAKE_EXTRA_FLAGS: '-DAXOM_USE_64BIT_INDEXTYPE:BOOL=ON'
COMPILER: 'g++'
TEST_TARGET: 'linux_gcc8_64bit'
HOST_CONFIG: 'docker-linux-ubuntu16.04-x86_64-gcc@8.1.0'
linux_clang4:
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/tpls:clang-4'
CMAKE_EXTRA_FLAGS: ''
COMPILER: 'clang++'
TEST_TARGET: 'linux_clang4'
HOST_CONFIG: 'docker-linux-ubuntu16.04-x86_64-clang@4.0.0'
linux_clang6:
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/compilers:clang-6'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
COMPILER: 'clang++'
TEST_TARGET: 'linux_clang6'
VM_ImageName: 'ubuntu-16.04'
Compiler_ImageName: 'axom/tpls:clang-6'
CMAKE_EXTRA_FLAGS: ''
COMPILER: 'clang++'
TEST_TARGET: 'linux_clang6'
HOST_CONFIG: 'docker-linux-ubuntu16.04-x86_64-clang@6.0.0'
osx_gcc:
VM_ImageName: 'macos-10.13'
VM_ImageName: 'macos-10.14'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
TEST_TARGET: 'osx_gcc'
windows:
VM_ImageName: 'windows-2019'
CMAKE_EXTRA_FLAGS: '-DAXOM_ENABLE_SIDRE=Off'
TEST_TARGET: 'win_vs'

pool:
vmImage: $(VM_ImageName)

steps:
- checkout: self
clean: boolean
clean: true
submodules: recursive
- task: CMake@1
inputs:
workingDir: 'build'
cmakeArgs: '$(CMAKE_EXTRA_FLAGS) ../src'
condition: eq( variables['Agent.OS'], 'Darwin')
condition: or( eq( variables['Agent.OS'], 'Windows_NT'), eq( variables['Agent.OS'], 'Darwin'))
- task: VSBuild@1
inputs:
solution: 'build/*.sln'
vsVersion: 'latest'
condition: eq( variables['Agent.OS'], 'Windows_NT')
displayName: 'Visual Studio Build'
- script: |
cd build
make
Expand All @@ -69,12 +93,15 @@ steps:
displayName: '$(TEST_TARGET) Test'
condition: eq( variables['Agent.OS'], 'Darwin')
- script: |
docker run --rm --user='root' -v `pwd`:/home/axom $(Compiler_ImageName) chown -R axom /home/axom
docker run --rm -v `pwd`:/home/axom -e TEST_TARGET -e COMPILER -e DO_BUILD -e DO_TEST -e CMAKE_EXTRA_FLAGS $(Compiler_ImageName) ./scripts/azure-pipelines/linux-build_and_test.sh
echo " -e $TEST_TARGET -e $COMPILER -e $DO_BUILD -e $DO_TEST -e $CMAKE_EXTRA_FLAGS $(Compiler_ImageName) ./scripts/azure-pipelines/linux-build_and_test.sh"
docker run --rm --user='root' -v `pwd`:/home/axom/axom $(Compiler_ImageName) chown -R axom /home/axom
docker run --rm -v `pwd`:/home/axom/axom -e TEST_TARGET -e COMPILER -e DO_BUILD -e DO_TEST -e DO_CLEAN -e HOST_CONFIG -e CMAKE_EXTRA_FLAGS $(Compiler_ImageName) ./axom/scripts/azure-pipelines/linux-build_and_test.sh
condition: eq( variables['Agent.OS'], 'Linux')
displayName: '$(TEST_TARGET) Build & Test'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'cTest'
testResultsFiles: '**/Test.xml'
testRunTitle: '$(TEST_TARGET) Tests'
failTaskOnFailedTests: true

0 comments on commit 38c0d74

Please sign in to comment.