Feature detection on Xilinx FPGAs using OpenCL

Brian Kloppenborg ArrayFire Leave a Comment

Today at SuperComputing 2015, ArrayFire demonstrated its first FPGA-accelerated application running on a Xilinx FPGA using OpenCL. In May 2015, ArrayFire became a Xilinx Alliance member which provided us early access to the Xilinx SDAccel Development Environment within initial support for OpenCL. We helped Xilinx test and improve its OpenCL implementation and make it more accessible to first-time users. Over the last few months, we implemented several programs for the FPGA and subsequently learned a lot about optimizing OpenCL kernels to take advantage of pipelining, wide memory busses, and the various forms of configurable local memory offered on Xilinx hardware. Our first fully ported application is from computer vision: the FAST feature extractor. FAST finds corners in image. In the image below, the left side shows a frame from …

ArrayFire at SC15

Scott Announcements, ArrayFire, Events Leave a Comment

SC15 is almost here! We’re getting excited to head down to Austin, Texas, to 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 #2229. We’ll be showing off our latest demos and our engineers will be available for questions. Ask your questions, meet the team, or just bounce some ideas. Try our in-booth tutorials. Want to learn how to use ArrayFire to accelerate your code? Stop by and receive an in-booth tutorial from one of our ArrayFire experts. We’ll show you how the open source ArrayFire software library makes programming GPUs and …

Learning ArrayFire from scratch: Installation

Brian Kloppenborg ArrayFire 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.

ArrayFire v3.1 Official Release

Scott ArrayFire 1 Comment

Today we are pleased to announce the release of ArrayFire v3.1. This new version features new functional support with a focus on computer vision and machine learning functions added to the library, along with new support for Array and Data Handling functions. This release also includes support for CUDA 7.5. A complete list of ArrayFire v3.1 updates and new features can be found in the product Release Notes. With over 8 years of continuous development, the open source ArrayFire library is the top CUDA and OpenCL software library. ArrayFire supports CUDA-capable GPUs, OpenCL devices, and other accelerators. With its easy-to-use API, this hardware-neutral software library is designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code. …

Building an ArrayFire program with CMake

Brian Kloppenborg ArrayFire 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.

Contributors: A big benefit to open source software

Brian Kloppenborg ArrayFire, Open Source 4 Comments

Making the decision to open source your software is not an easy process. Indeed, here at ArrayFire our choice to release ArrayFire under the open source, commercially friendly, BSD 3-Clause License came only after many hours of consideration and philosophical discussion (e.g. see our CEO’s blog on these topics). Thus far this decision has proven to be strictly beneficial to our company. The impact of third-party contributions Although ArrayFire is primarily developed by our engineers, there are several contributions from other developers. Therefore we feel particularly compelled to elucidate how these contributions have improved the ArrayFire ecosystem. Packaging for Linux and OSX One of the best parts of open source distribution is that your code can be packaged and distributed for …

Explaining FP64 performance on GPUs

Shehzan Mohammed ArrayFire 12 Comments

Introduction GPUs are really good at doing math. The Achilles heel is when it comes to 64-bit double precision math. GPUs, at least consumer grade, are not built for high performance FP64. This is because they are targeted towards gamers and game developers, who do not really care about high precision compute. So vendors like NVIDIA and AMD do not cram FP64 compute cores in their GPUs. For example, on a GTX 780 Ti, the FP64 performance is 1/24 FP32. Which means in an ideal case, running the same code by only changing float types to double types, would yield the single precision run time to be about 1/24th of the double precision time (time(FP32) = time(FP64)/24). Keep in mind, …