Skip to content

Releases: arrayfire/arrayfire

Feature Release

28 Aug 19:40
Compare
Choose a tag to compare

The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.1.0.tar.bz2

Release Notes {#releasenotes}

v3.1.0

Function Additions

  • Computer Vision Functions
    • nearestNeighbour() - Nearest Neighbour with SAD, SSD and SHD distances
    • harris() - Harris Corner Detector
    • susan() - Susan Corner Detector
    • sift() - Scale Invariant Feature Transform (SIFT)
      • Method and apparatus for identifying scale invariant features"
        "in an image and use of same for locating an object in an image," David"
        "G. Lowe, US Patent 6,711,293 (March 23, 2004). Provisional application"
        "filed March 8, 1999. Asignee: The University of British Columbia. For"
        "further details, contact David Lowe (lowe@cs.ubc.ca) or the"
        "University-Industry Liaison Office of the University of British"
        "Columbia.")
      • SIFT is available for compiling but does not ship with ArrayFire
        hosted installers/pre-built libraries
    • dog() - Difference of Gaussians
  • Image Processing Functions
    • ycbcr2rgb() and rgb2ycbcr() - RGB <->YCbCr color space conversion
    • wrap() and unwrap() Wrap and Unwrap
    • sat() - Summed Area Tables
    • loadImageMem() and saveImageMem() - Load and Save images to/from memory
      • af_image_format - Added imageFormat (af_image_format) enum
  • Array & Data Handling
    • copy() - Copy
    • array::lock() and array::unlock() - Lock and Unlock
    • select() and replace() - Select and Replace
    • Get array reference count (af_get_data_ref_count)
  • Signal Processing
    • fftInPlace() - 1D in place FFT
    • fft2InPlace() - 2D in place FFT
    • fft3InPlace() - 3D in place FFT
    • ifftInPlace() - 1D in place Inverse FFT
    • ifft2InPlace() - 2D in place Inverse FFT
    • ifft3InPlace() - 3D in place Inverse FFT
    • fftR2C() - Real to complex FFT
    • fftC2R() - Complex to Real FFT
  • Linear Algebra
    • svd() and svdInPlace() - Singular Value Decomposition
  • Other operations
    • sigmoid() - Sigmoid
    • Sum (with option to replace NaN values)
    • Product (with option to replace NaN values)
  • Graphics
    • Window::setSize() - Window resizing using Forge API
  • Utility
    • Allow users to set print precision (print, af_print_array_gen)
    • saveArray() and readArray() - Stream arrays to binary files
    • toString() - toString function returns the array and data as a string
  • CUDA specific functionality
    • getStream() - Returns default CUDA stream ArrayFire uses for the current device
    • getNativeId() - Returns native id of the CUDA device

Improvements

  • dot
    • Allow complex inputs with conjugate option
  • AF_INTERP_LOWER interpolation
    • For resize, rotate and transform based functions
  • 64-bit integer support
    • For reductions, random, iota, range, diff1, diff2, accum, join, shift
      and tile
  • convolve
    • Support for non-overlapping batched convolutions
  • Complex Arrays
    • Fix binary ops on complex inputs of mixed types
    • Complex type support for exp
  • tile
    • Performance improvements by using JIT when possible.
  • Add AF_API_VERSION macro
    • Allows disabling of API to maintain consistency with previous versions
  • Other Performance Improvements
    • Use reference counting to reduce unnecessary copies
  • CPU Backend
    • Device properties for CPU
    • Improved performance when all buffers are indexed linearly
  • CUDA Backend
    • Use streams in CUDA (no longer using default stream)
    • Using async cudaMem ops
    • Add 64-bit integer support for JIT functions
    • Performance improvements for CUDA JIT for non-linear 3D and 4D arrays
  • OpenCL Backend
    • Improve compilation times for OpenCL backend
    • Performance improvements for non-linear JIT kernels on OpenCL
    • Improved shared memory load/store in many OpenCL kernels (PR 933)
    • Using cl.hpp v1.2.7

Bug Fixes

  • Common
    • Fix compatibility of c32/c64 arrays when operating with scalars
    • Fix median for all values of an array
    • Fix double free issue when indexing (30cbbc7)
    • Fix bug in rank
    • Fix default values for scale throwing exception
    • Fix conjg raising exception on real input
    • Fix bug when using conjugate transpose for vector input
    • Fix issue with const input for array_proxy::get()
  • CPU Backend
    • Fix randn generating same sequence for multiple calls
    • Fix setSeed for randu
    • Fix casting to and from complex
    • Check NULL values when allocating memory
    • Fix offset issue for CPU element-wise operations

The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.1.0.tar.bz2

New Examples

  • Match Template
  • Susan
  • Heston Model (contributed by Michael Nowotny)

Distribution Changes

  • Fixed automatic detection of ArrayFire when using with CMake in the Windows
    Installer
  • Compiling ArrayFire with FreeImage as a static library for Linux x86
    installers

