It's time to get started with my IDA Summer of Code project I've nicknamed Ocius. The Latin word for "faster".
It's a library for writing code accelerated by the GPU. There are already some libraries which does this, the most known perhaps being Thrust and OpenACC. They work thanks to CUDA and preprocessor directives while I'll provide a basic foundation for writing Concurrent Multicore/OpenCL/OpenGL C++ code. I know already I cannot "compete" with projects like these at my current level of skill. However my intention was never to save the world, merely to take a step in the right direction. Because parallelism is the name of the game and the future of computing if we want to stand a chance keeping up with Moore's Law.
"The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry." -- Henry Peteroski
This code will be a continuation of the work I've done in my labs and projects in school. Rewritten for more generic re-use of course. With this library's powerful concurrency and parallelism techniques I plan to create even better projects in the future. If my school would like to use it in their labs I would be very happy. Perhaps it could even lay the foundation for a master thesis. These are my goals with the Ocius project.
We had our startup meeting today where we were shown the room we would have access to and everyone told each other some about our projects. There are some really sharp guys in this group and I look forward to working with them, even though we all have our own projects we can all help each other. I think I might need a few days to read up on a few subjects before I get down to the code. I do think Hammock Driven Development is a good idea and hope it will help me write a good code base.
I will probably live stream my coding sessions over at my twitch account. Hopefully someone will find that entertaining. I will also continue to blog here about my progress and give a summary of every week. My very coarse grained plan is as follows: First encapsulate all functionality in a decent and generic manner. Second write benchmarking utilities and examples. Third integrate it into my hobby game engine, hopefully ending in a playable demo. I'm very excited and we'll see how it goes.