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