Building a C++ Interpreter (Cling) for x86 and ARM

Gallagher PryorC/C++ Leave a Comment

A C++ interpreter compiled for ARM running on an x86 EC2 instance after following the given instructions. As C++ becomes more mature and high-level, an interpreted workflow might lead to mainstream C++ productivity in addition to development! Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2. With our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM’s newest …

Visit ArrayFire at GTC 2015

ScottArrayFire 2 Comments

GTC is quickly approaching and we want to see you there! When: March 17-20 Where: San Jose, California ArrayFire Booth: 713 GTC is the world’s premier GPU developer conference. Connect with experts from NVIDIA and other leaders in high performance computing. At GTC you’ll discover what’s next in GPU breakthroughs, and gain useful insights in over 500 sessions and hands-on labs covering a diverse range of application domains. ArrayFire will be out in full force at GTC, and we invite you to join us at our CUDA tutorials, hands-on lab, and talks presented by our knowledgeable and experienced GPU developers. Visit the GTC Session Catalog for more details—you don’t want to miss out! ArrayFire Tutorials at GTC S5797 – Introduction to GPU Computing Using the ArrayFire …

RIP, Leonard Nimoy

Gallagher PryorArrayFire Leave a Comment

This past week marked the passage of Leonard Nimoy. Here at ArrayFire, we are deeply saddened and touched by his departure. While Mr. Nimoy was anything but a scientist, mathematician, or programmer, he portrayed a character that embodied the best of all of those professions. Whereas Mr. Nimoy has had a send off on major news outlets regarding his amazing career throughout his entire life, we would rather like to express how he specifically inspired us to ultimately pursue our careers and why we toil under the ArrayFire banner. As everyone (hopefully) knows, Leonard Nimoy portrayed the character of Spock on Star Trek. Logical, brilliant, and supposedly emotionless, Spock served as friend and counter-balance to Kirk – the brash, head-strong, …

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 …

ArrayFire Benchmarks: AMD Kaveri vs Intel Haswell Part-1

Pradeep GarigipatiArrayFire, Benchmarks 10 Comments

We have had queries in the past requesting benchmarks on integrated GPUs of Intel and AMD processors. This post is a modest attempt to answer those questions. In this post, we focus on the GPU benchmarks of AMD A10-7850K APU & Intel i7-4790K HD 4600 for the following ArrayFire functions. Bilateral Filter Erosion/Dilation 2D Convolution 2D Fast Fourier Transform Median Filter Resize Rotate Scan 1D Array Reduction of 1D Array Sort Matrix Transpose Remarks For most of the benchmarks the Intel system was outperformed by the AMD APU. We believe that we will be able to get more performance from the Intel system by modifying the kernels to use vector operations which will increase the resource utilization. Keep an eye …

OpenCL on Intel HD / Iris graphics on Linux

Brian KloppenborgOpenCL 19 Comments

Under Windows and Mac the Intel GPU drivers include OpenCL support; however, on Linux OpenCL on Intel GPUs is implemented through an open source project called Beignet (pronnounced like “ben-yay”, a type of French pastry akin to a what we would call a “fritter” in English). Below I have written a step-by-step guide on how you can get Beignet running on an Ubuntu 14.10 system which has an Intel 3rd, 4th, or 5th generation Intel processor. Instructions for other variants of Linux will be similar, except for the commands to install the prerequisite packages. There are several little caveats which need to be discussed up front. Foremost, the Beignet project supports the following hardware: There are also a few noteworthy …

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 …

ArrayFire Open Source Buzz

Aaron TaylorArrayFire, Open Source 3 Comments

Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we’re still pumped about this move, and the response from the parallel computing community has been tremendous. We thought we’d share some of our favorite ArrayFire buzz from the last month. On the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it’s hard to compete with a comet landing. With eager eyes, we followed the rise of our GitHub repository’s star count to an incredible 860 stars. We received shout-outs from several major blogs including Phoronix, insideHPC, and HPCWire. In the AMD Developer Blog, Brent Hollingsworth wrote  “On the AMD side, we have been very impressed …

Getting Started with the Intel Xeon Phi on Ubuntu 14.04/Linux Kernel 3.13.0

Peter EntschevHardware & Infrastructure, OpenCL 25 Comments

You may already know that the Intel MPSS (Manycore Platform Software Stack) officially only supports the RedHat and SUSE Linux distros. Using an enterprise distro might be very interesting if your company is running a large server environment or short on specialized people and you rely on the distro official support for more complicated tasks. Not all companies use enterprise Linux distributions. Ubuntu has a large share of the Linux distro market (if not the largest). A while back, I needed to setup a machine running Ubuntu 14.04 and MPSS 3.4.x and could not find any documentation running the newest versions of Ubuntu/Linux Kernel/MPSS. In this blog, I will try to document how to get the Intel Xeon Phi running …

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 …