Over the past few weeks we've had a number of exciting announcements. Among them have been the release of CULA 1.3, the first published performance results of Fermi, and the unveiling of our CUDA training program. We'd like to continue along this path by announcing a series of blog posts on the engineering philosophy behind CULA.
There is much more to a software product than just code. Although the code is at the heart of most software projects, a software developer must also consider build systems, revision control, testing, documentation, quality assurance, support, and distribution mechanisms. Typically, a user only sees a small portion of this overall effort, but the lack of strong processes will greatly impact the end product that a user does see.
With CULA, our goal is to create the best performing linear algebra library that is also easy-to-use and available on as many platforms and systems as is possible. It is for these reasons that we apply a rigorous software engineering philosophy to our CULA library. Over the next few weeks we'll be talking about several of the development practices and systems we have in place with specific examples of how these processes impact the development of CULA. Check back soon for the first entry in this exciting series.