Skip to content

Release version 1.3.0

Compare
Choose a tag to compare
@kris-rowe kris-rowe released this 01 Jun 03:44
· 113 commits to main since this release
11552d0

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!

Full Changelog: v1.2.0...v1.3.0