Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

OpenMP starts with a serial model, the programmer tags the loop they want to run in parallel with a directive, and the compiler tries to vectorize the loop. This can always fail, since it relies on a computer program reasoning about an arbitrary block of code. So you have to really dig into the SIMD directives and understand their limitations in order to write performant code that actually does get vectorized.

ISPC starts with an SPMD programming model, and exposes only operations that conform to the model. "Vectorization" is performed by the developer - it's up to them to figure out how to map their algorithm or problem to the vector lanes (just like in CUDA or OpenCL). So there's no unexpectedly falling off the vectorization path - you start on it, and you can only do stuff that stays on it, by design.



Specifically I meant OMP workshare which parallelizes vector operations in Fortran,

https://www.openmp.org/spec-html/5.0/openmpsu39.html

sorry should have been more specific.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: