Wednesday, December 17, 2008

GPULib 1.0.6 update available

We've just released GPULib 1.0.6 at

This fixes a bug for Windows users relating to using FFT calls.

Tuesday, December 16, 2008

MATLAB bindings undergoing major redesign

We're currently doing a major redesign of the MATLAB bindings for GPULib -- if all goes well, they should be done sometime in the next few weeks. If you have any questions about using MATLAB with GPULib, please let us know.

GPULib 1.0.4 update available

GPULib 1.0.4 is now available at

This release contains various bug fixes for IDL, as well as 64 bit DLLs for IDL and MATLAB for Windows users.

Thanks for the comments and bug reports -- keep telling us what you'd like in GPULib, and we'll keep developing the software to meet your needs. And, as always, feel free to leave comments in the blog or email us at with questions, comments, or suggestions. Finally, if you're at the AGU meeting in San Francisco this week, stop by the Tech-X booth (#2114) and say hello!

Wednesday, December 10, 2008

GPULib tidbits

We continue to get questions and suggestions from users -- thanks for your input! Some of the same questions have come up, so I thought I'd try to address them here.

To get some extra information on the GPU hardware (including memory available), you can do the following:

IDL> cardID = 0L ; the card ID you want to know more about
IDL> err = cudaGetDeviceProperties(prop, cardID)
IDL> print,
IDL> help, prop, /struct

