Music Beat Analysis

ArrayFireCase Studies Leave a Comment

Did you ever wonder how the music visualizer in your media player works? Watching it pulsate in synchrony with the beats of the song is almost as entertaining as listening to the song itself! Researchers have been attempting to detect beats in audio signals for many years, and there are many techniques available, from the simplest (and least accurate) to more complicated algorithms that are highly accurate. All algorithms, though, perform some form of signal processing and frequency analysis, applications highly suited to GPU Computing. The beat visualizer described here was developed by researchers at Rice University, and is simple and fast. An incoming signal is broken down into six frequency bands for analysis. After smoothing out these bands and …

Accelerating LTE Simulation

ArrayFireCase Studies Leave a Comment

Simulation in MATLAB is a driving force in several research projects. However, the accompanying long simulation times can tend to be a drag in many of these  projects. In this article, we shall bring up the example of the work on 3GPP LTE System Simulation by Yuan Gao et al (from Tsinghua University, Beijing) and demonstrate how the use of Jacket can significantly improve the simulator performance and lead to faster validation times in simulation projects. 3GPP’s LTE (Long Term Evolution) and LTE-Advanced are important telecommunication standards pertaining to 3G and 4G communication networks. With networks worldwide beginning to adopt them for consumer usage,  a great need has come up for several novel link and system-level communication techniques developed by …

Tree cats see your code!

John MelonakosArrayFire Leave a Comment

From time-to-time we stumble across funny quirks while using MATLAB®.  The latest came as one of our developers accidentally mis-keyed a few characters.  With 5 characters on the command line, you too can get a message about tree cats seeing your bad code (followed by a nasty seg fault, so beware).  Try this: >> a()@a tree_cat sees bad code * Subsref [4] * M_ID 0(5) which * M_LRB 5(1) * ExprList [1] * M_ID 6(1) e * M_RRB 7(1) tree_cat sees bad code * Subsref [4] * M_ID 0(5) which * M_LRB 5(1) * ExprList [1] * M_ID 6(1) e * M_RRB 7(1) Top Secret:  Part of Jacket’s GPU runtime involves monkeys obtaining bananas for optimal performance. While we can’t …

High Performance Compressive Sensing

ArrayFireBenchmarks, Case Studies Leave a Comment

A few weeks ago, we published a blog entry that demonstrated the ability of Jacket to speed up “compressive sensing”, a technology that has wide applications in areas such as Image processing, reconstruction and spectroscopy. Here, we discuss the work of Nabor Reyna Jr. and Wotao Yin from Rice University using Jacket to speed up “compressive sensing” algorithms in reconstruction. This work deals with reconstruction of signals using partial Fourier matrices (RecPF).  The major computational components of the algorithm involve shrinkage and FFTs.  Jacket is employed to accelerate this compute-heavy code, and the resultant version (gRecPF) was about 5x faster! To reduce the cost involved in generating the random matrices involved in the above method, a second method (RecPC) that …

New Product Updates – Jacket v1.8, LibJacket v1.1

John MelonakosAnnouncements, CUDA Leave a Comment

Announcements Jacket v1.8 for MATLAB® now available LibJacket v1.1 for C/C++/Python/Fortran now available Request a FREE GPU computing consultation Introduction Enhance your code with the fastest, most comprehensive library for GPU computing: Jacket – the best GPU computing in MATLAB®.  Take a tour and compare! LibJacket – the best way to kick start your CUDA development.  Take a tour! Both products enable: Manipulating vectors, matrices, and ND arrays Support for single- and double-precision, boolean, real, and complex numbers Hundreds of routines for arithmetic, linear algebra, statistics, imaging, signal processing, and more (full list: Jacket, LibJacket) Thousands of lines of optimized code for any CUDA-capable GPU New Product Features Expanded support for the Signal Processing, Image Processing, and Statistics Libraries included with …

Using Jacket to design and simulate echo generators