Known Issues

  • OpenBlas can cause issues with QR factorization in CPU backend
  • FreeImage older than 3.10 can cause issues with loadImageMem and
    saveImageMem
  • OpenCL backend issues on OSX
    • AMD GPUs not supported because of driver issues
    • Intel CPUs not supported
    • Linear algebra functions do not work on Intel GPUs.
  • Stability and correctness issues with open source OpenCL implementations such as Beignet, GalliumCompute.

Minor bug fixes

26 Jun 19:42
Compare
Choose a tag to compare

The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.0.2.tar.bz2

Bug Fixes

  • Added missing symbols from the compatible API
  • Fixed a bug affecting corner rows and elements in grad()
  • Fixed linear interpolation bugs affecting large images in the following:
    • approx1()
    • approx2()
    • resize()
    • rotate()
    • scale()
    • skew()
    • transform()

Documentation

  • Added missing documentation for constant()
  • Added missing documentation for array::scalar()
  • Added supported input types for functions in arith.h

Graphics bug fixes and improved installers

13 Jun 02:59
Compare
Choose a tag to compare

The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.0.1.tar.bz2

Bug Fixes

  • Fixed header to work in Visual Studio 2015
  • Fixed a bug in batched mode for FFT based convolutions
  • Fixed graphics issues on OSX
  • Fixed various bugs in visualization functions

Other improvements

  • Improved fractal example
  • New OSX installer
  • Improved Windows installer
    • Default install path has been changed
  • Fixed bug in machine learning examples

First stable release since ArrayFire went open source.

02 Jun 15:42
Compare
Choose a tag to compare

v3.0.0

The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.0.0.tar.bz2

Major Updates

  • ArrayFire is now open source
  • Major changes to the visualization library
  • Introducing handle based C API
  • New backend: CPU fallback available for systems without GPUs
  • Dense linear algebra functions available for all backends
  • Support for 64 bit integers

Function Additions

  • Data generation functions
    • range()
    • iota()
  • Computer Vision Algorithms
    • features()
      • A data structure to hold features
    • fast()
      • FAST feature detector
    • orb()
      • ORB A feature descriptor extractor
  • Image Processing
    • convolve1(), convolve2(), convolve3()
      • Specialized versions of convolve() to enable better batch support
    • fftconvolve1(), fftconvolve2(), fftconvolve3()
      • Convolutions in frequency domain to support larger kernel sizes
    • dft(), idft()
      • Unified functions for calling multi dimensional ffts.
    • matchTemplate()
      • Match a kernel in an image
    • sobel()
      • Get sobel gradients of an image
    • rgb2hsv(), hsv2rgb(), rgb2gray(), gray2rgb()
      • Explicit function calls to colorspace conversions
    • erode3d(), dilate3d()
      • Explicit erode and dilate calls for image morphing
  • Linear Algebra
    • matmulNT(), matmulTN(), matmulTT()
      • Specialized versions of matmul() for transposed inputs
    • luInPlace(), choleskyInPlace(), qrInPlace()
      • In place factorizations to improve memory requirements
    • solveLU()
      • Specialized solve routines to improve performance
    • OpenCL backend now Linear Algebra functions
  • Other functions
    • lookup() - lookup indices from a table
    • batchFunc() - helper function to perform batch operations
  • Visualization functions
    • Support for multiple windows
    • window.hist()
      • Visualize the output of the histogram
  • C API
    • Removed old pointer based C API
    • Introducing handle base C API
    • Just In Time compilation available in C API
    • C API has feature parity with C++ API
    • bessel functions removed
    • cross product functions removed
    • Kronecker product functions removed

Performance Improvements

  • Improvements across the board for OpenCL backend

API Changes

  • print is now af_print()
  • seq(): The step parameter is now the third input
    • seq(start, step, end) changed to seq(start, end, step)
  • gfor(): The iterator now needs to be seq()

Deprecated Function APIs

Deprecated APIs are in af/compatible.h

  • devicecount() changed to getDeviceCount()
  • deviceset() changed to setDevice()
  • deviceget() changed to getDevice()
  • loadimage() changed to loadImage()
  • saveimage() changed to saveImage()
  • gaussiankernel() changed to gaussianKernel()
  • alltrue() changed to allTrue()
  • anytrue() changed to anyTrue()
  • setunique() changed to setUnique()
  • setunion() changed to setUnion()
  • setintersect() changed to setIntersect()
  • histequal() changed to histEqual()
  • colorspace() changed to colorSpace()
  • filter() deprecated. Use convolve1() and convolve2()
  • mul() changed to product()
  • deviceprop() changed to deviceProp()

Known Issues

  • OpenCL backend issues on OSX
    • AMD GPUs not supported because of driver issues
    • Intel CPUs not supported
    • Linear algebra functions do not work on Intel GPUs.
  • Stability and correctness issues with open source OpenCL implementations such as Beignet, GalliumCompute.