If you have a legacy application that demands threads we can emulate threads by essentially using coroutine approach.
http://en.wikipedia.org/wiki/Coroutine
What would be the impact of such a coroutine emulation if the threading is used to leverage multi-core hardware for high performance computing such as done by Atlas [1], OpenBLAS [2] or MKL [3]? These libraries are tuned to maximize CPU cache hits. It seems to me that executing each thread task sequentially using coroutines would probably break such optimizations.
Comments
I've read the architecture page and I am not clear how multithreading is dealt with if application demands it. If you can expand a bit on that.
If you have a legacy application that demands threads we can emulate threads by essentially using coroutine approach. http://en.wikipedia.org/wiki/Coroutine
What would be the impact of such a coroutine emulation if the threading is used to leverage multi-core hardware for high performance computing such as done by Atlas [1], OpenBLAS [2] or MKL [3]? These libraries are tuned to maximize CPU cache hits. It seems to me that executing each thread task sequentially using coroutines would probably break such optimizations.
[1] http://math-atlas.sourceforge.net/ [2] http://www.openblas.net/ [3] http://software.intel.com/en-us/intel-mkl
From the sounds of it, you'd want to split up your workload and run each subset in a separate zerovm
That's correct. And that's how most of parallel processing frameworks do it anyway.