I'm looking for some guidance before I spend tons of time reorganizing a legacy program. If I have cores that are part of a virtual cluster. I have a computation that is broken into many parts and distributed to each member of the cluster. If each cores is hyper-threaded which of the following is most efficient:
- 2 virtual machines, one for each logical core. Half the computation is sent to each
- 1 virtual machine, where the OS handles the use of the logical cores.
- 1 virtual machine, where OpenMP is used to create 2 threds to split the computation.
My gut feeling is option 2, because a hyper-threaded core isn't a true core and option 3 requires additional overhead of starting threads and communicating data while one thread is idle. Any insight is greatly appreciated. Thanks.
You can get some idea from this post Intel Core i5 And Core i7: Intel’s Mainstream Magnum Opus