My favorites | Sign in
Project Home Wiki Issues Source
Project Information
Members
Featured
Wiki pages
Links

A socle (sok-lee) is a plynth, or a foundation on which greater works are built. It non-coincidentally also contains the letter sequence 'ocl'.

socles is a Java-hosted OpenCL processing library using JOCL as the binding mechanism.

The goal is to produce a set of good implementations of basic image processing stages implemented in OpenCL, primarily targeting GPU processors.

News

27-5-12

I debugged the SURF code (sigh, had lots of paste-os), created a demo and hooked it into the webcam tester.

So on the Radeon HD 6950 I'm using at the moment, turning on the SURF code adds about 4ms/frame to the displayed timestamp.
I did a bit of tweaking too. First I changed the integral image code to use the one in socles, and changed it to using integers - this code is roughly 2x faster and requires 1/2 the memory (although it's hard to tell, the numbers jumped around a lot - it's only a small fraction of the total time anyway). Then I wrote an alternate version of createDescriptors(). A measurable but insignificant improvement in running time of that function (~5%), but the code is IMHO more readable and closer to the opensurf code (it also includes the descriptor normalisation and requires one less kernel call).

25-5-12

Maybe a bit over-keen after a couple of wins elsewhere, I ported clsurf over to socles as well.

I've checked in the work-in-progress, which represents "i've typed in everything", but I haven't even tried to run it yet. I've added a more useful api and a better nearest-neighbour matcher and once I get it going I'll look at using socle's integral image calculator as well (i'm surprised its using floats, they wont handle very big images before running out of bits).
Not sure when I'll look at it next, but it's a bloody cold and wet week coming up ...

17-3-12

Added some stuff for processing graphs that hide much of the mucking about with opencl details.

2-3-12

And now there's a denoise & sharpen demo.

2-3-12

Well I kept going, the inverse code is in now. Still needs some tuning and still crashes my GPU on the forward code - but only sometimes.

2-3-12

So as I had a hacking day today (well I could've done anything, probably should've done other things, like get a hair cut and mow the lawn, but I chose to hack). And I thought as I haven't been making much progress on my VideoZ work I would try a change of scenery and revisit socles. It gave me a change to poke the DWT/QWT code I had sitting around on my hdd.

Details on the blog, as usual (It's still work in progress.)

28-2-12

Just updated the socles/soclesdemo to use the latest jogamp release (from 19-12-11). It now includes the runtime libraries inside the lib/ dir: but i've only included the 64-bit amd jars. Fortunately it didn't require any code changes; apart from some fixes to klt.cl for the AMD cpu driver, and fixing up the device discovery so I get a GPU properly.

I should really look at getting the DWT and Quaternion Wavelet Transform stuff in as well; but I can't remember what state I got it to, and I'm pretty sure it's some way from completion.

27-10-11

Been a busy bee this evening. I finally collected some of the test code into a demos sub-module. See soclesdemo. The quality and correctness of the code varies but they all WORKSFORME.

27-10-11

I've now implemented the colour version of the DCT denosing algorithm below. It's ... not surprisingly about 3x slower.
24-10-11
I checked in a simple implementation of a DCT denoise algorithm as described here: dct denoising and previously mentioned on the blog

Not super-fast because it needs to do 64xDCT's per 8x8 block and accumulate the results, but interesting nonetheless. So far i've only implemented the monochrome version.

21-10-11

So, i've got new AMD hardware. Most of the code still works fairly well but the viola-jones code really suffers from the different device characteristics. I'm still playing with ideas but i've checked in some code to use the hardware atomic counters if they're available: at least that moves the performance into the same order of magnitude as nvidia, but it still needs work.
7-10-11
Yep, been pretty quiet ... but i just checked in an array implementation of the separable convolution i mentioned on my blog yesterday.
10-9-11
Added some more optimisation ideas to the wiki, this time to do with loops: HintsLoops
9-9-11
I've been updating the Hints from time to time but I added enough to warrant another mention here.

I haven't really had many ideas on what to work on, although I found some wavelet stuff which could be interesting to play with: http://taco.poly.edu/WaveletSoftware/index.html

17-8-11

Added a Hints page to collect a few hints and tips on OpenCL/GPU hacking i've either read about or discovered along the way.
4-8-11
Created discussion group http://groups.google.com/group/socles-discuss should anyone want to communicate about socles.
4-8-11
Added a page on some of the details of the ViolaJones implementation, following an email query. Perhaps a discussion group is in order. I should probably get off my bum and package a demo of some sort too.
30-5-11
Added a 3-plane YUVP420 to RGB converter.
27-5-11
I've added an integral image calculator and a viola-jones detector implementation.
25-5-11
It's now using JOCL 2.0 RC 2, there is a somewhat terse Setup page on where to get the native binaries.

Demos

I'm still working on a GNU/Linux webcam demo or something similar; although there isn't a lot of point to a blurry camera.

Powered by Google Project Hosting