The wrapper is a bit rough (it's a low level CUDA function), but it gives you a lot of useful information. Remember that your application will be limited by the amount of memory available on the GPU card -- if you go past this limit, you'll get unpredictable behavior.

We've also had some questions about the difference between CPU and GPU calculations. Right now we're shipping the library with the 'enable-fast-math' option turned on in CUDA. This uses the fastest, but least IEEE compliant form for floating point operations. It could easily be turned off and still yield good performance (as we're mainly memory bandwidth limited), and we may switch to this build method in the future. Hard numbers for the precision of GPU calculations can be found in the the CUDA user manual. In one of the appendices it has some documentation on the error bounds of the individual functions. It's usually within the last two bits of the mantissa.

Finally, som users are looking at investing in new hardware on which to run GPULib, and were looking for recommendations and comparison for different CUDA-enabled hardware. A starting point for evaluating such cards is at

Cost runs from left to right, performance runs roughly from top to bottom. If double support is important for your application, you have to go with either a GTX 260/280, a C1060, or the FX5800 right now.

If you have any questions about this (or anything else related to GPULib), feel free to post comments below, or email the user's list or Tech-X support. We're still working on the next release (1.0.4), and we'll let you know as soon as it's available.

Friday, November 21, 2008

Bug in gpuMatrix_Multiply

A user recently reported a bug in the current version of GPULib:

The procedure gpuMatrix_Multiply calls the function gpuMatrixMultiply().
That should be gpuMatrix_Multiply(), i.e., with the underscore.

There was a typo in this function in the GPULib 1.0.2 release. As a workaround, you can edit the file


to include the underscore in the call to gpuMatrix_Multiply(). This bug (and others) have been fixed and will be out for the 1.0.4 version of GPULib, coming soon.

Thanks for the bug report -- if anyone finds any other issues, please let us know and we'll address them as soon as possible.

Thursday, November 20, 2008

Using Remote Desktop with GPULib

We had a question recently from a user attempting to use Remote Desktop to run GPULib on a Windows machine. Unfortunately, this is a known limitation of CUDA; due to the way Remote Desktop functions, CUDA (and therefore, GPULib) won't function properly.

However, there is a bit of a workaround -- you can use VNC instead of Remote Desktop to access the machine remotely. VNC essentially screen-scrapes instead of trying to be clever about display APIs, so while display performance will not be as good as using Remote Desktop it should run GPULib applications just fine. Some developers on the NVIDIA discussion suggest a hybrid approach -- the use Remote Desktop to access the remote machine when developing code, and VNC when running it. Using VNC also has the advantage of being platform-independent; both client and server could be Linux, OS X, or Windows.

There are several implementations of VNC, including:

Wednesday, November 19, 2008

GPULib 1.0.2 update available

A user discovered a bug when using GPULib 1.0.0 on Windows (the issue described in the earlier post) and we've corrected that in GPULib 1.0.2, released this afternoon. To obtain this update, visit the download link at

Thanks for the bug reports and questions!

Error: "Attempt to call undefined procedure/function: 'GPUADD'."

Some users have seen the following error when using GPULib's IDL bindings:

IDL> gpuinit
% Attempt to call undefined procedure/function: 'GPUADD'.
% Error occurred at: GPUINIT 137 C:\Documents and
% $MAIN$
% Execution halted at: $MAIN$

If this happens to you, you may need to copy the file IDL\lib\ to IDL\lib\, overwriting the original file.

UPDATE: We've released a new version of GPULib, v1.0.2, that fixes this error. See

to get the new version.

Tuesday, November 18, 2008

GPULib 1.0.0 is available!

Tech-X Corporation is pleased to announce that GPULib 1.0.0 has been released. This first major release contains full bindings for IDL and MATLAB, as well as header files for C. Python bindings are also included. GPULib is available for Linux, Mac OS X, and Windows -- the release includes pre-built DLLs for Windows users, as well as build files for all platforms. Full details are at

GPULib is available for non-commercial use under AGPL, as well as commercial licensing from Tech-X.

We'd like to thank all of the beta testers who asked questions, provided suggestions, and pointed out bugs in the code. :-) We'll keep working on improving the software, so please continue to tell us how we can best make the code suit your needs. The GPULib User's List is a good place to contact us, as well as your fellow GPULib users. You can also email us at if you run into technical issues.

GPULib users mailing list

We now have mailing list set up for users of GPULib. To sign up, go to

Questions, feature requests, feedback, etc. are all welcome.

Monday, November 17, 2008

Tech-X at SC08 -- booth 1324

If you're attending SC08 in Austin, TX this week, please stop by and visit the Tech-X booth -- we're number 1324. GPULib developers will be available to answer any questions you might have, as well as to talk about plans for new features in upcoming versions.

Friday, November 7, 2008

GPULib 1.0 at SC08

Tech-X will be releasing the 1.0 version of GPULib at SC08.  This supercomputing conference runs from November 15-21, 2008 and will be held in Austin, TX.  Full details are at

If you're going to be at the conference, feel free to stop by the Tech-X booth to see demos of GPULib and chat with some of the developers.

Thanks for all of your feedback from the various beta releases, including the most recent 0.5 beta.  We've gotten many good comments and suggestions -- keep them coming!  You can contact us by leaving comments on the blog, or sending email to

We hope GPULib continues to help you speed up your applications.

Thursday, November 6, 2008

GPULib 0.5 is now available

We've just released a new version of GPULib.  Version 0.5 is available at

The interface continues to improve for both IDL and MATLAB.  We've also made the package much easier to build; once you have CUDA installed, you should be able to build the software with a much more familiar 

tar -xvzf gpulib-0.5.tar.gz
cd gpulib-0.5

Also, this version of GPULib should build easily on Mac OS X as well, with the same steps as above.  With Apple using CUDA-enabled NVIDIA graphics chips in its new MacBook and MacBook Pro releases, this should allow even more users to begin using the GPU for number crunching.

For both Linux and OS X, the configure script will do its best to find IDL and MATLAB automatically.  If you don't have IDL or MATLAB, you can disable building those bindings.  See the README file for full details.

Once you have the package built, running

make check

will run a series of demos for IDL, MATLAB, and C.  The latter is currently just a skeleton, but we'll be adding more C examples soon.

Finally, many users have been asking for better documentation.  We're still working on the User's Guide, but in the meantime both the IDL and MATLAB APIs have much better documentation than the previous release.  If you run

make html

GPULib will generate comprehensive documentation for the IDL bindings, contained in gpulib-0.5/IDL/docs.  MATLAB users can run

help gpuArray

and browse the API and related documentation directly in MATLAB.

As always, feel free to leave questions, comments, feature requests, etc. in the comments, or email us at

Wednesday, August 13, 2008

IDL tip: compile gpuinit before running your own procedures

Another "gotcha" came up today from a user; when using GPULib in IDL, you may need to compile gpuinit before running your code. For example, to run a procedure you've written called foo, you should do something like the following:
IDL> .compile gpuinit
IDL> .compile foo
IDL> foo
As always, if you have questions or suggestion regarding GPULib, feel free to leave comments or email

Tips on building GPULib

Several users have pointed out recently that the documentation included with GPULib is sparser than they would like. The docs do require updating, and you should see better installation and use instructions with the next release of the libraries. Until then, here are some tips on how to deal with common issues.

If you're having trouble getting GPULib to build, make sure that the most recent CUDA libraries are installed for your platform. Also, make sure that you have any other software you need; you can't build the IDL bindings without IDL installed on the machine, for example.

If you see errors such as the following during the build:

cc -I/usr/local/rsi/idl/external/include -I/usr/local/cuda/include -O3 -fPIC -I../vectorOp -I../physicsOp -c gpulib.c
gpulib.c:38:24: error: idl_export.h: No such file or directory
gpulib.c:48: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'get_IDL_long'
In file included from gpulib.c:163:
../vectorOp/gpuVectorOpFuncList.h:38: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'IDL_gpuSqrtF'
../vectorOp/gpuVectorOpFuncList.h:39: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'IDL_gpuExpF'
you probably need to change your configure line to help GPULib figure out where IDL is. A configure line such as

./configure --disable-MATLAB --with-idl-dir=/path/to/idl
should fix this issue and allow the build to continue.

If you encounter any other issues, feel free to describe them in the comments or send email to

Monday, July 7, 2008

Example MATLAB code in GPULib

I recently had a question from a user looking for information on how to use GPULib with MATLAB; you can find examples of how to use GPULib in the


directory of the current distribution.

We're working on refining the MATLAB interface to the library, and hopefully we'll be able to share that work with you soon. In the meantime, if you have suggestions or comments about using GPULib with MATLAB, please let us know!

Monday, June 23, 2008

GPULib 0.3p7 released

Development continues on GPULib -- the team has made a new release; 0.3p7 can be downloaded at

Wednesday, June 18, 2008

New version 0.3p6 available

Tech-X has just released a new version of GPULib. It is available from

Questions, comments, bug reports, and feature requests are welcome.

Wednesday, April 30, 2008

Nvidia's David Kirk on CUDA, CPUs and GPUs

bit-tech has a quite interesting interview up with Nvidia's Chief Scientist David Kirk, where he discusses the future of GPU computing.

Tuesday, April 29, 2008

Intel to build sGPU supercomputer: Nvidia Tesla cards to debut in Bull system

The original Bull NovaScale supercomputer setup was based on 1068 nodes, which will result in a total of 8544 processing cores for a peak floating point performance of 192 TFlops. Apparently the design was recently upgraded with 48 nodes of Nvidia Tesla S900 GPGPU cards with 96 (GT200) GPUs. The expected performance is now about 300 TFlops. In comparison, BlueGene/L, currently the world's most powerful supercomputer, peaks at 596 TFlops an uses 212,992 processing cores.

Friday, March 7, 2008

New version 0.3p1 available

A new version of GPULib (0.3p1) is available at

This new version contains a variety of bug fixes and minor updates. Please contact us if you run into any issues or have feature requests.

Thursday, February 21, 2008

Technology preview version 0.3 released

Later today we will release the latest technology preview of the GPULib (version 0.3). This version now contains at least prototypes for all the language bindings (IDL, MATLAB, Python and Java) and many new functions (various collective operations, conditionals, random number generator and more) that should all make it easier to develop algorithms that can keep data on the GPU for as long as possible.

As the name suggests, this is neither a full version nor a full release, but it will give you the opportunity to play around with the library, see if your algorithm could take advantage of a GPU and provide us feedback on missing kernels/functions, surprises you've encountered during installation and use, and hopefully success stories.

We're looking forward to hear from your,


Wednesday, February 20, 2008

Blog set up

In order to communicate with users quickly, the GPULib dev team has set up this blog.  For more information on GPULib, visit