We've just released GPULib 1.0.6 at
http://gpulib.txcorp.com
This fixes a bug for Windows users relating to using FFT calls.
A developer's diary of GPULib, a software library enabling GPU-accelerated calculations for IDL.
Wednesday, December 17, 2008
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
http://www.txcorp.com/products/GPULib/
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 support@txcorp.com 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!
http://www.txcorp.com/products/GPULib/
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 support@txcorp.com 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, prop.name
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
http://www.nvidia.com/object/cuda_learn_products.html
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.
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, prop.name
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
http://www.nvidia.com/object/cuda_learn_products.html
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:
There was a typo in this function in the GPULib 1.0.2 release. As a workaround, you can edit the file
IDL/lib/gpumatrix_multiply.pro
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.
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
IDL/lib/gpumatrix_multiply.pro
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:
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
http://gpulib.txcorp.com
Thanks for the bug reports and questions!
http://gpulib.txcorp.com
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
Settings\Sizemore\Desktop\gpulib-1.0.0\IDL\lib\gpuinit.pro
% $MAIN$
% Execution halted at: $MAIN$
If this happens to you, you may need to copy the file IDL\lib\gpuinit.pro.orig to IDL\lib\gpuinit.pro, overwriting the original gpuinit.pro file.
UPDATE: We've released a new version of GPULib, v1.0.2, that fixes this error. See
http://gpulib.txcorp.com
to get the new version.
IDL> gpuinit
% Attempt to call undefined procedure/function: 'GPUADD'.
% Error occurred at: GPUINIT 137 C:\Documents and
Settings\Sizemore\Desktop\gpulib-1.0.0\IDL\lib\gpuinit.pro
% $MAIN$
% Execution halted at: $MAIN$
If this happens to you, you may need to copy the file IDL\lib\gpuinit.pro.orig to IDL\lib\gpuinit.pro, overwriting the original gpuinit.pro file.
UPDATE: We've released a new version of GPULib, v1.0.2, that fixes this error. See
http://gpulib.txcorp.com
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
http://gpulib.txcorp.com/
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 support@txcorp.com if you run into technical issues.
http://gpulib.txcorp.com/
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 support@txcorp.com 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
http://ice.txcorp.com/mailman/listinfo/gpulib-users
Questions, feature requests, feedback, etc. are all welcome.
http://ice.txcorp.com/mailman/listinfo/gpulib-users
Questions, feature requests, feedback, etc. are all welcome.
Monday, November 17, 2008
Tech-X at SC08 -- booth 1324
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 support@txcorp.com.
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
./configure
make
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 support@txcorp.com.
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 gpuinitAs always, if you have questions or suggestion regarding GPULib, feel free to leave comments or email support@txcorp.com.
IDL> .compile foo
IDL> foo
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:
If you encounter any other issues, feel free to describe them in the comments or send email to support@txcorp.com.
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.cyou probably need to change your configure line to help GPULib figure out where IDL is. A configure line such as
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'
./configure --disable-MATLAB --with-idl-dir=/path/to/idlshould 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 support@txcorp.com.
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
gpulib-0.3p7/MATLAB/ode_cell/
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!
gpulib-0.3p7/MATLAB/ode_cell/
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
http://www.txcorp.com/technologies/GPULib/
http://www.txcorp.com/technologies/GPULib/
Wednesday, June 18, 2008
New version 0.3p6 available
Tech-X has just released a new version of GPULib. It is available from
http://www.txcorp.com/technologies/GPULib/download.php
Questions, comments, bug reports, and feature requests are welcome.
http://www.txcorp.com/technologies/GPULib/download.php
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.
http://www.bit-tech.net/hardware/2008/04/30/david-kirk-interview/1
Tuesday, April 29, 2008
Intel to build sGPU supercomputer: Nvidia Tesla cards to debut in Bull system
http://www.tgdaily.com/content/view/37070/135/
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
http://www.txcorp.com/technologies/GPULib/download.php
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.
http://www.txcorp.com/technologies/GPULib/download.php
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,
Peter
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,
Peter
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
Subscribe to:
Posts (Atom)