Release version 1.3.0
Features
CMake Package Files [#533]
OCCA now provides CMake package files which are configured during installation. These package files define an imported target, OCCA::libocca
, and look for all required dependencies.
For example, the CMakeLists.txt of downstream projects using OCCA would include
find_package(OCCA REQUIRED)
add_executable(downstream-app ...)
target_link_libraries(downstream-app PRIVATE OCCA::libocca)
add_library(downstream-lib ...)
target_link_libraries(downstream-lib PUBLIC OCCA::libocca)
In the case of a downstream library, linking OCCA using the PUBLIC specifier ensures that CMake will automatically forward OCCA's dependencies to applications which use the library.
Environment Module [#580]
During installation, the Env Modules file /modulefiles/occa is generated. When this module is loaded, paths to the installed bin, lib, and include directories are appended to environment variables such as PATH and LD_LIBRARY_PATH.
To use this modulefile, add the following line to your .modulerc file
module use -a <occa-install-prefix>/modulefiles
then call
module load occa
Non-blocking Streams [#498]
The CUDA and HIP backends now support the creation of non-blocking streams.
An example has been added demonstrating how to enable this feature.
Additionally, a new API has been added wrap native backend streams [#525]
Profiling and Debugging
An interface has been added for logging the memory high watermark. [#522]
OCCA preprocessor error messages have also been improved [#572]
OKL
A new attribute, @nobarrier
, prevents the automatic addition of barriers to @inner
loop blocks. [#544]
Kernel Loop Ranges [#531]
When @inner
loop ranges are known at compile-time, compiler optimization directives are added to translated kernel code for the CUDA, HIP, OpenCL, and SYCL backends.
If @inner
loop ranges are passed as a kernel argument, the OKL translator will not automatically add optimization directives. In this case, the attribute @max_inner_dims
can be used to achieve the same effect.
Dependency Changes
- The minimum version of CMake required is now v3.17 [#528]
Bugfixes
- Compilation on MacOS [#485]
- streamTag timings for OpenCL were corrected to give meaningful results [#518]
- Git ignore build dir if it's a symlink [#536]
- Use mpi_f08 module to fix Intel compiler warnings [#539]
- Use correct directory in run_examples script [#540]
- HIP compiler error and warnings [#547]
- Examples JSON [#549]
- Broken caching for "output" file [#554]
Contributors
OCCA is a community driven project that relies on the support of people like you. Thank you everyone who contributed to this release!
- @Luthaf
- @AljenU
- @deukhyun-cha
- @wjhorne
- @MalachiTimothyPhillips
- @stgeke
- @SFrijters
- @noelchalmers
- @kris-rowe
Full Changelog: v1.2.0...v1.3.0