When will the next contest be posted? I’m eager to work on it. B)
Yeah a contest sounds cool. Were there any before?
We’re working on some more, and hopefully we’ll have an update in the next few days.
Aren’t old contests available somewhere?
A contest on x264 CUDA patch maybe great :)
Hmm, I think optimizing codecs is way too specialized to attract a general public. It requires previous experience in the field to have any chance of winning.
My recommendation: Find something that is more attractive to a wider audience.
I posted this in the general forum:
Maybe this would be a good contest idea? (It’s a post about the MusicBrainz/MusicDNS service, if you don’t want to follow the link).
I’ve also been looking at the GASS .NET bindings for CUDA; they’re pretty useful, but a bit…unpolished. I would like to see someone come up with a .NET binding for CUDA that actually fits into the style of the .NET framework, or better yet, come up with a generic interface for doing FFT and Linear-algebra type work, then implement the interface with the CUDA bindings.
Any updates? It’s been a a couple days + weeks and still no word. :(
For the next contest, I would like to formally request improving libpoker-eval
What makes this library interesting, important, or practical for CUDA implementation?
– This says it all.
Any update on if/when there will be another contest? How about something to go along with the launch of CUDA 2.1?
Wait, why can’t we just make our own contest?
We can even make it interesting throw some money down.
We can think of some good challenges, and I’m sure some us would thoroughly enjoy a competition against fellow forum members.
P.S. NVIDIA probably is still pissed off that in the last contest two people submitted working code. And one of them had to get $5,000. Of course, what’d NVIDIA expect? Encoding MP3s is hard. The kind of hard that’s a lot of work, not the kind that’s a lot of thinking.
Actually that’s not a bad idea!
Though ideally the actual task should be something small and interesting. Some big huge app is a daunting job, but a small 2-hour side project might get more people to dabble. Ideally there would be a working starting project, similar to the SDK examples, with a “gold” compute to verify correctness, and the goal is to make it faster.
Here’s a idea for a contest that’s easy to specify, easy to solve, but quite interesting to optimize, and in fact quite hard to perfect: binning.
You have an unsorted list of 5M points. Each point has an XY integer coordinate from 0 to 100. There are therefore 100*100 =10000 possible coordinates. You know that no coordinate has more than 1000 points with that value.
The task: Bin the points into 10000 lists, one list for each coordinate. Do it quickly.
This task is easy to write in just a few lines of code by using global atomics… but that solution is painfully slow. You can come up with many, many alternatives, but the fastest solution is unclear. So the task is easy to understand… but actual fast implementation is tricky!
And the question has quite important applications, for example in HOOMDwhere atoms get binned as an important step in neighbor finding.
That’s a good idea.
Binning is an interesting suggestion, but maybe too specific. The problem of trying to render a billion spheres struck me as really interesting, but I think we discussed it to death. Then again the consensus was that that also involved binning.
I think any contest should be pretty darn simple… because even simple problems have quite interesting tricks and surprises.
In fact, look at the SDK Reduction example docs… which are very very interesting to read. The step by step analysis and experiments are fascinating and it’s unclear that even reduction has not been completely optimized yet. A completely reasonable contest would be to improve it even further! There’s likely not major optimizations left but it’d be an interesting low-level analysis problem.
Of course freeform contests may inspire creativity too. Imagine a contest which says “here’s 50MB of English text. Implement a compression program which reduces the text to at most 10MB of binary data. The winner is a pair of GPU programs. The compressor takes 50MB of text already in GPU memory and outputs a block of binary compressed data (no bigger than 10MB, though less is fine.). The decompressor does the opposite. The winner is the entry with the shortest time to run the compression then the decompression kernels sequentially. The CPU can not be used except for minor host management.”
That kind of contest is wide open because even the DESIGN of the compression is wide open and can be invented… no need to use any existing format, so you can optimize your tool around the GPU’s strengths. That compression algorithm/format choice would likely make much more difference than implementation efficiency. A “optimize reduction” contest is more about getting every single PTX opcode perfect. The binning example is probably something inbetween the two examples.
I would love for more official contests to begin. NV doesn’t have to make a huge prize (though a free Quadro would be nice …) and it doesn’t even necessarily have to have a leaderboard.