The following example works without the restrict
keyword, but has poor performance.
Figure 1. Example Without
restrict
Keyword
Adding the restrict
keyword allows
every iteration to access a different location where there is no aliasing between
iterations (restrict
) and aliasing within iterations
preserved by data dependency. The increased parallelization results in improved
performance.
Figure 2. Add
restrict
Keyword