We are excited to announce ArrayFire v3.6.2! In this release we have fixed a number of bugs, improved documentation, and added a few features while improving performance as always. We highlight some of the exciting changes below. New features and improvements Several features added in v3.6.2 are concerned with batching and broadcasting. In v3.6 we introduced batched matmul() allowing you to multiply several matrices at the same time. You could only batch arrays that were the same shape and size on the left hand side and the right hand size. In cases when you wanted to multiply one matrix with multiple matrices, you had to tile the inputs so that they were the same shape before you performed the multiplication. ...
We are excited to announce ArrayFire v3.5.1! This release focuses on fixing bugs and improving performance. Here are the improvements we think are most important: Performance improvements We've improved element-wise operation performance for the CPU backend. The af::regions() function has been modified to leverage texture memory, improving its performance. Our JIT engine has been further optimized to boost performance. Bug fixes We've squashed a long standing bug in the CUDA backend responsible for breaking whenever the second, third, or fourth dimensions were large enough to exceed limits imposed by the CUDA runtime. The previous implementation of af::mean() suffered from overflows when the summation of the values lied outside the range of the backing data type. New kernels for each of ...
Today we are pleased to announce the release of ArrayFire v3.5, our open source library of parallel computing functions supporting CUDA, OpenCL, and CPU devices. This new version of ArrayFire improves features and performance for applications in machine learning, computer vision, signal processing, statistics, finance, and more. This release focuses on thread-safety, support for simple sparse-dense arithmetic operations, canny edge detector function, and a genetic algorithm example. A complete list of ArrayFire v3.5 updates and new features are found in the product Release Notes. Thread Safety ArrayFire now supports threading programming models. This is not intended to improve the performance since most of the parallelism is happening on the device, but it does allow you to use multiple devices in ...
The ArrayFire library attempts to make high-performance computing as easy as possible for scientists and engineers. Because many tasks need to be visualized, ArrayFire also provides a high-level interface to our Forge visualization library. In today's "Learning ArrayFire from scratch" post we present an overview of ArrayFire's visualization functionality and demonstrate how to use Forge to display data contained in af::array objects.
In last week's "Learning ArrayFire from scratch" post we discussed how to interface ArrayFire and CUDA to improve your productivity. This week we demonstrate how to mix ArrayFire and OpenCL in your application.
Although ArrayFire is quite extensive, there remain many cases in which you may want to write custom kernels in CUDA or OpenCL. For example, you may wish to add ArrayFire to an existing code base to increase your productivity, or you may need to supplement ArrayFire's functionality with your own custom implementation of specific algorithms. Today's "Learning ArrayFire from scratch", blog post discusses how you can interface ArrayFire and CUDA.
One of the most common questions we see on the ArrayFire Google Group pertains to methods to manipulate the dimensions of ArrayFire array objects. Thus we will continue the "Learning ArrayFire from scratch" blog series by providing a detailed discussion of the numerous functions that permit you to change the dimentionality, flatten, flip, join, shift, transpose, and tile arrays.
Programmers and Data Scientists want to take advantage of fast and parallel computational devices. One of the best ways of doing this is to write vectorized code; however, this is often easier said than done. In today's continuation of the blog series "Learning ArrayFire from scratch", we will discuss the various methods by which you can maximize the performance of your code by using ArrayFire's built-in vectorization features.
The fundamental primitive of the ArrayFire Library is our container object, the array. As the next post in our blog series, "Learning ArrayFire from scratch", we will describe how to construct arrays, what datatypes arrays support, indexing, how to query an array for various properties (content, dimensions), and how to write mathematical expressions that involve arrays.
Continuing our blog series "Learning ArrayFire from scratch" today we will discuss how to set up an ArrayFire project on Windows using Visual Studio or CMake.