[Pw_forum] Do you think QE could benefit from the Hyper-Threading Tech of XEON 5500 series?

O. Baris Malcioglu baris.malcioglu at gmail.com
Sun Nov 29 09:59:39 CET 2009

Dear Vega,

I am afraid what you are asking is a bit technical question that is
not strictly related to Quantum Espresso. Perhaps the many discussions
and benchmarks in the forums regarding the benefits/losses of
hyper-threading in HPC environments may be of more use to you.

If it will really help my "enthusiast" level, maybe outdated viewpoint
on the matter is this.

The cores enabled by Hyper-threading are not as performing as a "real"
core, thus you obtain two somewhat crippled cores instead of one
performing core.

Now, if your memory bandwith is enough, and your program can take care
of parallelization effectively this is a nice thing, it really makes
things faster.

But if your memory bandwith is not so high, you are wasting it for
some crippled cores. If the program you are using is intensive on the
memory, this is quite a bad thing no matter how well parallelized it

Most of the server architectures like XEON are optimized for
relialibility, and you will notice that most boards out there offer
significantly less memory bandwith, especially if there are error
correction measures, compared to their desktop equivalents.

Adding this the fact that this already low bandwith is shared by many
other cores, the memory bandwith becomes a very very precious resource
in a server used in number crunching.

Now, the performance of QE in such an environment will depend on how
you use and compile it.

In my experience using the "standart" parallelization with lapack/blas
the QE is intensive on the memory of the cores, but somewhat light on
the inter-core communication. In this case, the hyperthrading will
probably slow things down on the single job level (Remember, HPCs are
multi-user environments, if you have many users, although somewhat
slow on the job level, hyperthreading might still be beneficial due to
higher number of jobs accepted per unit time)

Although I have not yet tested myself, threading instead of spawning
processes like the openMP parallelization should work much better on
the per job level in a hyper-threading environment, of course,
provided you have proper threaded libraries installed and configured.
For example MKL has threading support.

So in short, if you are the single user of that machine, try OpenMP +
threaded libraries. If it doesn't help try switching hyper threading
off and compare your benchmarks. If you have many users, it is
probably better to leave it on.

I hope this helps,


2009/11/26 vega lew <quantumdft at gmail.com>:
> Dear all,
> I got 5 computers with two XEON 5520 and 24G memory. I find the
> Hyper-Threading is switched on by default. I wonder if QE could benefit from
> Hyper-Threading Tech. of Xeon CPUs?
> Should I switch it off and trigger one process for each core to promote the
> QE performance?
> Or remain the Hyper-Threading on and trigger two processes for each core?
> best
> vega
> --
> ==================================================================================
> Vega Lew ( weijia liu)
> Graduate student
> State Key Laboratory of Materials-oriented Chemical Engineering
> College of Chemistry and Chemical Engineering
> Nanjing University of Technology, 210009, Nanjing, Jiangsu, China
> ******************************************************************************************************************
> Email: vegalew at gmail.com
> Office: Room A705, Technical Innovation Building, Xinmofan Road 5#, Nanjing,
> Jiangsu, China
> ******************************************************************************************************************
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://www.democritos.it/mailman/listinfo/pw_forum

More information about the users mailing list