Category "HPC"


ITT VIS had several presentations about IDL 8.0 at this week’s IDL User Group Meeting. David Fanning says:

Just one word: Wow!

It appears that the promise of IDL 5 has finally been realized. :-)

David also posted a longer description of the new features, so I won’t go through the laundry list (but I do intend to run through it with some examples when 8.0 is actually released, like I did for 7.1).

But I will discuss a bit the one feature that I have used extensively: operator overloading. This was the main focus of my talk about GPULib with IDL 8.0. The gist is that GPULib variables will be objects and if you are running IDL 8.0+, you can do things like the following:

IDL> a = gpuFindgen(10)
IDL> b = gpuFindgen(10)
IDL> c = a + b

This was easy to implement, just inherit from IDL_Object and write a method with the special name _overloadPlus:

function gpuvariable::_overloadPlus, left, right
  compile_opt strictarr

  return, gpuAdd(left, right)
end

Most operators are supported like +, -, /, *, MOD, EQ, etc., but also including brackets (both on the left side and right side of an assignment) and other special methods used by PRINT, HELP, and SIZE. The dot operator is automatically connected to the getProperty and setProperty methods of the class.

Another nice point is that GPULib will not require separate versions for pre-8.0 and post-8.0 versions of IDL. Just write a simple dummy IDL_Object class. This will allow the code to be compiled in versions of IDL before 8.0 and won’t be found (because the real IDL_Object is part of IDL’s core and found before any user routines) in versions 8.0+. Of course, only the old procedure or function interfaces are available in versions before 8.0. I’m much more likely to use operator overloading because I can provide extra features for IDL 8.0 users and fall back to a more verbose interface for those who have not upgraded yet.

If you have the tech preview handed out at the meeting or are just interested in some more examples of this, check out these HDF5 classes which make use of operator overloading. The end of the mg_h5.pro file has a main-level program which shows how to use the classes:

IDL> .run mg_h5

Full disclosure: I work for Tech-X Corporation and have worked on the IDL bindings for GPULib.

From the CRC Press site for Image Analysis, Classification, and Change Detection in Remote Sensing: With Algorithms for ENVI/IDL, Second Edition:

This popular introduction to the processing of remote sensing imagery has been updated to include coverage of the latest versions of the ENVI software environment. This new edition covers support vector machines and other kernel-based methods. Illustrating many programming examples in the array-oriented language ID, the text includes coverage of basic Fourier, wavelet, principal components and minimum noise fraction transformations; convolution filters, topographic modeling, image-to-image registration and ortho-rectification; image fusion; supervised and unsupervised land cover classification with neural networks; hyperspectral analysis; multivariate change detection.

I was excited to hear that GPULib was used in this version of the book. Mort says:

In the text I discuss routines for nonlinear principal component analysis, supervised classification and nonlinear clustering, and explain that they can take advantage of GPULib/CUDA, if installed. (I use your routine GPU_DETECT() to check for GPULib).

Full disclosure: I work for Tech-X Corporation and worked on the IDL bindings and examples for GPULib.

If you are going to be at Supercomputing this year, check out GPULib (including a demo on a GPU “supercomputer” I spent some time working on earlier this week). From the press release:

Tech-X Corporation invites you to visit us at our booth (Booth #1713) at the SC09, November 14 – 20, 2009, in Portland, OR.

We will be demonstrating VORPAL, our highly-configurable multiphysics simulation application for modeling the interaction of matter with electromagnetic fields and GPULib, our library of mathematical kernels for GPU computing.

We will also be demonstrating GPULib in the Microway booth, booth #434.

Also, attend the Exhibitor Forum, on Wednesday, November 18, at 4:00PM, in Room E147-148, where Svetlana Shasharina, Ph.D., will be presenting “VizSchema: A Unified Interface for Visualization of Scientific Data”.

Full disclosure: I work for Tech-X Corporation and worked on the IDL bindings and examples for GPULib.

Henry Markram’s TED talk shows how high-performance computing (including many excellent visualizations) are being used to understand the human brain.

Henry Markram says the mysteries of the mind can be solved — soon. Mental illness, memory, perception: they’re made of neurons and electric signals, and he plans to find them with a supercomputer that models all the brain’s 100,000,000,000,000 synapses.

Link via datavisualization.ch.

NVIDIA’s Fermi architecture at Oak Ridge:

Oak Ridge National Laboratory (ORNL) announced plans today for a new supercomputer that will use NVIDIA®’s next generation CUDA™ GPU architecture, codenamed “Fermi”. Used to pursue research in areas such as energy and climate change, ORNL’s supercomputer is expected to be 10-times more powerful than today’s fastest supercomputer.

NVIDIA’s Fermi GPU makes an 8x performance improvement in double precision compared to current GPUs. It also includes 512 CUDA cores, as compared to the Tesla’s 240.

There are a lot of features targeted for high-performance computing in Fermi. Ars Technica writes about Fermi:

For the first time, the GPU gets support for advanced control flow mechanisms like indirect branches and fine-grained exception handling—neither of these features are particularly important for the immediate or near-term gaming market, but they’ll greatly enhance Fermi’s attractiveness as an HPC coprocessor.

Software will be very important in NVIDIA’s efforts:

NVIDIA will combine Fermi’s new level of GPU programmability with a full complement of software support for everything from DirectX and DirectCompute to OpenCL, C++, and Fortran. NVIDIA is also placing a heavy emphasis on development tools and developer support, and in doing so it acknowledges that competing in the many-core market is just as much a software battle as it is a hardware battle.

Last year, we were able to get our hands on a Tesla supercomputer, I am hoping to see Fermi in action.

Mac OS X 10.6 “Snow Leopard” is available for pre-order from Amazon.com for $29. One of the features of Snow Leopard, is OpenCL, basically a wrapper around CUDA which is emerging as a standard for writing GPU processing code.

GPULib 1.2 was released last week and is available on the Tech-X website. This release focused on improved MATLAB bindings with a few important bug fixes for the IDL bindings along with a few new kernels. Full release notes are after the break.

Continue reading “GPULib 1.2 released.”

Randal Schwartz recently gave a talk called “Dynamic Returns” dealing with misconceptions about dynamically typed languages (published as episode 135 of the Industry Misinterpretations podcast). His audience for the talk is composed of Smalltalk developers, but the points made are general and equally valid for other dynamic languages like IDL, Python, etc (at least in concept). The six myths are that statically typed languages like Java, C++, and C:

  1. reduce development cost
  2. increase speed of development
  3. eliminate need for some tests
  4. improve run-time stability
  5. scale better
  6. are faster

I agree that the first five points are indeed myths, but I’m not sure IDL has the tools for making IDL as fast or faster than a statically typed language. I know Python has a lot more tools in this area: Pyrex, Psyco, ctypes, f2py, and a bunch more. Of course, there are some things in IDL’s favor: the thread pool automatically uses multiple processors for array operations, there are libraries to make GPU computing and cluster computing easier, and a fairly straight-forward way to extend IDL using C when needed.

Peter Messmer from Tech-X Corporation gave a presentation about GPUlib at VISualize 2009 last week. Peter and I also stayed around after the IDL presentations to do hands on training for GPULib. The training was well attended; it was good to see the interest in GPU computing with IDL. Most people did not bring a laptop, making it less “hands on” than we had originally intended, but it was good to be able to answer individual questions.

I’m wondering what the interest in an actual training class for high-performance computing in IDL would be? It could cover standard IDL techniques as well as GPU and cluster computing (MPI and task farming).

Full disclosure: I work for Tech-X Corporation and worked on the IDL bindings and examples for GPULib.

« newer postsolder posts »