Go Concurrency and Artificial Intelligence

Whats the fuss about Go? Well if you didn't know already, Go is one of Google's latest language contributions to the open source community. Designed by non other than Rob Pike, Ken Thompson (both heavily involved with Unix & Bell Labs) and Robert Griesemer, Go aka GoLang is a language developed to solve those annoyances faced by many of us on a daily basis (outrageously long compile times, unnecessary difficulty and complexity in developing massively parallel systems). The Go wiki states several goals that the language is designed to meet but the one I shall be focusing on mainly is the concurrency aspect to this language.


We have had multiple-core systems for quite a long time now yet rarely are there any applications that are designed to fully take advantage of this architecture. One can argue that the thought of parallel programming is daunting to the majority of programmers but on the other hand one can also argue that if done correctly, designing and implementing parallel applications is quite a lot easier than trying to achieve the same result through conventional programming. My background in parallel programming is through the use of the JCSP (a project by the University of Kent) under Prof. Jon Kerridge . I have read several articles that mention parallelism and concurrency in Go but none so far that really delve into the use of correct design patterns to implement parallel applications. Thus i will use my knowledge thus far of parallel programming to investigate how effective the Go language can be when it comes to developing parallel applications.


The main focus of this investigation will be the parallelization of Artificial Intelligence(machine learning) Algorithms in Go. The AI/ML field is one that is constantly seeking more and more computing power whether it be for data mining, weather prediction or gaming. This makes it an ample testing ground for new technologies and languages that offer less complexity and more computational power. Not only will i be testing a new language in a field it has yet to be really used in, I am aiming to apply it to algorithms and specialized sub-fields such as Deep Learning (which are very new and are currently on the bleeding edge of AI research) by the end of this project. This means that I may end up spending a lot of time building AI/ML libraries for the language as currently there are only five but I will make sure to regularly post progress updates for all interested observers.


+1 #6 Martian 2013-10-07 18:15
Waiting for new posts, this is interesting. Good luck with your project!
0 #5 Jon K 2013-10-01 12:53
Please write up everything you have been doing; it may not end up in the report but could well be included as an appendix in how to set up a go eclipse environment. I suggest you opull from my bitbucket the project in gows. and set up eclipse so that you can run the tests.
Continue reading the books on go and summarise what you have learnt and the bits that seem perverse eg arrays and slices and the use of make and new.

This should be working for next week as I go to Australia after that.
0 #4 Jon Kerridge 2013-09-24 12:14
Kevin put the cat among the pigeons by asking Manny lots of hard questions. This made Manny go away and really think about what he is doing and why.
He has promised me his compete IPO tomorrow. It may be too long but in that case we can reduce the content by calling it a more detailed plan as well.
+1 #3 Jon Kerridge 2013-09-17 12:31
we read his draft IPO and I suggested changes to ensure the scope was limited to Games AI examples.
Once that is done the IPO can be submitted as is without further review.
Then he should take his ipo plan and convert it into an activity plan. There should be an initial activity of installing and getting the eclipse plugin goclipse working.
The plan should appear on the blog, with timescales for the first three activities.
We will assign timescales to the rest as and when we get to them.
0 #2 Jon Kerridge 2013-09-13 10:54
Nice start; now the fun starts!
0 #1 James 2013-09-12 23:29
Look forward to this ;-)

Add comment

Security code