The included code and white paper provides a parallel solution for the 3-D Convex Hull problem, as described in the included problem description text file. Parallelism is achieved using Cilk++. Possible points for the convex hull are found by repeatedly selecting four points from the input set and finding the largest volumes of the formed tetrahedrons (using matrix determinants). An O(n^4) algorithm confirms those points that are actually on the convex hull from the possible points previously found.
C++
Parallel algorithm for finding intersections of line segments in 3-D (Akki)
The included source code implements a parallel search for intersections of input line segments within a 3-D space, as described in the included problem description text file. The parallel algorithm divides the input line segments into a number of divisions based on the coordinates of the endpoints. In this way, processing can be more localized and not all possible pairs of intersecting lines would be considered. The division and comparison algorithm results in 184 independent tasks that can be assigned to thread through a thread pool model.
SIMD tuning with ASM pt. 4 - Vectorization & ICC
float x[PTS],
float y[PTS];
for (int i = 0; i < PTS; i++) { // line 13 in orig source
x[i] += y[i]; // line 14 in orig source
}
Write your first program with Haswell new instructions
It has been almost a year since the Haswell new instructions have been announced by Intel. Even though silicon is not generally available yet, the tools are now ready. Time to discuss how to write your first program for Haswell.
