| Andrew Cooke | Contents | Latest | RSS | Twitter | Previous | Next


Welcome to my blog, which was once a mailing list of the same name and is still generated by mail. Please reply via the "comment" links.

Always interested in offers/projects/new ideas. Eclectic experience in fields like: numerical computing; Python web; Java enterprise; functional languages; GPGPU; SQL databases; etc. Based in Santiago, Chile; telecommute worldwide. CV; email.

Personal Projects

Lepl parser for Python.

Colorless Green.

Photography around Santiago.

SVG experiment.

Professional Portfolio

Calibration of seismometers.

Data access via web services.

Cache rewrite.

Extending OpenSSH.

C-ORM: docs, API.

Last 100 entries

An Outsider's Guide To Julia Packages; Nobody gives a shit; Lepton Decay Irregularity; An Easier Way; Julia's BinDeps (aka How To Install Cairo); Good Example Of Good Police Work (And Anonymity Being Hard); Best Santiago Burgers; Also; Michael Emmerich (Vibrator Translator) Interview (Japanese Books); Clarice Lispector (Brazillian Writer); Books On Evolution; Looks like Ara (Modular Phone) is dead; Index - Translations From Chile; More Emotion in Chilean Wines; Week 7; Aeon Magazine (Science-ish); QM, Deutsch, Constructor Theory; Interesting Talk Transcripts; Interesting Suggestion Of Election Fraud; "Hard" Books; Articles or Papers on depolarizing the US; Textbook for "QM as complex probabilities"; SFO Get Libor Trader (14 years); Why Are There Still So Many Jobs?; Navier Stokes Incomplete; More on Benford; FBI Claimed Vandalism; Architectural Tessellation; Also: Go, Blake's 7; Delusions of Gender (book); Crypto AG DID work with NSA / GCHQ; UNUMS (Universal Number Format); MOOCs (Massive Open Online Courses); Interesting Looking Game; Euler's Theorem for Polynomials; Weeks 3-6; Reddit Comment; Differential Cryptanalysis For Dummies; Japanese Graphic Design; Books To Be Re-Read; And Today I Learned Bugs Need Clear Examples; Factoring a 67 bit prime in your head; Islamic Geometric Art; Useful Julia Backtraces from Tasks; Nothing, however, is lost with less discomfort than that which, when lost, cannot be missed; Article on Didion; Cost of Living by City; British Slavery; Derrida on Metaphor; African SciFi; Traits in Julia; Alternative Japanese Lit; Pulic Key as Address (Snow); Why Information Grows; The Blindness Of The Chilean Elite; Some Victoriagate Links; This Is Why I Left StackOverflow; New TLS Implementation; Maths for Physicists; How I Am 8; 1000 Word Philosophy; Cyberpunk Reading List; Detailed Discussion of Message Dispatch in ParserCombinator Library for Julia; FizzBuzz in Julia w Dependent Types; kokko - Design Shop in Osaka; Summary of Greece, Currently; LLVM and GPUs; See Also; Schoolgirl Groyps (Maths); Japanese Lit; Another Example - Modular Arithmetic; Music from United; Python 2 and 3 compatible alternative.; Read Agatha Christie for the Plot; A Constructive Look at TempleOS; Music Thread w Many Recommendations; Fixed Version; A Useful Julia Macro To Define Equality And Hash; k3b cdrom access, OpenSuse 13.1; Week 2; From outside, the UK looks less than stellar; Huge Fonts in VirtualBox; Keen - Complex Emergencies; The Fallen of World War II; Some Spanish Fiction; Calling C From Fortran 95; Bjork DJ Set; Z3 Example With Python; Week 1; Useful Guide To Starting With IJulia; UK Election + Media; Review: Reinventing Organizations; Inline Assembly With Julia / LLVM; Against the definition of types; Dumb Crypto Paper; The Search For Quasi-Periodicity...; Is There An Alternative To Processing?; CARDIAC (CARDboard Illustrative Aid to Computation); The Bolivian Case Against Chile At The Hague; Clear, Cogent Economic Arguments For Immigration; A Program To Say If I Am Working

© 2006-2015 Andrew Cooke (site) / post authors (content).

GPGPU / NVidia Cuda / OpenSuse 11

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

 ./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

 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.


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:

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


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
> select((select(STDOUT), $|=1)[0]);
diff -r sdk/sdk/common/common.mk sdk-patched/sdk/common/common.mk
> #CUBIN_ARCH_FLAG := -m32
diff -r sdk/sdk/common/inc/cmd_arg_reader.h
> #include <typeinfo>
diff -r sdk/sdk/common/inc/exception.h sdk-patched/sdk/common/inc/exception.h
> #include <cstdlib>
diff -r sdk/sdk/common/src/cutil.cpp sdk-patched/sdk/common/src/cutil.cpp
> #include <cstring>
diff -r sdk/sdk/common/src/paramgl.cpp sdk-patched/sdk/common/src/paramgl.cpp
> #include <cstring>
diff -r sdk/sdk/projects/cppIntegration/main.cpp
> #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

A gzipped tarball of the patched SDK is available at
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

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
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.

With these changes I can (nearly?) run all the examples.  I have not done
any other work yet with CUDA.


More Notes on GPGPU Programming

From: andrew cooke <andrew@...>

Date: Sat, 9 Jan 2010 12:22:27 -0300

Since writing the notes here I switched to OpenCL.  See the following links:

http://www.acooke.org/cute/Experience0.html - Summarizes the work I
did moving code from Matlab to OpenCL (a speedup of around 100x).

http://acooke.org/cute/MatlabonNV0.html - Earlier notes on Matlab +
OpenCL (better to read the link above).

http://acooke.org/cute/Installing2.html - Summary of OpenCL install on
OpenSuse 11.1


Comment on this post