From: "andrew cooke" <andrew@...>
Date: Mon, 14 Jul 2008 23:40:44 -0400 (CLT)
I decided to explore GPGPU - http://en.wikipedia.org/wiki/GPGPU After a look around it seemed like NVidia CUDA had most activity/support and a low entry price. So I went out and bought me a new graphics card (a couple of days before the rumours started about bad 8400 and 8600 chips) - an air-cooled MSI GeForce NX8600GT with 512 MB memory (nothing wonderful - just one step up from the minimum so it should, hopefully, be faster than my CPU). (BTW, since I was worried about temperatures after adding the card, I had a look at my disks, and found they were worryingly high at around 45C; Removing an unused bracket from inside the case improved airflow and got them down to around 35C. The GPU sits at just under 50C when in normal use - the heatsink is directly under a fairly quiet case mounted fan (I bought aircooled mainly because I was worried about replacement GPU fans - I know I can find quiet, case-mounted fans no problem)). Then I installed the software. The NVidia site - http://www.nvidia.com/object/cuda_get.html - doesn't mention OpenSuse 11, but the 10.3 stuff has worked OK so far. First I installed the driver, which works the same as other NVidia binary driver installs (a curses non-X interface that compiles and installs automatically - looks a bit odd but has always been very reliable). Next the support library, and finally the SDK. The SDK install was a bit odd - turns out there's a Perl script in there that's buffering text it should be sending to stdout. So here's the workaround: ./NVIDIA_CUDA_sdk_2.0beta2_linux.run --help shows a bunch of options, including one to just unpack the source. Use that. Then edit the perl script - install-sdk-linux.pl - so that it includes select((select(STDOUT), $|=1)[0]); just before the first "if" statement. Then run the script. I've not actually used the toolkit yet - will post updates later. Andrew
Using gcc-4.3
From: "andrew cooke" <andrew@...>
Date: Tue, 15 Jul 2008 00:22:18 -0400 (CLT)
Just hit this: http://forums.nvidia.com/lofiversion/index.php?t70216.html (I had to modify cmd_arg_reader.h instead of .cpp, and cppIntegration.cpp seems to be missing from a path). Also hit the first known issue here: http://developer.download.nvidia.com/compute/cuda/1_1/CUDA_SDK_release_notes_linux.txt Also hit http://forums.nvidia.com/lofiversion/index.php?t43510.html ...and with those fixes, it seems to work - compile with no further errors, and the first example runs! While running the screen locks up (mouse disappears) for a moment, and the GPU temperature increases slightly. :o) Ooo - and some graphics demos too :o))) qp6c release: ./deviceQuery There is 1 device supporting CUDA Device 0: "GeForce 8600 GT" Major revision number: 1 Minor revision number: 1 Total amount of global memory: 536543232 bytes Number of multiprocessors: 4 Number of cores: 32 Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 16384 bytes Total number of registers available per block: 8192 Warp size: 32 Maximum number of threads per block: 512 Maximum sizes of each dimension of a block: 512 x 512 x 64 Maximum sizes of each dimension of a grid: 65535 x 65535 x 1 Maximum memory pitch: 262144 bytes Texture alignment: 256 bytes Clock rate: 1.19 GHz Concurrent copy and execution: Yes Andrew
Diff and Patched CUDA SDK for OpenSuse 11, 64 bit
From: "andrew cooke" <andrew@...>
Date: Thu, 17 Jul 2008 08:32:41 -0400 (CLT)
Updated: Diffs now include change to installer perl script too (tarball is unchanged) Important: see additional instructions at the end of this post. There are also downloads below. Here is a simple diff of the changes I made. Note that they are just as I did them in a hurry, taking no care to place includes under correct comment blocks etc: qp6c nvidia: diff -r sdk sdk-patched diff -r sdk/install-sdk-linux.pl sdk-patched/install-sdk-linux.pl 20a21,22 > select((select(STDOUT), $|=1)[0]); > diff -r sdk/sdk/common/common.mk sdk-patched/sdk/common/common.mk 125c125,126 < CUBIN_ARCH_FLAG := -m32 --- > #CUBIN_ARCH_FLAG := -m32 > CUBIN_ARCH_FLAG := -m64 diff -r sdk/sdk/common/inc/cmd_arg_reader.h sdk-patched/sdk/common/inc/cmd_arg_reader.h 34a35,36 > #include <typeinfo> > diff -r sdk/sdk/common/inc/exception.h sdk-patched/sdk/common/inc/exception.h 37a38 > #include <cstdlib> diff -r sdk/sdk/common/src/cutil.cpp sdk-patched/sdk/common/src/cutil.cpp 52a53 > #include <cstring> diff -r sdk/sdk/common/src/paramgl.cpp sdk-patched/sdk/common/src/paramgl.cpp 8a9 > #include <cstring> diff -r sdk/sdk/projects/cppIntegration/main.cpp sdk-patched/sdk/projects/cppIntegration/main.cpp 47a48 > #include <cstdlib> For a limited time, I am also providing the following downloads. There's no intention of breaking any copyright and if NVidia or anyone else wants these removed, please just email me at andrew@... A context diff is available at http://www.acooke.org/cuda-sdk.diff A gzipped tarball of the patched SDK is available at http://www.acooke.org/sdk-patched.tgz To use this, unpack and then run the perl script install-sdk-linux.pl *** IMPORTANT **** In addition, you still need to apply the fix described at http://developer.download.nvidia.com/compute/cuda/1_1/CUDA_SDK_release_notes_linux.txt This means doing the following: sudo ln -s /usr/lib64/libglut.so.3 /usr/lib64/libglut.so So, to use CUDA on OpenSuse 11 64 bit you must: 1: Install the various drivers and support files provide by NVidia 2: Instead of installing the SDK they provide, install the one provided above. 3: Link libglut as described above For 32 bit things should be similar, but omit the "-m64" change in common.mk and look for libglut in /usr/lib. Disclaimer: With these changes I can (nearly?) run all the examples. I have not done any other work yet with CUDA. Andrew