Here is a little prologue on this series. There’s no need in reading if you’re only interested on the good stuff. Feel free to head onto the next post
Well, this is my first blog post ever. Probably my latest piece of formal writing in forever. I say formal in a lack of a better word since I have no intent on sounding like I know stuff. In reality, I, like many others, am suffering of a serious case of lack of a proper documentation – at least for what I’m trying to accomplish. For that reason, I’d like to share with the world my struggle, my pain and my regrets. That sounded very exaggerated. But you’ll get how I feel when your google search end up with no more than three relevant results. Two of them are of people saying that they didn’t manage to work things out. The last is one of those infamous Altera’s pdf that is loosely related to your search and render no result whatsoever. Well, I think is reasonable to explain what I’m trying to accomplish.
I’ve been an enthusiast on computer science since forever. Perhaps, my early years spending multiple hours per day playing any form of video game had some influence in this. One day, during my high school, I suddenly decided that I would pursuit a degree on computer science. More specifically, hardware design. Even more specifically, CPU architecture design. Well, things changed along the way and I kind of drifted off from this initial ambition. I`m still graduating on a hardware focused course but I acquired taste for other intriguing subjects. Particularly I felt a change of heart towards Artificial Intelligence. Man, how I though that talk about machine learning and second order formal logic was awesome; don’t judge. In the end I decided my thesis would be a combination of AI and hardware design.
My idea is a proof of concept of software/hardware co-design powered by genetic algorithms. And what is that, you may ask. Modesty aside, it’s pretty awesome. Well, the idea is creating an autonomous application capable of generating populations of random hardware configurations then classifying each of the solutions according to its performance. Then crossing the fittest – highest performance – solutions with each other while discarding the worst. Finally, new solutions are generated from these select survivors. Just like evolution and natural selection – Darwin sends his best wishes. This process is done repeatedly, until we have a convergence in the solutions and theoretically we’d have the most suitable hardware configuration for a given load of software.
I believe the concept of evolutionary computing and genetic algorithms and why I chose them to study really deserve a post of its own, so I’ll leave to some other time.
So, in essence, I need to be able to implement a complete flow of hardware creation, synthesis, configuration, software compilation, download and benchmark. And only then, I’ll start to implement all that genetic algorithm mumbo jumbo. But have no fear! I’m here for the long haul. Please join me as I try to tame the Altera/Intel FPGA Development Tools on Linux. There will drama, laughs and of course a good romance. Fun for all family!
Cover photo: Clyde Beatty taming a lion with a chair. Image from Harvard Library.