MIT Performance Engineering

MIT OCW Performance Engineering Online Course


MIT has recently made available their course on Performance Engineering of Software Systems, an excellent course about software optimization.

In particular, it may be a good idea to watch carefully the material about bit hacks and parallelism. Although the course is not geared towards GPU programming, most ideas certainly transfer.

If you’d like to implement any of the suggested algorithms (pentominoes, malloc, etc) using OpenCL, you’re very welcome to do so and we’ll be glad to help if you need and to post your optimization as a case study; feel free to email us.

AMD SDK 2.7 and OpenCL 1.2

AMD SDK 2.7 and OpenCL 1.2


AMD has announced their AMD APP SDK 2.7, conformant with OpenCL 1.2. OpenCL 1.2 is an important step towards enabling programmers to build more complex GPU based applications that receive mixed data structures from host memory.

This is really exciting both in terms of the new features themselves as well as to the extent that it pushes OpenCL towards its much needed maturity.

We only hope that the new SDK and drivers can be installed seamlessly in all systems because many (including ourselves) have had issues unistalling old drivers and installing the new ones.

CM Model Identifier Preview

CMSoft Model Identifier Preview

System identification and, in particular, model selection is an area of active research. Splitting the data into appropriate test, validation and training sets can be a complicated task or maybe just tedious for professionals familiarized with the subject.

We at CMSoft are currently developing a model selector and we offer a preview that performs regularized least squares and L1-norm minimization.

Download CMModelSelector preview.

CMSoft talks AI and OpenCL at ITA

CMSoft talks AI and OpenCL at ITA

This week we bring everyone a talk we from CMSoft had with ITA students, the brazilian Instituto Tecnológico de Aeronáutica, one of the most important engineering schools in Brazil.

We discussed trends in Artificial Intelligence research, especially regarding current research and how parallel processing can be used in this field.

We had ITABits and ITAndroids audience, and covered the following aspects:

– Motivation: how do we learn?
– Personal background
– Quiz: what do we know?
– Some real AI problems
– Current AI research
– Importance of Machine Learning
– Parallel processing: a world of opportunities
– Conclusion

Download the presentation (Portuguese)

Watch the video (subtitles in English):

Download the text transcription.

New GeForce

NVidia launches new GeForce

NVidia  announced a new GPU enabled with dual-chip.  In OpenCL, the card should be recognized as two separate devices. Can anyone tell if it works properly as two OpenCL devices? We would like to know – please mail us if you have tested this.

From Khronos Group:

“NVIDIA announces the dual-chip GeForce GTX 690, powered by two Kepler-generation GK104 graphics processors. With the help of 3072 stream processors, the device is set to establish new performance records. The card supportsOpenGL 4.2, OpenCL 1.2 and DirectX 11.1.   “




We have received feedback from NVidia GPU users that the dual-GPU cards are properly recognized as two devices and can be used for computing purposes. Thanks Miklos Nyers for confirming this.

Adobe to incorporate OpenCL

Adobe to incorporate OpenCL

Adobe has announced that they are going to use OpenCL in their new Creative Suite 6. It would appear that OpenCL momentum continues to increase.

In the meantime, we’re looking at some algorithms that could be accelerated using OpenCL, including:

– Cryptography: AES, bigInteger operations, arithmetic modulo n
– Scale and occlusion invariant pattern recognition

If you are interested in those topics and would like to contribute with ideas, feel free to send us an email.

Stanford Open Courses

Stanford Open Courses

If you haven’t checked the Stanford (and other) Open Courses at , make sure not to miss them. These are great high level courses in many fields.

If you did and are wondering how to use OpenCL to implement codes in the fields of Cryptography, Natural Language Processing (NLP) or Probabilistic Models (PGMs), feel free to post in our forum or send an e-mail and we’ll be glad to work some accelerated algorithms toghether.

C# Naive Bayes

C# Naive Bayes

The Naive Bayes classifier is a machine learning tool widely used to classify text. In particular, it is an efficient tool to classify SPAM mail from useful ones.

We at CMSoft have written a C# Naive Bayes implementation which we intend to include in OpenCLTemplate. We don’t use OpenCL in this implementation at the moment because the algorithm is rather serial and it works quite well as it is.

Please feel free to download and email or post any difficulties you find. We intend to write a brief tutorial in the near future.

Download CMSoft’s Naive Bayes C# class.