Verity software is a software company providing flow cytometry analysis software and we are pleased to learn that they are currently integrating C++ AMP into their high end application called GemStone. You can learn more about how GemStone works by watching this youtube video, where a GemStone model (used to analyze B-Cell maturation in bone marrow samples acquired with flow cytometry) is reviewed.
Since GemStone models are computational intensive, verity software wants to leverage C++ AMP to enhance the performance of reviewing the models. Up till now, the hardest part they have encountered while integrating C++ AMP, was the need to rework some of the algorithms so that they are naturally parallel. This is in line with our expectations that developers will have to rethink their sequential code to fit to C++ AMP (or any other parallel language technology) programming model. Further many of the data structures in the application also needed change. As a part of Parallel Patterns Library, we do offer Parallel Containers and Objects to alleviate some of the needs for concurrent data structures.
Some of the comments specific to C++ AMP included, to quote:
“….As far as the nuts and bolts of [C++] AMP is concerned, it seems very straightforward to me. I really like the idea of exploiting the lambda expression concept to run code on a GPU and not having a lot of very messy GPU specific code to deal with. Other than changes to our data structures, the other issue that is taking some time is writing nice looking code that runs on all the platforms that we support. Since our Mac versions of the software will not work with the amp.h and associated library, it’s a bit tricky to have easily maintainable code that works for all these platforms…. I also probably don’t need to tell you that it is a pain to have to decide whether you are going to debug the GPU or CPU before launching the program”.
With intend of addressing cross platform support for non-Microsoft platform by our ecosystem partners, C++ AMP team did release the open specification. The support of mixed mode debugging across CPU and GPU is something we would address in future releases. This is the third post on the series detailing C++ AMP customer experience.