Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

Vectorization VS Parallelism

Innocenzo_M_
Beginner
1,896 Views

What are the differences between these techniques?

AVX is exclusively a Vectorization technique?

With both techniques i can use a SIMD approach, but I can say that Vectorization (AVX) is a single thread Techinque for fine grained parallelism, instead Parallelism (cilk plus, TBB, OpenMP etc.) is a multi-thread techinique for coarse grained parallelism.

0 Kudos
2 Replies
TimP
Honored Contributor III
1,896 Views

You are correct that instruction level parallelism, including simd parallel instructions, which (for IA) are topical on this forum, are not what is normally meant by the unqualified term "parallel," which typically refers to multiple threads, or possibly cilk workers, or MPI processes.  Those "mimd" programming models necessarily involve instruction level parallelism, possibly including simd instructions.

AVX of course is simply one category of simd instructions for IA.  Setting AVX ISA as a compiler option typically involves invoking auto-vectorization (or enabling/modifying simd intrinsics), subject to restrictions set by additional options, but it isn't exclusively about vectorization.

For example, OpenMP offers choices such as "omp parallel for" to invoke multiple threads, "omp simd" to request simd optimization of the following for() within a single thread, and "omp parallel for simd" to request both.

0 Kudos
Innocenzo_M_
Beginner
1,896 Views

Thank you Tim. Very clear now.

0 Kudos
Reply