Code Vectorization using Intel Array Notation
In this paper, we explain the steps we have taken to port a large, industry-grade computational fluid dynamics application to the Intel Xeon Phi architecture using the Intel Array Notation that is part of Intel Cilk Plus. An essential part of the performance refactoring process for Xeon Phi is to achieve high-quality vectorization, for which the Intel Array Notation is one option among others to vectorize code. We have encapsulated the Intel Array Notation syntax in a C++ class to drastically reduce the refactoring workload. In the paper, we study how our approach helps the compiler to generate vectorized code. Derived from that study, we give some best-practice tips for handling special code parts, e.g., conditional control flows. Using the introduced C++ class, we present a performance evaluation of the ported computational fluid dynamics application.