Releases: arrayfire/arrayfire
Second Bugfix Release for v3.3
v3.3.2
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.3.2.tar.bz2
Improvements
- Family of [Sort](ref sort_mat) functions now support
higher order dimensions. - Improved performance of batched sort on dim 0 for all [Sort](ref sort_mat) functions.
- [Median](ref stat_func_median) now also supports higher order dimensions.
Bug Fixes
- Fixes to error handling in C++ API for binary functions.
- Fixes to external OpenCL context management.
- Fixes to JPEG_GREYSCALE for FreeImage versions <= 3.154.
- Fixed for non-float inputs to \ref af::rgb2gray().
Build
- Disable CPU Async when building with GCC < 4.8.4.
- Add option to disable CPUID from CMake.
- More verbose message when CUDA Compute Detection fails.
- Print message to use CUDA library stub
from CUDA Toolkit if CUDA Library is not found from default paths. - Build Fixes on Windows.
- For compiling tests our of source.
- For compiling ArrayFire with static MKL.
- Exclude <sys/sysctl.h> when building on GNU Hurd.
- Add manual CMake options to build DEB and RPM packages.
Documentation
- Fixed documentation for \ref af::replace().
- Fixed images in [Using on OSX](ref using_on_osx) page.
Installer
- Linux x64 installers will now be compiled with GCC 4.9.2.
- OSX installer gives better error messages on brew failures and
now includes link to Fixing OS X Installer Failures
for brew installation failures.
First Bugfix Release for v3.3
v3.3.1
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.3.1.tar.bz2
Bug Fixes
- Fixes to \ref af::array::device()
- CPU Backend: evaluate arrays
before returning pointer with asynchronous calls in CPU backend. - OpenCL Backend: fix segfaults
when requested for device pointers on empty arrays.
- CPU Backend: evaluate arrays
- Fixed \ref af::array::operator%() from using rem to mod.
- Fixed array destruction
when backends are switched in Unified API. - Fixed indexing after
\ref af::moddims() is called. - Fixes FFT calls for CUDA and OpenCL backends when used on
multiple devices. - Fixed unresolved external
for some functions from \ref af::array::array_proxy class.
Build
- CMake compiles files in alphabetical order.
- CMake fixes for BLAS and LAPACK on some Linux distributions.
Improvements
- Fixed OpenCL FFT performance regression.
- \ref af::array::device() on OpenCL backend returns
cl_mem
instead of(void*)cl::Buffer*
. - In Unified backend, load versioned libraries
at runtime.
Documentation
- Reorganized, cleaner README file.
- Replaced non-free lena image in assets with free-to-distribute lena image.
Feature Release v3.3.0
v3.3.0
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.3.0.tar.bz2
Major Updates
- CPU backend supports aysnchronous execution.
- Performance improvements to OpenCL BLAS and FFT functions.
- Improved performance of memory manager.
- Improvements to visualization functions.
- Improved sorted order for OpenCL devices.
- Integration with external OpenCL projects.
Features
- \ref af::getActiveBackend(): Returns the current backend being used.
- Scatter plot added to graphics.
- \ref af::transform() now supports perspective transformation matrices.
- \ref af::infoString(): Returns
af::info()
as a string. - \ref af::printMemInfo(): Print a table showing information about buffer from the memory manager
- The \ref AF_MEM_INFO macro prints numbers and total sizes of all buffers (requires including af/macros.h)
- \ref af::allocHost(): Allocates memory on host.
- \ref af::freeHost(): Frees host side memory allocated by arrayfire.
- OpenCL functions can now use CPU implementation.
- Currently limited to Unified Memory devices (CPU and On-board Graphics).
- Functions: af::matmul() and all [LAPACK](ref linalg_mat) functions.
- Takes advantage of optimized libraries such as MKL without doing memory copies.
- Use the environment variable
AF_OPENCL_CPU_OFFLOAD=1
to take advantage of this feature.
- Functions specific to OpenCL backend.
- \ref afcl::addDevice(): Adds an external device and context to ArrayFire's device manager.
- \ref afcl::deleteDevice(): Removes an external device and context from ArrayFire's device manager.
- \ref afcl::setDevice(): Sets an external device and context from ArrayFire's device manager.
- \ref afcl::getDeviceType(): Gets the device type of the current device.
- \ref afcl::getPlatform(): Gets the platform of the current device.
- \ref af::createStridedArray() allows array creation user-defined strides and device pointer.
- Expose functions that provide information
about memory layout of Arrays.- \ref af::getStrides(): Gets the strides for each dimension of the array.
- \ref af::getOffset(): Gets the offsets for each dimension of the array.
- \ref af::getRawPtr(): Gets raw pointer to the location of the array on device.
- \ref af::isLinear(): Returns true if all elements in the array are contiguous.
- \ref af::isOwner(): Returns true if the array owns the raw pointer, false if it is a sub-array.
- \ref af::getStrides(): Gets the strides of the array.
- \ref af::getStrides(): Gets the strides of the array.
- \ref af::getDeviceId(): Gets the device id on which the array resides.
- \ref af::isImageIOAvailable(): Returns true if ArrayFire was compiled with Freeimage enabled
- \ref af::isLAPACKAvailable(): Returns true if ArrayFire was compiled with LAPACK functions enabled
Bug Fixes
- Fixed errors when using 3D / 4D arrays in select and replace
- Fixed JIT errors on AMD devices for OpenCL backend.
- Fixed imageio bugs for 16 bit images.
- Fixed bugs when loading and storing images natively.
- Fixed bug in FFT for NVIDIA GPUs when using OpenCL backend.
- Fixed bug when using external context with OpenCL backend.
- Fixed memory leak in \ref af_median_all().
- Fixed memory leaks and performance in graphics functions.
- Fixed bugs when indexing followed by moddims.
- \ref af_get_revision() now returns actual commit rather than AF_REVISION.
- Fixed releasing arrays when using different backends.
- OS X OpenCL: [LAPACK functions](ref linalg_mat) on CPU devices use OpenCL offload (previously threw errors).
- Add support for 32-bit integer image types in Image IO.
- Fixed set operations for row vectors
- Fixed bugs in \ref af::meanShift() and af::orb().
Improvements
- Optionally offload BLAS and LAPACK functions to CPU implementations to improve performance.
- Performance improvements to the memory manager.
- Error messages are now more detailed.
- Improved sorted order for OpenCL devices.
- JIT heuristics can now be tweaked using environment variables. See
[Environment Variables](ref configuring_environment) tutorial. - Add
BUILD_<BACKEND>
options to examples and tests
to toggle backends when compiling independently.
Examples
- New visualization [example simulating gravity](ref graphics/gravity_sim.cpp).
Build
- Support for Intel
icc
compiler - Support to compile with Intel MKL as a BLAS and LAPACK provider
- Tests are now available for building as standalone (like examples)
- Tests can now be built as a single file for each backend
- Better handling of NONFREE build options
- Searching for GLEW in CMake default paths
- Fixes for compiling with MKL on OSX.
Installers
- Improvements to OSX Installer
- CMake config files are now installed with libraries
- Independent options for installing examples and documentation components
Deprecations
af_lock_device_arr
is now deprecated to be removed in v4.0.0. Use \ref af_lock_array() instead.af_unlock_device_arr
is now deprecated to be removed in v4.0.0. use \ref af_unlock_array() instead.
Documentation
- Fixes to documentation for \ref matchTemplate().
- Improved documentation for deviceInfo.
- Fixes to documentation for \ref exp().
Known Issues
- Solve OpenCL fails on NVIDIA Maxwell devices
for f32 and c32 when M > N and K % 4 is 1 or 2.
Pre-release of v3.3
Merge pull request #1260 from pavanky/where_fix BUGFIX: Fixing error in where for OpenCL backend
Second bugfix release for 3.2
Release Notes {#releasenotes}
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.2.2.tar.bz2
v3.2.2
Bug Fixes
- Fixed memory leak in
CUDA Random number generators - Fixed bug in
af::select() and af::replace() tests - Fixed exception
thrown when printing empty arrays with af::print() - Fixed bug in CPU
random number generation. Changed the generator to
mt19937 - Fixed exception handling (internal)
- Exceptions
now show function, short file name and line number - Added AF_RETURN_ERROR
macro to handle returning errors. - Removed THROW macro, and renamed AF_THROW_MSG to AF_THROW_ERR.
- Exceptions
- Fixed bug
in \ref af::identity() that may have affected CUDA Compute 5.2 cards
Build
- Added a MIN_BUILD_TIME
option to build with minimum optimization compiler flags resulting in faster
compile times - Fixed issue in CBLAS
detection by CMake - Fixed tests failing for builds without optional components
FreeImage and
LAPACK - Added a test
for unified backend - Only info and backend tests
are now built for unified backend - Sort tests
execution alphabetically - Fixed compilation flags and errors in tests and examples
- Moved AF_REVISION and AF_COMPILER_STR
into src/backend. This is because as revision is updated with every commit,
entire ArrayFire would have to be rebuilt in the old code.- v3.3 will add a af_get_revision() function to get the revision string.
- Clean up examples
- Remove getchar for Windows (this will be handled by the installer)
- Other miscellaneous code cleanup
- Fixed bug in [plot3.cpp](ref graphics/plot3.cpp) example
- Rename clBLAS/clFFT
external project suffix from external -> ext - Add OpenBLAS as a
lapack/lapacke alternative
Improvements
- Added \ref AF_MEM_INFO macro to print memory info from ArrayFire's memory
manager (cross issue) - Added additional paths
for searching forlibaf*
for Unified backend on unix-style OS.- Note: This still requires dependencies such as forge, CUDA, NVVM etc to be
inLD_LIBRARY_PATH
as described in [Unified Backend](ref unifiedbackend)
- Note: This still requires dependencies such as forge, CUDA, NVVM etc to be
- Create streams
for devices only when required in CUDA Backend
Documentation
- Hide scrollbars
appearing for pre and code styles - Fix documentation for af::replace
- Add code sample
for converting the output of af::getAvailableBackends() into bools - Minor fixes in documentation
First bugfix release for 3.2
Release Notes {#releasenotes}
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.2.1.tar.bz2
v3.2.1
Bug Fixes
- Fixed bug in homography()
- Fixed bug in behavior
of af::array::device() - Fixed bug when
indexing with span along trailing dimension - Fixed bug when
indexing in [GFor](ref gfor) - Fixed bug in CPU
information fetching - Fixed compilation bug
in unified backend caused by missing link library - Add missing symbol for
af_draw_surface()
Build
- Tests can now be used as a standalone project
- Tests can now be built using pre-compiled libraries
- Similar to how the examples are built
- The install target now installs the examples source irrespective of the
BUILD_EXAMPLES value- Examples are not built if BUILD_EXAMPLES is off
Documentation
- HTML documentation is now built and installed
in docs/html - Added documentation for \ref af::seq class
- Updated Matrix Manipulation tutorial
- Examples list is now generated by CMake
- Examples are now listed as dir/example.cpp
- Removed dummy groups used for indexing documentation (affcted doxygen < 1.8.9)
Feature Release v3.2.0
Release Notes
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.2.0.tar.bz2
Major Updates
- Added Unified backend
- Allows switching backends at runtime
- Read [Unified Backend](ref unifiedbackend) for more.
- Support for 16-bit integers (\ref s16 and \ref u16)
- All functions that support 32-bit interger types (\ref s32, \ref u32),
now also support 16-bit interger types
- All functions that support 32-bit interger types (\ref s32, \ref u32),
Function Additions
- Unified Backend
- \ref setBackend() - Sets a backend as active
- \ref getBackendCount() - Gets the number of backends available for use
- \ref getAvailableBackends() - Returns information about available backends
- \ref getBackendId() - Gets the backend enum for an array
- Vision
- \ref homography() - Homography estimation
- \ref gloh() - GLOH Descriptor for SIFT
- Image Processing
- \ref loadImageNative() - Load an image as native data without modification
- \ref saveImageNative() - Save an image without modifying data or type
- Graphics
- \ref af::Window::plot3() - 3-dimensional line plot
- \ref af::Window::surface() - 3-dimensional curve plot
- Indexing
- \ref af_create_indexers()
- \ref af_set_array_indexer()
- \ref af_set_seq_indexer()
- \ref af_set_seq_param_indexer()
- \ref af_release_indexers()
- CUDA Backend Specific
- \ref setNativeId() - Set the CUDA device with given native id as active
- ArrayFire uses a modified order for devices. The native id for a
device can be retreived usingnvidia-smi
- ArrayFire uses a modified order for devices. The native id for a
- \ref setNativeId() - Set the CUDA device with given native id as active
- OpenCL Backend Specific
- \ref setDeviceId() - Set the OpenCL device using the
clDeviceId
- \ref setDeviceId() - Set the OpenCL device using the
Other Improvements
- Added \ref c32 and \ref c64 support for \ref isNaN(), \ref isInf() and \ref iszero()
- Added CPU information for
x86
andx86_64
architectures in CPU backend's \ref info() - Batch support for \ref approx1() and \ref approx2()
- Now can be used with gfor as well
- Added \ref s64 and \ref u64 support to:
- \ref sort() (along with sort index and sort by key)
- \ref setUnique(), \ref setUnion(), \ref setIntersect()
- \ref convolve() and \ref fftConvolve()
- \ref histogram() and \ref histEqual()
- \ref lookup()
- \ref mean()
- Added \ref AF_MSG macro
Build Improvements
- Submodules update is now automatically called if not cloned recursively
- Fixes for compilation on Visual Studio 2015
- Option to use fallback to CPU LAPACK
for linear algebra functions in case of CUDA 6.5 or older versions.
Bug Fixes
- Fixed memory leak in \ref susan()
- Fixed failing test
in \ref lower() and \ref upper() for CUDA compute 53 - Fixed bug in CUDA for indexing out of bounds
- Fixed dims check in \ref iota()
- Fixed out-of-bounds access in \ref sift()
- Fixed memory allocation in \ref fast() OpenCL
- Fixed memory leak in image I/O functions
- \ref dog() now returns float-point type arrays
Documentation Updates
- Improved tutorials documentation
- More detailed Using on [Linux](ref using_on_windows), [OSX](ref using_on_windows),
[Windows](ref using_on_windows) pages.
- More detailed Using on [Linux](ref using_on_windows), [OSX](ref using_on_windows),
- Added return type information for functions that return different type
arrays
New Examples
- Graphics
- [Plot3](ref plot3.cpp)
- [Surface](ref surface.cpp)
- [Shallow Water Equation](ref swe.cpp)
- [Basic](ref basic.cpp) as a Unified backend example
Installers
- All installers now include the Unified backend and corresponding CMake files
- Visual Studio projects include Unified in the Platform Configurations
- Added installer for Jetson TX1
- SIFT and GLOH do not ship with the installers as SIFT is protected by
patents that do not allow commercial distribution without licensing.
Final bugfix release for 3.1
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.1.3.tar.bz2
Bug Fixes
- Fixed bugs in various OpenCL kernels without offset additions
- Remove ARCH_32 and ARCH_64 flags
- Fix missing symbols when freeimage is not found
- Use CUDA driver version for Windows
- Improvements to SIFT
- Fixed memory leak in median
- Fixes for Windows compilation when not using MKL #1047
- Fixed for building without LAPACK
Other
- Documentation: Fixed documentation for select and replace
- Documentation: Fixed documentation for af_isnan
Second bugfix release for 3.1
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.1.2.tar.bz2
Bug Fixes
- Fixed bug in assign that was causing test to fail
- Fixed bug in convolve. Frequency condition now depends on kernel size only
- Fixed bug in indexed reductions for complex type in OpenCL backend
- Fixed bug in kernel name generation in ireduce for OpenCL backend
- Fixed non-linear to linear indices in ireduce
- Fixed bug in reductions for small arrays
- Fixed bug in histogram for indexed arrays
- Fixed compiler error CPUID for non-compliant devices
- Fixed failing tests on i386 platforms
- Add missing AFAPI
Other
- Documentation: Added missing examples and other corrections
- Documentation: Fixed warnings in documentation building
- Installers: Send error messages to log file in OSX Installer
First bugfix release for 3.1
The source code with submodules can be downloaded directly from the following link:
http://arrayfire.com/arrayfire_source/arrayfire-full-3.1.1.tar.bz2
Installers
- CUDA backend now depends on CUDA 7.5 toolkit
- OpenCL backend now require OpenCL 1.2 or greater
Bug Fixes
Build
cmake
now includesPKG_CONFIG
in the search path for CBLAS and LAPACKE libraries- heston_model.cpp example now builds with the default ArrayFire cmake files after installation
Other
- Fixed bug in image_editing.cpp