Category Archives: Uncategorized

Calling All OpenCL HPC Customers!

I have been very busy working on a few software projects to really change how professional OpenCL development is done.

The first product will be out at the end of February, and I am looking for people to try it out and test it.   If you contact me and ask for a preview I will send you a sneak peek!

The second product is my vision for how HPC software should be developed.  I am developing a new approach to HPC software, and companies that want a strategic advantage should get in touch with me to discuss how they can get access to it.

OpenCL Training Material: Seeking Sponsorship

I am searching for an organization to sponsor my training videos.  The development of these lectures takes a great deal of my time, and I am providing them for free.  You can save money by watching my lectures rather than paying for expensive professional training.  My lectures are still providing background, and have not yet demonstrated how to write real-life applications.  I assure you that more interesting topics are coming, but as you can appreciate a solid foundation is required first.

Where is this training material going?  Well, I see myself preparing somewhere between 10 and 20 videos covering a complete range of topics.  At the end, you should be an OpenCL and GPU programming expert, though perhaps a bit inexperienced.  You will understand how to tune algorithms to the hardware, and how to do good software engineering with OpenCL.  I will also show you how to use OpenCL within existing applications.

Please contact me if you are interested in sponsoring this work.  I would be happy to include a small advertisement for your organization within my training videos.

Introduction to AJ Guillon

Hello! I’d like to welcome you to my blog, and introduce myself. My official name is Adrien Joel, but my common name “AJ” was assigned to me by Texas relatives who could not easily pronounce a French name. I was born and raised in Barrie, Ontario. I have spent my entire life around computers. I learned to type before I learned to hand-write, and learned the alphabet, how to read, and basic arithmetic on a PC. I completed a bachelors degree at the University of Toronto, where I focused on mathematics and computer science. Today, I enjoy computer science as both a profession and a hobby. I am an avid swimmer, and water polo player. I also enjoy rock climbing and photography, though I have found little time to do either lately.

Professionally, I find myself at the intersection of computer science, software engineering, and computer architecture. This means that I spend my time working on things that are theoretically sound (computer science), practical (software engineering) and have good performance (computer architecture). I have been fascinated by parallel computing for a long time. From a theoretical perspective, I am interested in problems such as P = NC, and frequently ask myself why parallel programming is hard. From a software engineering perspective, I often wonder how the average developer is ever going to write high-performance software with good design! Computer architecture motivates me to ensure that I deliver software with benchmarked performance results, potentially tuned to specific hardware for best speed. I have been working on a new approach to parallel programming which is radically different from anything attempted to date (considering the colossal number of failed approaches, it would have to be).

I consider myself an expert at parallel programming, GPU programming, OpenCL, and C++. My background in mathematics and computer science mean that I enjoy algorithm design and analysis. I have a deep appreciation for Edsger Dijkstra’s philosophy of programming, which means that I take great care to ensure that my programs are correct and that I could provide a mathematical proof if necessary. I am quite capable of designing and implementing very fast wait-free algorithms and data-structures, though it can take a long time to do something radically new. I greatly admire Alexander Stepanov’s views on software development.

Although I have a deep appreciation for computer science (a theoretical field), I also understand real-life software. I have considerable experience with software engineering, and designing systems based on user needs. I will not attempt to classify myself into any particular camp of software engineering, since I believe strongly that successful development teams may use a variety of approaches even in the same project. I consider design to be a complex and iterative process, which requires attentive feedback from potential users or customers. There is no silver bullet. Software development is hard, and this is unfortunately an unpopular view with those who think software is one methodology away from simplicity.

I am interested in business, and have co-founded two companies. One moderately successful, and one a complete failure. Today, I am weighing my options to consider joining an existing company or to attempt founding yet another business. I have my own ideas, and I would like to continue my parallel programming research. For now, I am available as a technical consultant to help companies however I can. Feel free to contact me if you are looking for an expert!

I am going to use this blog to discuss topics relevant to my interests, and to demonstrate my products and skills. I hope to use this as a platform for technical marketing, so that potential clients have an opportunity to see examples of my work and capabilities.