IDL


GPULib 1.0 was announced yesterday.

If you have been using the pre-release, the biggest new feature of the IDL bindings are the function forms of the routines. For example, it is possible to do:

IDL> gpuinit
IDL> x = findgen(360) * !dtor
IDL> y = 2 * findgen(360) * !dtor 
IDL> z_gpu = gpusin(gpumult(x, y))  ; z = sin(x * y)
IDL> plot, gpugetarr(z_gpu)
IDL> gpuFree, z_gpu

This computes z = sin(x *y) in a much more readable form than the procedural interface and does not leak any memory. In general, there are two bottlenecks to fast GPU computation: allocating memory on the GPU and transfer between CPU and GPU. Keeping results on the GPU and doing many calculations before transferring a final result to the CPU is desirable. Also, reusing variables for multiple calculations can help. This was straight-forward to do using the procedure interface, but how to specify a return variable to a function? Use the lhs keyword. For instance, the above calculation could be done using a pre-defined z_gpu:

IDL> gpuinit
IDL> x = findgen(360) * !dtor     
IDL> y = 2 * findgen(360) * !dtor
IDL> z_gpu = gpuFltarr(360)
IDL> z_gpu = gpusin(gpumult(x, y, LHS=z_gpu), LHS=z_gpu)
IDL> plot, gpugetarr(z_gpu)
IDL> gpuFree, z_gpu

It is possible to program as efficiently as the procedure forms with the function forms of the routines by using lhs, so make good use of them!

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

I'm not sure when they were put up, but the slides to most of the presentations at the User's Group Meeting are now posted (along with the entries for the image contest). Also, thanks for posting PDFs instead of PowerPoint files so that we can all see them!

At the suggestion of Anne in the comments of a previous posting about line-integral convolution (LIC) algorithm for vector field visualization, I tried pink noise as the input texture map. I think this looks pretty good compared to using white noise or smoothed white noise, but I'm still looking for better ways to show the magnitude and which direction along a flow line the field is really pointing.

Apple's science page has a collection of Keynote templates. They even have a short video about using the templates. (OK, 3D marble bar graphs are probably not the best, but you were going to make your graphics in IDL and import them anyway, right?)

Strunk and White interpreted as advice on programming. For example,

2.17. Omit needless words code

Vigorous writing programming is concise. A sentence function should contain no unnecessary words code, a paragraph block of code no unnecessary sentences statements, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts. This requires not that the writer programmer make all functions short, or avoid all detail and treat subjects only in outline, but that every word line of code tell.

Link via kottke.org.

I'm finally getting my notes together from the user group meeting this week. I really enjoyed being able to meet in person with people who I only knew online from the newsgroup. Thanks to Bill Okubo, Harold Cline, and the rest of ITT VIS for putting together a great event.

I wasn't as diligent as I wanted to be about taking photos, but I did upload a couple to Flickr.

Congratulations to Ken Bowman for winning the Image Contest!

Continue reading "2008 IDL User Group meeting wrapup."

A .sav file and API documentation for the POV-Ray object graphics destination that I've mentioned before are available here.

MeI'll be at the IDL User Group meeting on Thursday and the pre-conference IDL 7.1 Technology Preview on Wednesday. Say hello if you make it (that's me on the left). I'm looking forward to meeting some new IDL users, as well as seeing some people I haven't seen for a while.

I'll upload photos to the idlug08 tag on Flickr and post some information about the talks afterwards.

I spent some time improving the POV-Ray destination for object graphics I talked about in a previous article. I can now produce visualizations of actual data (like the one on the right) using this destination and its related library of classes.

My goals for this destination are two-fold:

  1. Create better renderings of pure IDL object graphics scenes (with no POV-Ray knowledge necessary).
  2. Ability to use POV-Ray specific features using custom object graphics classes. These classes render in some way in IDL, but produce effects in POV-Ray that can't be completely replicated in IDL.

I think the current VISgrPOVRay class supports objective 1 common 3-dimensional object graphics scenes, but lacks support for every property provided by the IDL library. Support for most properties can be easily done as needed.

The second objective requires creating new subclasses of classes in the IDL library with additional properties. For example, there is a VISgrPOVRayLight class which inherits from IDLgrLight class, but also provides support for the POV-Ray area light type. There is a VISgrPOVRayView which provides for features like focal blur in addition to the properties of the IDLgrView. There are also subclasses for grid planes, streamlines, and POV-Ray polygon graphics atoms as well as a finish attribute class. More classes can be added to support additional POV-Ray features as necessary.

ITT VIS announced an update for IDL on OS X today:

A new update for IDL on Macintosh computers is now available. The IDL 7.0.4 release adds support for Macintosh Intel 64-bit architecture on OS X 10.5. IDL 7.0.4 also fixes two issues that impacted all supported Macintosh platforms: CR49844 - "Creation of Semaphores Fails under Mac OS X 10.5", and CR51198/CR51412 - "CURSOR/RDPIX Procedures not Working Correctly on OS X".

Download, full release notes.

Next Page »