ArrayFireCase Studies Leave a Comment

Antenna array design involves repeated simulation to tune the many parameters involved, and waiting around for simulations to finish is no fun. Offloading the optimization problem onto the GPU cuts that time down significantly. In their recent paper, Capozzoli, Curcio, and Liseno (pdf, citation) of University of Naples Federico II demonstrated how a simple modification to their echo generator array simulation took advantage of the GPU to bring immediate speedups. Checkout this figure from their paper showing CPU simulation time growing prohibitively slow while the GPU grows little as more data is fed. Their simulation is designed around optimizing an energy functional. Using fminunc to drive the optimization problem on the CPU, they simply modified their functional evaluation to take …

Jacket Lectures – Learn and Teach GPU computing

John MelonakosAnnouncements, CUDA Leave a Comment

We are pleased to share 6 in-depth Jacket lectures, helpful both in learning and teaching Jacket.  Download the lectures (PDF format), here:  http://www.accelereyes.com/support/lectures Jacket is used in course instruction at many universities around the world. Professors and course instructors use Jacket to provide engineering students with GPU acceleration of MATLAB® algorithms and to bring HPC to MATLAB courses. The six lectures are entitled “Parallel High Performance Computing with Emphasis on Jacket Based GPU Computing” and have topics including: Parallel computing introduction Jacket introduction Basic programming with Jacket Advanced programming with Jacket Multiple GPU programming Benchmarking If you are looking at accelerating MATLAB code or parallel computing with MATLAB, you definitely will want to add these lectures to your arsenal of …

Chan-Vese Active Contours on the GPU

ArrayFireBenchmarks, Case Studies 1 Comment

Active Contours are mathematical models that enable detection of objects within images, and are extensively used in Computer Vision as self-adapting frameworks for the delineation and tracking of objects. To demonstrate Jacket’s cross-platform versatility, we implemented the Chan Vese contour tracking app on Android. The video can be viewed here. Today, however, we’d like to use a MATLAB implementation of active contours as an example of how to take a large project, and with minimal changes, achieve speedups with Jacket. We’ll dangle the proverbial carrot first: the GPU Chan-Vese implementation contains only three kinds of changes overall, and the computational code is exactly the same for both CPU and GPU versions. Plus, take a look at the speed-ups below! How …

Getting More out of GPU Computing with LIBJACKET v1.0

John MelonakosAnnouncements, CUDA Leave a Comment

LIBJACKET v1.0 is here! It is the Matrix Companion to CUDA, providing a high-productivity performance layer for GPU computing. Download now to start a free 15-day trial. It integrates seamlessly with any CUDA code, but can also be used to avoid writing complicated GPU kernels yourself via its matrix interface. Soak up its features, here. We’re celebrating this launch by offering two big promotions, one for existing Jacket programmers and one for the broader GPU computing community: Existing Jacket customers get 50% off libJacket. Buy a Tesla, Get a Free libJacket subscription. Learn more about these offers. Here are some other links of interest to this launch: Tour Documentation Function benchmarks Press release Over the years, we’ve been thrilled to …

Laplace Transform Inversion on the GPU

ArrayFireCase Studies Leave a Comment

The numerical inversion of the Laplace transform is a long standing problem due its implicit ill-posedness. Patrick Kano and Moysey Brio of Acunum Algorithms and Simulations, with their experience in computational methods and algorithm development, found a solution that not only works, but is very fast. Their code implements the Weeks’ method for Numerical Laplace Inversion. Apart from casting CPU variables to GPU, etc, the major step involved in Jacketizing the code was as simple as converting a for loop to GFOR! Something like what’s given below: for nidx=1:Nprod Errorvec(nidx) = wfncpuErrorEst( … ); end gfor nidx=1:Nprod Errorvec(nidx) = wfnjacErrorEst( … ); gend The loop in question calls a global minimization function that computes an absolute error estimate for each …