Category Archives: Programming

Git With Dropbox

These are my notes on setting up Git with Dropbox. I’m going to cover my view of a flexible Git-based workflow should be. Currently, my workflow includes tools like Subversion, Redmine, Trac and Hudson. So, my goal is to be able to migrate seamlessly and reach a sustainable state using git at the end of the day. Let’s set my requirements for the final solution:

Read the rest of this entry

Getting started with CPPUnit

Unit testing is beneficial for every software project, even randomized algorithms like metaheuristics and genetic algorithms. I want to just stress one benefit, unit testing encourages developers to write code with minimal dependencies, just because otherwise tests are hard to write. The fact that slows development velocity in terms of features per time unit is the increase in interactions between various features. The n+1 feature added may interact with n already available features in many ways. These n+1 features have n2 possible interactions. When dependencies are limited, possible feature interactions are also limited and the project complexity stays under control. Read the rest of this entry

Setting up OpenCL using an Nvidia device on Ubuntu

In this post, I’m trying to figure out basics of OpenCL. In fact, this is not a tutorial about OpenCL, but about creating and building OpenCL applications on Ubuntu. The tutorial is actually describing my exploration around the libraries. I already have NVidia drivers installed, CUDA library and CUDA SDK installed on my machine.

Read the rest of this entry

OpenMP tutorial

This is an introductory tutorial for OpenMP using GCC. The tutorial runs on Linux and has been checked on Ubuntu. The tutorial was created to present OpenMP to final year students of the Electrical & Computer Engineering Department of University of Patras, during the course Parallel and Distributed Processing and Applications.
The accompanying code is available under GPL from google code, here.
Read the rest of this entry