| 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

Bicycle Wheels, Inertia, and Energy; Another Tax Fraud; Google's Borg; A Verion That Redirects To Local HTTP Server; Spanish Accents For Idiots; Aluminium Cans; Advice on Spray Painting; Female View of Online Chat From a Male; UX Reading List; S4 Subgroups - Geometric Interpretation; Fucking Email; The SQM Affair For Idiots; Using Kolmogorov Complexity; Oblique Strategies in bash; Curses Tools; Markov Chain Monte Carlo Without all the Bullshit; Email Para Matias Godoy Mercado; The Penta Affair For Idiots; Example Code To Create numpy Array in C; Good Article on Bias in Graphic Design (NYTimes); Do You Backup github?; Data Mining Books; SimpleDateFormat should be synchronized; British Words; Chinese Govt Intercepts External Web To DDOS github; Numbering Permutations; Teenage Engineering - Low Price Synths; GCHQ Can Do Whatever It Wants; Dublinesque; A Cryptographic SAT Solver; Security Challenges; Word Lists for Crosswords; 3D Printing and Speaker Design; Searchable Snowden Archive; XCode Backdoored; Derived Apps Have Malware (CIA); Rowhammer - Hacking Software Via Hardware (DRAM) Bugs; Immutable SQL Database (Kinda); Tor GPS Tracker; That PyCon Dongle Mess...; ASCII Fluid Dynamics; Brandalism; Table of Shifter, Cassette and Derailleur Compatability; Lenovo Demonstrates How Bad HTTPS Is; Telegraph Owned by HSBC; Smaptop - Sunrise (Music); Equation Group (NSA); UK Torture in NI; And - A Natural Extension To Regexps; This Is The Future Of Religion; The Shazam (Music Matching) Algorithm; Tributes To Lesbian Community From AIDS Survivors; Nice Rust Summary; List of Good Fiction Books; Constructing JSON From Postgres (Part 2); Constructing JSON From Postgres (Part 1); Postgres in Docker; Why Poor Places Are More Diverse; Smart Writing on Graceland; Satire in France; Free Speech in France; MTB Cornering - Where Should We Point Our Thrusters?; Secure Secure Shell; Java Generics over Primitives; 2014 (Charlie Brooker); How I am 7; Neural Nets Applied to Go; Programming, Business, Social Contracts; Distributed Systems for Fun and Profit; XML and Scheme; Internet Radio Stations (Curated List); Solid Data About Placebos; Half of Americans Think Climate Change Is a Sign of the Apocalypse; Saturday Surf Sessions With Juvenile Delinquents; Ssh, tty, stdout and stderr; Feathers falling in a vacuum; Santiago 30m Bike Route; Mapa de Ciclovias en Santiago; How Unreliable is UDP?; SE Santiago 20m Bike Route; Cameron's Rap; Configuring libxml with Eclipse; Reducing Combinatorial Complexity With Occam - AI; Sentidos Comunes (Chilean Online Magazine); Hilary Mantel: The Assassination of Margaret Thatcher - August 6th 1983; NSA Interceptng Gmail During Delivery; General IIR Filters; What's happening with Scala?; Interesting (But Largely Illegible) Typeface; Retiring Essentialism; Poorest in UK, Poorest in N Europe; I Want To Be A Redneck!; Reverse Racism; The Lost Art Of Nomography; IBM Data Center (Photo); Interesting Account Of Gamma Hack; The Most Interesting Audiophile In The World; How did the first world war actually end?; Ky - Restaurant Santiago; The Black Dork Lives!; The UN Requires Unaninmous Decisions; LPIR - Steganography in Practice

© 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