Learning ArrayFire from scratch: Installation

Brian KloppenborgArrayFire 9 Comments

Recently one of our interns completed his project ahead of schedule and asked if he could spend some time writing a particle filtering demo in ArrayFire for use at our upcoming trade shows. While learning the ins and outs of ArrayFire he posed several excellent questions which prompted us to start a series of blog posts entitled “Learning ArrayFire from scratch” that are geared to first-time users of our library. In today’s post I will cover the installation process on Windows, Mac, and Linux. Our next post will discuss the basics of setting up your first ArrayFire project.

Building an ArrayFire program with CMake

Brian KloppenborgArrayFire 5 Comments

Introduction In the last week there were a few questions about how to use ArrayFire with CMake on Linux on the ArrayFire Google Groups page. Although we have some quick notes about this in the documentation I thought it would be fun to provide a fully worked example that demonstrates a cool CMake trick to reduce compilation time by a factor of three when linking against multiple backends. At the bottom of this post is a link to a GitHub repository containing a minimal CMake project setup which links a program against ArrayFire’s CPU, OpenCL, and CUDA backends.

Feature detection and tracking using ArrayFire

Brian KloppenborgArrayFire, C/C++, Image Processing Leave a Comment

A few weeks ago we added some computer vision functionality to our open source ArrayFire GPU computing library. Specifically, we implemented the FAST feature extractor, BRIEF feature point descriptor, ORB multi-resolution scale invariant feature extractor, and a Hamming distance function. When combined, these functions enable you to find features in videos (or images) and track them between successive frames.

Performance of ArrayFire JIT Code Generation

Oded GreenBenchmarks, Case Studies 3 Comments

The ArrayFire library offers JIT (Just In Time) compiling for standard arithmetic operations. This includes trigonometric functions, comparisons, and element-wise operations. At run-time, ArrayFire aggregates these function calls using an Abstract Syntax Tree (AST) data structure such that whenever a JIT-supported function is ”met,” it is added into the AST for a given variable instance. The AST of the variable is computed if one of the following conditions is met: When the above occurs, and the variable needs to be evaluated, the functions and variables in the AST data structure are used to create a single kernel (”function-call”). This is done by creating a customized kernel on-the-fly that is made up of all the functions in the AST – the …

The ArrayFire Blog’s Best of 2014

Aaron TaylorArrayFire 1 Comment

The year 2014 was a big one for us! Before we get too far into 2015, we thought we’d share the most popular posts of 2014. So, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014: 1. Getting Started with OpenCL on Android: In which we review how to do image processing on camera feed on Android devices using OpenCL. 2. Image Processing Benchmarks on NVIDIA Jetson TK1: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution. 3. OpenCL on Mobile Devices: In which we share a consolidated list of OpenCL supported Android devices. 4. Quest for the Smallest OpenCL Program: In …

Conway’s Game of Life using ArrayFire

Shehzan MohammedArrayFire, CUDA, Image Processing, Open Source, OpenGL 4 Comments

Conway’s Game of Life is a popular zero player cellular automaton devised by the John Horton Conway in 1970. The game makes for a fun evolution as the player sets the initial condition and then observes the evolution of the game. Each cell has 2 states: live or dead. There are 4 simple rules that determine this: Any live cell with fewer than two live neighbours dies, as if caused by under-population. Any live cell with two or three live neighbours lives on to the next generation. Any live cell with more than three live neighbours dies, as if by overcrowding. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction. From a programmer’s …

ArrayFire Joint Webinar with NVIDIA

Aaron TaylorEvents Leave a Comment

Ever wish you could spread out the insights from GPU Technology Conference over the course of a year? NVIDIA’s got you covered with their GTC Express webinar series, a weekly webinar event connecting you with the top developers in the parallel processing industry. Next week, the GTC Express pulls into the ArrayFire station. Shehzan Mohammed, ArrayFire Senior Software Developer, will demonstrate how the recently open sourced ArrayFire GPU library enables high performance on NVIDIA GPUs for scientists, engineers, and researchers, in a wide range of applications including defense and intelligence, life sciences, oil and gas, finance, manufacturing, media, and others. The webinar is scheduled for Wednesday, December 10, from 12:00 pm to 1:00 pm EST. Register for your spot, and feel free to …

ArrayFire is Now Open Source

ScottAnnouncements, ArrayFire, Open Source 7 Comments

Yes, you read that right! ArrayFire is open source—it’s all there and it’s all free. This is big, and you and the rest of the parallel computing community are going to love it! You can download our pre-compiled binary installers which are optimized for a wide variety of systems or you can get a copy of the ArrayFire source code from our GitHub page. ArrayFire is being released under the BSD 3-Clause License, which will enable unencumbered deployment and portability of ArrayFire for commercial use. So go check it out! We welcome your feedback and look forward to your future contributions to ArrayFire. The move to open source isn’t our only news—we’ve also made ArrayFire better than ever. Check out our recent …

ArrayFire at SC14

Aaron TaylorArrayFire, Events 3 Comments

HPC matters. That’s the tagline for SC 14, and here at ArrayFire we’re in complete agreement with them. We’ve exhibited at SC for the past few years, and we’re excited to once again be a part of this excellent conference! It’s a great place for soaking up HPC knowledge, getting inspired, and connecting with the brightest minds in the industry. Here’s a quick run-down of where we’ll be.  Visit our booth. We’re booth #2725. We’ll have beautiful demos running and our engineers will be available for questions. Ask your questions, meet the team, or just bounce some ideas. Maybe—just maybe—you’ll get a sneak peek at our most ambitious project yet… Try our in-booth tutorials. Want to learn how to use ArrayFire to accelerate …

Image editing using ArrayFire: Part 3

Pradeep GarigipatiArrayFire, C/C++, CUDA, Image Processing, OpenCL 1 Comment

Today, we will be doing the third post in our series Image editing using ArrayFire. References to old posts are available below. * Part 1 * Part 2 In this post, we will be looking at the following operations. Image Histogram Simple Binary Theshold Otsu Threshold Iterative Threshold Adaptive Binary Threshold Emboss Filter Today’s post will be mostly dominated by different types of threshold operations we can achieve using ArrayFire. Image Histogram We have a built-in function in ArrayFire that creates a histogram. The input image was converted to gray scale before histogram calculation as our histogram implementation works for vector and 2D matrices only. In case, you need histogram for all three channels of a color image, you can …