Skip to content

Commit

Permalink
Merge pull request #1341 from arrayfire/hotfix-3.3.1
Browse files Browse the repository at this point in the history
Hotfix 3.3.1
  • Loading branch information
pavanky committed Mar 17, 2016
2 parents 5842ed2 + 1a5f265 commit f53efc3
Show file tree
Hide file tree
Showing 36 changed files with 689 additions and 451 deletions.
24 changes: 24 additions & 0 deletions .github/CITATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
If you redistribute ArrayFire, please follow the terms established in
[the license](../LICENSE). If you wish to cite ArrayFire in an academic
publication, please use the following reference:

Formatted:
```
Yalamanchili, P., Arshad, U., Mohammed, Z., Garigipati, P., Entschev, P.,
Kloppenborg, B., Malcolm, J. and Melonakos, J. (2015).
ArrayFire - A high performance software library for parallel computing with an
easy-to-use API. Atlanta: AccelerEyes. Retrieved from https://github.com/arrayfire/arrayfire
```

BibTeX:
```bibtex
@misc{Yalamanchili2015,
abstract = {ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its array based function set makes parallel programming simple. ArrayFire's multiple backends (CUDA, OpenCL and native CPU) make it platform independent and highly portable. A few lines of code in ArrayFire can replace dozens of lines of parallel computing code, saving you valuable time and lowering development costs.},
address = {Atlanta},
author = {Yalamanchili, Pavan and Arshad, Umar and Mohammed, Zakiuddin and Garigipati, Pradeep and Entschev, Peter and Kloppenborg, Brian and Malcolm, James and Melonakos, John},
publisher = {AccelerEyes},
title = {{ArrayFire - A high performance software library for parallel computing with an easy-to-use API}},
url = {https://github.com/arrayfire/arrayfire},
year = {2015}
}
```
19 changes: 12 additions & 7 deletions CMakeModules/FindCBLAS.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ MACRO(CHECK_ALL_LIBRARIES
_flags
_list
_include
_search_include,
_search_include
_libraries_work_check)
# This macro checks for the existence of the combination of fortran libraries
# given by _list. If the combination is found, this macro checks (using the
Expand Down Expand Up @@ -168,11 +168,6 @@ MACRO(CHECK_ALL_LIBRARIES
ENDIF(APPLE)
MARK_AS_ADVANCED(${_prefix}_${_library}_LIBRARY)

IF(${_prefix}_${_library}_LIBRARY)
GET_FILENAME_COMPONENT(_path ${${_prefix}_${_library}_LIBRARY} PATH)
LIST(APPEND _paths ${_path}/../include ${_path}/../../include ${CBLAS_ROOT_DIR}/include)
ENDIF(${_prefix}_${_library}_LIBRARY)

SET(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
SET(_libraries_work ${${_prefix}_${_library}_LIBRARY})
ENDIF(_libraries_work)
Expand All @@ -183,8 +178,17 @@ MACRO(CHECK_ALL_LIBRARIES
SET(_bug_libraries_work_check ${_libraries_work_check}) #CMAKE BUG!!! SHOULD NOT BE THAT

IF(_bug_search_include)
FIND_PATH(${_prefix}${_combined_name}_INCLUDE ${_include} ${_paths})
FIND_PATH(${_prefix}${_combined_name}_INCLUDE ${_include}
/opt/intel/mkl/include
/usr/include
/usr/local/include
/sw/include
/opt/local/include
PATH_SUFFIXES
openblas
)
MARK_AS_ADVANCED(${_prefix}${_combined_name}_INCLUDE)

IF(${_prefix}${_combined_name}_INCLUDE)
IF (_verbose)
MESSAGE(STATUS "Includes found")
Expand All @@ -194,6 +198,7 @@ MACRO(CHECK_ALL_LIBRARIES
ELSE(${_prefix}${_combined_name}_INCLUDE)
SET(_libraries_work FALSE)
ENDIF(${_prefix}${_combined_name}_INCLUDE)

ELSE(_bug_search_include)
SET(${_prefix}_INCLUDE_DIR)
SET(${_prefix}_INCLUDE_FILE ${_include})
Expand Down
2 changes: 2 additions & 0 deletions CMakeModules/FindLAPACKE.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ ELSE(PC_LAPACKE_FOUND)
/sw/include
/opt/local/include
DOC "LAPACKE Include Directory"
PATH_SUFFIXES
lapacke
)
ENDIF(LAPACKE_ROOT_DIR)
ENDIF(PC_LAPACKE_FOUND)
Expand Down
2 changes: 1 addition & 1 deletion CMakeModules/Version.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
SET(AF_VERSION_MAJOR "3")
SET(AF_VERSION_MINOR "3")
SET(AF_VERSION_PATCH "0")
SET(AF_VERSION_PATCH "1")

SET(AF_VERSION "${AF_VERSION_MAJOR}.${AF_VERSION_MINOR}.${AF_VERSION_PATCH}")
SET(AF_API_VERSION_CURRENT ${AF_VERSION_MAJOR}${AF_VERSION_MINOR})
Expand Down
2 changes: 1 addition & 1 deletion CMakeModules/build_clBLAS.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ENDIF()
ExternalProject_Add(
clBLAS-ext
GIT_REPOSITORY https://github.com/arrayfire/clBLAS.git
GIT_TAG af3.3.0
GIT_TAG af3.3.1
PREFIX "${prefix}"
INSTALL_DIR "${prefix}"
UPDATE_COMMAND ""
Expand Down
2 changes: 1 addition & 1 deletion CMakeModules/build_clFFT.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ENDIF()
ExternalProject_Add(
clFFT-ext
GIT_REPOSITORY https://github.com/arrayfire/clFFT.git
GIT_TAG af3.3.0
GIT_TAG af3.3.1
PREFIX "${prefix}"
INSTALL_DIR "${prefix}"
UPDATE_COMMAND ""
Expand Down
185 changes: 87 additions & 98 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,139 +1,128 @@
<a href="http://arrayfire.com/"><img src="http://arrayfire.com/logos/arrayfire_logo_whitebkgnd.png" width="300"></a>

ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its **array** based function set makes parallel programming simple.
ArrayFire is a high performance software library for parallel computing with an
easy-to-use API. Its **array** based function set makes parallel programming
simple.

ArrayFire's multiple backends (**CUDA**, **OpenCL** and native **CPU**) make it platform independent and highly portable.
ArrayFire's multiple backends (**CUDA**, **OpenCL** and native **CPU**) make it
platform independent and highly portable. ArrayFire provides visualization
capabilities using our OpenGL-based,
[high performance visualization library](https://github.com/arrayfire/forge).

A few lines of code in ArrayFire can replace dozens of lines of parallel computing code, saving you valuable time and lowering development costs.
A few lines of code in ArrayFire can replace dozens of lines of parallel
computing code, saving you valuable time and lowering development costs.

### Build ArrayFire from source
To build ArrayFire from source, please follow the instructions on our [wiki](https://github.com/arrayfire/arrayfire/wiki).

### Download ArrayFire Installers
ArrayFire binary installers can be downloaded at the [ArrayFire Downloads](http://go.arrayfire.com/l/37882/2015-03-31/mmhqy) page.

### Support and Contact Info [![Join the chat at https://gitter.im/arrayfire/arrayfire](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/arrayfire/arrayfire?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

* Google Groups: https://groups.google.com/forum/#!forum/arrayfire-users
* ArrayFire Services: [Consulting](http://arrayfire.com/consulting/) | [Support](http://arrayfire.com/support/) | [Training](http://arrayfire.com/training/)
* ArrayFire Blogs: http://arrayfire.com/blog/
* Email: <mailto:technical@arrayfire.com>

### Build Status
| | Linux x86 | Linux armv7l | Linux aarch64 | Windows | OSX |
|:-------:|:---------:|:------------:|:-------------:|:-------:|:---:|
| | Linux x86_64 | Linux armv7l | Linux aarch64 | Windows | OSX |
|:-------:|:------------:|:------------:|:-------------:|:-------:|:---:|
| Build | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-linux/build/devel)](http://ci.arrayfire.org/job/arrayfire-linux/job/build/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-tegrak1/build/devel)](http://ci.arrayfire.org/job/arrayfire-tegrak1/job/build/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-tegrax1/build/devel)](http://ci.arrayfire.org/job/arrayfire-tegrax1/job/build/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-windows/build/devel)](http://ci.arrayfire.org/job/arrayfire-windows/job/build/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-osx/build/devel)](http://ci.arrayfire.org/job/arrayfire-osx/job/build/branch/devel/) |
| Test | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-linux/test/devel)](http://ci.arrayfire.org/job/arrayfire-linux/job/test/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-tegrak1/test/devel)](http://ci.arrayfire.org/job/arrayfire-tegrak1/job/test/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-tegrax1/test/devel)](http://ci.arrayfire.org/job/arrayfire-tegrax1/job/test/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-windows/test/devel)](http://ci.arrayfire.org/job/arrayfire-windows/job/test/branch/devel/) | [![Build Status](http://ci.arrayfire.org/buildStatus/icon?job=arrayfire-osx/test/devel)](http://ci.arrayfire.org/job/arrayfire-osx/job/test/branch/devel/) |

Test coverage: [![Coverage Status](https://coveralls.io/repos/arrayfire/arrayfire/badge.svg?branch=HEAD)](https://coveralls.io/r/arrayfire/arrayfire?branch=HEAD)
### Installation

### Example
You can install the ArrayFire library from one of the following ways:

``` C++
#### Official installers

#include <arrayfire.h>
#include <cstdio>
Execute one of our [official binary installers](https://arrayfire.com/download)
for Linux, OSX, and Windows platforms.

using namespace af;
#### Build from source

int main(int argc, char *argv[])
{
try {
Build from source by following instructions on our
[wiki](https://github.com/arrayfire/arrayfire/wiki).

// Select a device and display arrayfire info
int device = argc > 1 ? atoi(argv[1]) : 0;
af::setDevice(device);
af::info();
### Examples

printf("Create a 5-by-3 matrix of random floats on the GPU\n");
array A = randu(5,3, f32);
af_print(A);
The following examples are simplified versions of
[`helloworld.cpp`](https://github.com/arrayfire/arrayfire/tree/devel/examples/helloworld/helloworld.cpp)
and
[`conway_pretty.cpp`](https://github.com/arrayfire/arrayfire/tree/devel/examples/graphics/conway_pretty.cpp),
respectively. For more code examples, visit the
[`examples/`](https://github.com/arrayfire/arrayfire/tree/devel/examples)
directory.

printf("Element-wise arithmetic\n");
array B = sin(A) + 1.5;
af_print(B);
#### Hello, world!

printf("Negate the first three elements of second column\n");
B(seq(0, 2), 1) = B(seq(0, 2), 1) * -1;
af_print(B);
```cpp
array A = randu(5, 3, f32); // Create 5x3 matrix of random floats on the GPU
array B = sin(A) + 1.5; // Element-wise arithmetic
array C = fft(B); // Fourier transform the result

printf("Fourier transform the result\n");
array C = fft(B);
af_print(C);
float d[] = { 1, 2, 3, 4, 5, 6 };
array D(2, 3, d, afHost); // Create 2x3 matrix from host data
D.col(0) = D.col(end); // Copy last column onto first

printf("Grab last row\n");
array c = C.row(end);
af_print(c);
array vals, inds;
sort(vals, inds, A); // Sort A and print sorted array and corresponding indices
af_print(vals);
af_print(inds);
```
printf("Create 2-by-3 matrix from host data\n");
float d[] = { 1, 2, 3, 4, 5, 6 };
array D(2, 3, d, af::afHost);
af_print(D);
#### Conway's Game of Life
printf("Copy last column onto first\n");
D.col(0) = D.col(end);
af_print(D);
Visit the
[Wikipedia page](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) for a
description of Conway's Game of Life.
// Sort A
printf("Sort A and print sorted array and corresponding indices\n");
array vals, inds;
sort(vals, inds, A);
af_print(vals);
af_print(inds);
```cpp
static const float h_kernel[] = {1, 1, 1, 1, 0, 1, 1, 1, 1};
static const array kernel(3, 3, h_kernel, afHost);
} catch (af::exception& e) {
fprintf(stderr, "%s\n", e.what());
throw;
}
array state = (randu(128, 128, f32) > 0.5).as(f32); // Generate starting state
Window myWindow(256, 256);
while(!myWindow.close()) {
array nHood = convolve(state, kernel); // Obtain neighbors
array C0 = (nHood == 2); // Generate conditions for life
array C1 = (nHood == 3);
state = state * C0 + C1; // Update state
myWindow.image(state); // Display
}
```

<p align="center">
<img src="https://github.com/arrayfire/assets/blob/master/gifs/conway.gif" alt="Conway's Game of Life" height="256" width="256">
</p>

### Documentation

You can find our complete documentation over [here](http://www.arrayfire.com/docs/index.htm).
You can find our complete documentation [here](http://www.arrayfire.com/docs/index.htm).

Quick links:

- [Download Binaries](http://www.arrayfire.com/download/)
- [List of functions](http://www.arrayfire.com/docs/group__arrayfire__func.htm)
- [Tutorials](http://www.arrayfire.com/docs/gettingstarted.htm)
- [Examples](http://www.arrayfire.com/docs/examples.htm)
* [List of functions](http://www.arrayfire.org/docs/group__arrayfire__func.htm)
* [Tutorials](http://www.arrayfire.org/docs/usergroup0.htm)
* [Examples](http://www.arrayfire.org/docs/examples.htm)
* [Blog](http://arrayfire.com/blog/)

### Contribute
### Language wrappers

Contributions of any kind are welcome! Please refer to
[this document](https://github.com/arrayfire/arrayfire/blob/master/CONTRIBUTING.md)
to learn more about how you can get involved with ArrayFire.
We currently support the following language wrappers for ArrayFire:

## Citations and Acknowledgements
* [`arrayfire-python`](https://github.com/arrayfire/arrayfire-python)
* [`arrayfire-rust`](https://github.com/arrayfire/arrayfire-rust)

If you redistribute ArrayFire, please follow the terms established in
[the license](LICENSE).
If you wish to cite ArrayFire in an academic publication, please use the
following reference:
Wrappers for other languages are a work in progress:

Formatted:
```
Yalamanchili, P., Arshad, U., Mohammed, Z., Garigipati, P., Entschev, P.,
Kloppenborg, B., Malcolm, J. and Melonakos, J. (2015).
ArrayFire - A high performance software library for parallel computing with an
easy-to-use API. Atlanta: AccelerEyes. Retrieved from https://github.com/arrayfire/arrayfire
```
[`arrayfire-dotnet`](https://github.com/arrayfire/arrayfire-dotnet), [`arrayfire-fortran`](https://github.com/arrayfire/arrayfire-fortran), [`arrayfire-go`](https://github.com/arrayfire/arrayfire-go), [`arrayfire-java`](https://github.com/arrayfire/arrayfire-java), [`arrayfire-lua`](https://github.com/arrayfire/arrayfire-lua), [`arrayfire-nodejs`](https://github.com/arrayfire/arrayfire-js), [`arrayfire-r`](https://github.com/arrayfire/arrayfire-r)

BibTeX:
```bibtex
@misc{Yalamanchili2015,
abstract = {ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its array based function set makes parallel programming simple. ArrayFire's multiple backends (CUDA, OpenCL and native CPU) make it platform independent and highly portable. A few lines of code in ArrayFire can replace dozens of lines of parallel computing code, saving you valuable time and lowering development costs.},
address = {Atlanta},
author = {Yalamanchili, Pavan and Arshad, Umar and Mohammed, Zakiuddin and Garigipati, Pradeep and Entschev, Peter and Kloppenborg, Brian and Malcolm, James and Melonakos, John},
publisher = {AccelerEyes},
title = {{ArrayFire - A high performance software library for parallel computing with an easy-to-use API}},
url = {https://github.com/arrayfire/arrayfire},
year = {2015}
}
```
### Contributing

Contributions of any kind are welcome! Please refer to
[CONTRIBUTING.md](https://github.com/arrayfire/arrayfire/blob/master/CONTRIBUTING.md)
to learn more about how you can get involved with ArrayFire.

### Citations and Acknowledgements

If you redistribute ArrayFire, please follow the terms established in
[the license](LICENSE). If you wish to cite ArrayFire in an academic
publication, please use the following [citation document](.github/CITATION.md).

ArrayFire development is funded by ArrayFire LLC and several third parties,
please see the list of [acknowledgements](https://github.com/arrayfire/arrayfire/blob/master/ACKNOWLEDGEMENTS.md) for further details.
please see the list of [acknowledgements](ACKNOWLEDGEMENTS.md) for further
details.

### Support and Contact Info [![Join the chat at https://gitter.im/arrayfire/arrayfire](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/arrayfire/arrayfire?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

* [Google Groups](https://groups.google.com/forum/#!forum/arrayfire-users)
* ArrayFire Services: [Consulting](http://arrayfire.com/consulting/) | [Support](http://arrayfire.com/support/) | [Training](http://arrayfire.com/training/)
2 changes: 1 addition & 1 deletion assets
Submodule assets updated 1 files
+ gifs/conway.gif
39 changes: 39 additions & 0 deletions docs/pages/release_notes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,45 @@
Release Notes {#releasenotes}
==============

v3.3.1
==============

Bug Fixes
--------------

* Fixes to \ref af::array::device()
* CPU Backend: [evaluate arrays](https://github.com/arrayfire/arrayfire/issues/1316)
before returning pointer with asynchronous calls in CPU backend.
* OpenCL Backend: [fix segfaults](https://github.com/arrayfire/arrayfire/issues/1324)
when requested for device pointers on empty arrays.
* Fixed \ref af::array::operator%() from using [rem to mod](https://github.com/arrayfire/arrayfire/issues/1318).
* Fixed [array destruction](https://github.com/arrayfire/arrayfire/issues/1321)
when backends are switched in Unified API.
* Fixed [indexing](https://github.com/arrayfire/arrayfire/issues/1331) after
\ref af::moddims() is called.
* Fixes FFT calls for CUDA and OpenCL backends when used on
[multiple devices](https://github.com/arrayfire/arrayfire/issues/1332).
* Fixed [unresolved external](https://github.com/arrayfire/arrayfire/commit/32965ef)
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](https://github.com/arrayfire/arrayfire/issues/1323) regression.
* \ref af::array::device() on OpenCL backend [returns](https://github.com/arrayfire/arrayfire/issues/1311)
`cl_mem` instead of `(void*)cl::Buffer*`.
* In Unified backend, [load versioned libraries](https://github.com/arrayfire/arrayfire/issues/1312)
at runtime.

Documentation
------
* Reorganized, cleaner README file.
* Replaced non-free lena image in assets with free-to-distribute lena image.

v3.3.0
==============

Expand Down
1 change: 1 addition & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ ENDMACRO()

# Collect the source
FILE(GLOB FILES "*/*.cpp")
LIST(SORT FILES)
ADD_DEFINITIONS("-DASSETS_DIR=\"${ASSETS_DIR}\"")

# Next we build each example using every backend.
Expand Down

0 comments on commit f53efc3

Please sign in to comment.