Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

Vectorization VS Parallelism

Innocenzo_M_
Beginner
652 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
Black Belt
652 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.

Innocenzo_M_
Beginner
652 Views

Thank you Tim. Very clear now.

Reply