The new GitHub repository by Codee offers a compendium of best practices for writing efficient C, C++, and Fortran code. It invites developers to contribute and share their expertise for optimal code performance.
Codee collaborated with Intel Corporation through the program Intel Liftoff for Startups in which we have elaborated a case study to demonstrate our innovative approach to empower developers to write performant code using oneAPI tools. Codee provides a software development platform for optimizing C/C++/Fortran application performance across modern heterogeneous hardware. Using Intel® oneAPI tools and […]
Real-time software ensures immediate processing in systems like air traffic control through a Real-Time Operating System (RTOS), which manages tasks with critical timing constraints. Developers optimize application performance, often late, which is costly. Codee Static Code Analyzer offers a pioneering solution to embed performance optimization earlier in development, demonstrating substantial gains with tools like RTOS QNX.
This article addresses single-core performance optimizations that enable an efficient usage of the memory available in the hardware. We use Codee to pinpoint opportunities in the code to benefit from loop interchange, which enables sequential memory accesses and favors vectorization. Why is Loop Interchange important? Loop interchange is a performance optimization technique that is used […]
Last updated on September 15, 2022 In this blog post, we show how to get started with Codee using the Canny edge detection image processing algorithm. You will see how it supports the performance optimization roadmap by providing human-readable actionable items to enable the optimization of sequential code as well as the exploitation of the […]
In the previous post we talked about loop unswitching: a technique that the compilers use to make loops faster. Loop unswitching consists of detecting conditional statements whose condition never changes during the execution of the loop (loop invariant conditions) and then moving the condition outside of the loop. Loop unswitching opens the door for other […]
Flexibility is very important in the development of software. A great deal of research and education is invested into creating flexible software. However, flexibility and performance don’t often come hand in hand, as most developers have already witnessed sometime in their careers. One of the ways to achieve flexibility is to parametrize the behavior of […]
There are many approaches to make your program run faster. Some approaches are based on using more efficient libraries, others rely on using the standard library and the language in an efficient manner. Other approaches include using more efficient algorithms. But sometimes, even after we’ve applied all the possible optimizations, the code performance is not […]
Vectorization is a powerful technique for achieving peak computational performance. However, not all code is easily vectorizable by all compilers. In this post we are going to talk about vectorization of complex non-vectorizable loops. The idea is to split the loop into two loops, one for the vectorizable part and the other for the non-vectorizable […]
Most of the applications are fine when compiled with the -ffast-math compiler flag, which makes floating-point computations faster at the expense of some precision loss. However, in the scientific domain, floating-point precision is important so most of the time those codebases are compiled without this option. Still, the question of performance of such code remains […]