Occa Versions Save

Portable and vendor neutral framework for parallel programming on heterogeneous platforms.

v1.0.6

5 years ago

⚠️ Breaking Changes

  • [4199d8f7a6c2f1767262b8dfbfa21669e5fc4914] Removed occa::cuda::getMappedPtr and occa::opencl::getMappedPtr and replaced them with

    occa::memory::ptr("mapped: true")
    
  • [4199d8f7a6c2f1767262b8dfbfa21669e5fc4914] 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
    
  • [4199d8f7a6c2f1767262b8dfbfa21669e5fc4914] Allocating unified memory (CUDA)

    The driver API uses the method cuMemAllocManaged so the prop was named accordingly

    cuda: { 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 to

    unified: true
    

C

  • [1f513fc1194d1a529f04cd07c92e106a74cab07e] occaMemoryPtr(occaMemory)occaMemoryPtr(occaMemory, occaProperties)

⭐️ Features

  • [4199d8f7a6c2f1767262b8dfbfa21669e5fc4914] Added occa::memory::ptr(occa::properties)

  • [abc3bea7f4a4b414c5921766bdd84f629b225aec] 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

  • [b41ed3477ca9fa946de21ea62bce11ad38a98afb] UVA range checks had incorrect inclusive end
  • [1f513fc1194d1a529f04cd07c92e106a74cab07e] Preprocessor treats undefined identifiers as 0 (Thanks @pdhahn!)

v1.0.5

5 years ago

:warning: Breaking Changes

C++

  • [e529137738bee329413a39dea6f8f0160e8f5a1a] Removed occa::getKernelProperties()
  • [d88218a726624828d36681e4bc92577da82188d9] For UVA pointers:occa::freeocca::freeUvaPtr

C

  • [6e895de5507d50ede0c82a1a671905af3f9c9dbe] occaDeviceUmallococcaDeviceUMalloc
  • [6e895de5507d50ede0c82a1a671905af3f9c9dbe] occaWaitForoccaWaitForTag
  • [6e895de5507d50ede0c82a1a671905af3f9c9dbe] occaDeviceWaitForoccaDeviceWaitForTag
  • [6e895de5507d50ede0c82a1a671905af3f9c9dbe] occaTimeBetweenoccaTimeBetweenTags
  • [6e895de5507d50ede0c82a1a671905af3f9c9dbe] occaDeviceTimeBetweenoccaDeviceTimeBetweenTags

:star: 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%) 834710374 (+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++

  • [0effcc1c8ed173d72a99078d9971b9eafafec4f4] Added occa::exception

C

  • [9c6e5ea61027198889abe4c2e201e40bbd759ef6] Added occaPropertiesHas
  • [6b06820cf963b7dfeeee81e7fc02d78fad264ada] Added occaFreeUvaPtr
  • [90cf5d5407b0eaa20ab25132f065f37213aab361] Added occaUndefined and occaIsUndefined
  • [87e700032400038460be449c091a57a865a73b26] Added occaIsDefault

Misc

  • [e529137738bee329413a39dea6f8f0160e8f5a1a][#154] CLI options that take arguments can be passed as: -Dfoo=1-D foo=3

  • [3707f9ee4b0e61ba1eefc24bfb82405c075dbe67] Examples have arg parsing to make them more interactive

  • [dae53084bed303c2fe7999f18f0026aae6bb97f0] 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;
    

:bug: Bugs Fixed

  • [855e9679d570b7548f7853ff7f4e4eb3d0b85391] Exclusive array was set at the end, not beginning
  • [5df9319770cc38874a995d9ba85f9132d0976b7e] OpenMP was using Serial parser
  • [63c125821ec4a2228ab7ad342c2f846262eb17ee] String merging now works between newlines
  • [ff4310d09b6cbf764e84751fc458767b44470229] Fixed bug using occa::memcpy with 2 non-occa pointers
  • [dae53084bed303c2fe7999f18f0026aae6bb97f0] Failed kernel compilations now clear the cache directory
  • [dae53084bed303c2fe7999f18f0026aae6bb97f0] Non-conforming OKL kernels now properly fail

v1.0.4

5 years ago

:warning: Breaking Changes

Memory

  • 405fb3508a136e2e69a3ab6995e7df66c7d103ef Renamed occa::opencl::getCLMappedPtrocca::opencl::getMappedPtr

:star: Features

Kernel

  • 1cc0da81d056ccd0829ac3b46f464ffd3c0633b7 Kernels can be run with 0 arguments

Memory

  • 405fb3508a136e2e69a3ab6995e7df66c7d103ef Added getMappedPtr for OpenCL and CUDA

OKL

  • 5d5865d0d20b7d6aa1d2595a2d88492de1a0993a [:tada: @noelchalmers] Added HIP Backend

:bug: Bugs Fixed

  • fbcc86fe075a720983e7041c141ab4c28a50f96c Fixed switch printing
  • e0eeaf1272e5c3e66ba21fb5e5d42351580d74a3 elifStatement had extra popUp
  • 6f4f5c1cf098d7436db11ecca5b0aa31a8e0d9d7 [:tada: @jdahm] XL compiler missing header

:tada: Contributors

@noelchalmers @jdahm

v1.0.3

5 years ago

⚠️ 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:

  • deviceIDdevice_id
  • platformIDplatform_id
  • threadCountthreads
  • pinnedCorespinned_cores
  • compilerFlagscompiler_flags
  • compilerEnvScriptscompiler_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

@pdhahn

v1.0.2

5 years ago

⚠️ Breaking Changes

JSON

[70c9ddf58f3de6d7635d2269ff0b0a51a87ab914] Swapped dump and toString

⭐️ Features

OKL

[6e760d23c008d5c686132369bb905b00ad5aa256] Added {2,3,4} (such as double2, double3, double4) [f5cf04b30d214c6cad1cbde13d9b66e7481bb983] restrict -> @restrict

Sys

[#145, 3fc6753ebf9aaf9e1890bc340957264ad254d0ed] Added dlerror messages to dlopen and dlsym

IO

[cb5eec725fe2c5e892a2d8e12a8fd3890f18068a] Fixed ~/ expansion

CLI

[d3bec390e9a7495e7bf513881932f347e2052fa7, 9d26399dc24aabff35ad13781198eb2f985da1a2] Added compile and translate options to occa

🐛 Bugs Fixed

Parser

[#133, fd248c62df1fca4a6ae91fcc8871ff34c9f13e0c] Added vartype nodes for parenCast expressions [#136, #140, e672972bba4e7b6337ec9fd04a9de9b6285f5089] Added type expansion to get around issue [#147, f8a4ac81f3fc7bd16a1b49d1d779deab2dd39f51] Fixed statement attributes getting overridden [db2f26361c6c72ac6a3cc4a05c516953c8b3a455] withLauncher success also depends on the host

🎉 Contributors

@jedbrown

v1.0.1

5 years ago

Bug Fixes

  • aa757b954eaeb4478cfe8f2c235d81524e20e6bc Dims on GPU modes weren't being set properly

Testing

  • 895bb70de59c1122b63b12f2d91edfc44b3b2bd4 Travis CI error logs cap at 4MB

v1.0.0-alpha.6

6 years ago

Checkout the v0.2 -> v1.0 Porting Guide

Bug Fixes

  • C++
    • #99 kernel::free() removes itself from the device kernel cache

v1.0.0-alpha.5

6 years ago

Checkout the v0.2 -> v1.0 Porting Guide

Change Log

  • C++
    • 7b5dad16dd3d96e44a9291d9323bdfa65990da3f 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 },
        }
      }
    }
    
    • 57746d5b5398e3f05efe4868444e593c8ad085f7 Added unicode parsing to occa::json (still keeps it as \uXXXX for the user to parse)

Bug Fixes

  • C++
    • #98 Setting OCCA_VERBOSE works
  • C
    • 2db622c480e439b4f60c9491260a1248261b0777 occaPtr fix

v1.0.0-alpha.4

6 years ago

Checkout the v0.2 -> v1.0 Porting Guide

Bug Fixes

  • C
    • 61fabfce11fdc6612774502597d557229528dfe1 Remove ambiguous call in some compilers