Releases: libocca/occa
v1.0.6
⚠️ Breaking Changes
-
[4199d8f] Removed
occa::cuda::getMappedPtr
andocca::opencl::getMappedPtr
and replaced them withocca::memory::ptr("mapped: true")
-
[4199d8f] Allocating mapped/pinned memory (CUDA, OpenCL)
It was too verbose and not as flexible to pass
cuda: { mapped: true } opencl: { mapped: true }
It's now the same for both CUDA and OpenCL
mapped: true
-
[4199d8f] Allocating unified memory (CUDA)
The driver API uses the method
cuMemAllocManaged
so the prop was named accordinglycuda: { managed: true }
However, most users know this feature as unified memory so we're switching the prop name to
unified
.
Similar to mapped allocation, it has been shortened tounified: true
C
- [1f513fc]
occaMemoryPtr(occaMemory)
→occaMemoryPtr(occaMemory, occaProperties)
⭐️ Features
-
[4199d8f] Added
occa::memory::ptr(occa::properties)
-
[abc3bea] Added
#pragma occa attributes
option#pragma occa attributes @kernel void addVectors(const int entries, const float *a, const float *b, float *ab) { #pragma occa attributes @tile(16, @outer, @inner) for (int i = 0; i < entries; ++i) { ab[i] = a[i] + b[i]; } }
↓
@kernel void addVectors(const int entries, const float *a, const float *b, float *ab) { for (int i = 0; i < entries; ++i; @tile(16, @outer, @inner)) { ab[i] = a[i] + b[i]; } }
🐛 Bugs Fixed
v1.0.5
⚠️ Breaking Changes
C++
- [e529137] Removed
occa::getKernelProperties()
- [d88218a] For UVA pointers:
occa::free
→occa::freeUvaPtr
C
- [6e895de]
occaDeviceUmalloc
→occaDeviceUMalloc
- [6e895de]
occaWaitFor
→occaWaitForTag
- [6e895de]
occaDeviceWaitFor
→occaDeviceWaitForTag
- [6e895de]
occaTimeBetween
→occaTimeBetweenTags
- [6e895de]
occaDeviceTimeBetween
→occaDeviceTimeBetweenTags
⭐ Features
Coverage (57.9% → 70.2%!)
Part of code | % Coverage Change | LOC Coverage Change |
---|---|---|
Headers | 74.7% → 91.5% (+16.8% ) |
714 → 1374 (+660 ) |
C API | 24.1% → 99.4% (+75.3% ) |
139 → 655 (+516 ) |
C++ API | 58.0% → 67.0% (+ 9.0% ) |
8347 → 10374 (+2027 ) |
IO Tooling | 62.2% → 97.3% (+35.1% ) |
225 → 326 (+101 ) |
General Tooling | 51.0% → 63.7% (+12.7% ) |
1249 → 1524 (+275 ) |
OKL Parser | 61.4% → 63.7% (+ 2.3% ) |
6479 → 7063 (+584 ) |
C++
- [0effcc1] Added
occa::exception
C
- [9c6e5ea] Added
occaPropertiesHas
- [6b06820] Added
occaFreeUvaPtr
- [90cf5d5] Added
occaUndefined
andoccaIsUndefined
- [87e7000] Added
occaIsDefault
Misc
-
[e529137][#154] CLI options that take arguments can be passed as:
-Dfoo=1
→-D foo=3
-
[3707f9e] Examples have arg parsing to make them more interactive
-
[dae5308]
occa::sys::rmrf
cannot delete any path that has less than 2 parent directories (e.g./
or/usr/bin
) without:occa::settings()["options/safe-rmrf"] = false;
🐛 Bugs Fixed
- [855e967] Exclusive array was set at the end, not beginning
- [5df9319] OpenMP was using Serial parser
- [63c1258] String merging now works between newlines
- [ff4310d] Fixed bug using occa::memcpy with 2 non-occa pointers
- [dae5308] Failed kernel compilations now clear the cache directory
- [dae5308] Non-conforming OKL kernels now properly fail
v1.0.4
⚠️ Breaking Changes
Memory
- 405fb35 Renamed
occa::opencl::getCLMappedPtr
→occa::opencl::getMappedPtr
⭐ Features
Kernel
- 1cc0da8 Kernels can be run with 0 arguments
Memory
- 405fb35 Added
getMappedPtr
for OpenCL and CUDA
OKL
- 5d5865d [:tada: @noelchalmers] Added HIP Backend
🐛 Bugs Fixed
- fbcc86f Fixed switch printing
- e0eeaf1 elifStatement had extra
popUp
- 6f4f5c1 [:tada: @jdahm] XL compiler missing header
🎉 Contributors
v1.0.3
⚠️ Breaking Changes
Mode Properties
[d1fd6e0, 8691434] In order to standardize key names in properties
, we're moving to snake_case
which is a valid JSON5 identifier for JSON Objects. That way short-hand notations such as
{ mode: 'CUDA', device_id: 0 }
are still valid
Changes:
deviceID
→device_id
platformID
→platform_id
threadCount
→threads
pinnedCores
→pinned_cores
compilerFlags
→compiler_flags
compilerEnvScripts
→compiler_env_scripts
⭐️ Features
CLI
[7055d92] Added -I/--include-path
and -D/--define
to occa transform
and occa compile
[a7c578c] Added -v/--verbose
to add transform information in comments
🐛 Bugs Fixed
Parser
[80b9972] oklForStatements
check the iterator's base type
🎉 Contributors
v1.0.2
⚠️ Breaking Changes
JSON
[70c9ddf] Swapped dump
and toString
⭐️ Features
OKL
[6e760d2] Added {2,3,4} (such as double2
, double3
, double4
)
[f5cf04b] restrict
-> @restrict
Sys
[#145, 3fc6753] Added dlerror
messages to dlopen
and dlsym
IO
[cb5eec7] Fixed ~/
expansion
CLI
[d3bec39, 9d26399] Added compile and translate options to occa
🐛 Bugs Fixed
Parser
[#133, fd248c6] Added vartype nodes for parenCast expressions
[#136, #140, e672972] Added type expansion to get around issue
[#147, f8a4ac8] Fixed statement attributes getting overridden
[db2f263] withLauncher success also depends on the host
🎉 Contributors
v1.0.1
v1.0.0
v1.0.0-alpha.6
Checkout the v0.2 -> v1.0 Porting Guide
Bug Fixes
- C++
- #99
kernel::free()
removes itself from the device kernel cache
- #99
v1.0.0-alpha.5
Checkout the v0.2 -> v1.0 Porting Guide
Change Log
- C++
- 7b5dad1 Added mode-specific properties. For example, only when running in
OpenCL
mode the kernel compilation will be verbose:
{ kernel: { verbose: false }, mode: { OpenCL: { kernel: { verbose: true }, } } }
- 57746d5 Added unicode parsing to
occa::json
(still keeps it as\uXXXX
for the user to parse)
- 7b5dad1 Added mode-specific properties. For example, only when running in