User Tools

Site Tools


nnm:faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
nnm:faq [2022/01/13 15:51]
carola.burkl [Can I add new materials to the database?]
nnm:faq [2022/01/18 15:25]
carola.burkl [Can I take advantage of parallelization of the nextnano software on multi-core CPUs?]
Line 13: Line 13:
 = =
  
-==== Can I take advantage of parallelization of the nextnano software on multi-core CPUs? ==== 
-The short answer is:\\ //Some numerical routines are parallelized which is done automatically. These are the numerical routines, e.g. for calculating the eigenvalues with a LAPACK solver (which itself uses BLAS).// 
- 
-The long answer is:\\ The nextnano software includes the Intel<​sup>​(r)</​sup>​ [[http://​software.intel.com/​en-us/​intel-mkl| Math Kernel Library]] (MKL). 
-MKL includes the [[https://​en.wikipedia.org/​wiki/​Basic_Linear_Algebra_Subprograms|BLAS]] and [[https://​en.wikipedia.org/​wiki/​LAPACK|LAPACK]] library routines for numerical operations. 
-The MKL dynamically changes the number of threads. 
-  * nextnano++ - uses MKL (parallel version)\\ The executables that are compiled with the Intel and Microsoft compilers use MKL (parallel version). The executable that is compiled with the GNU compiler (gcc/​gfortran) uses the nonparallelized version of the BLAS and LAPACK source codes available from [[http://​www.netlib.org|netlib]]. 
-  * nextnano³ - uses MKL (parallel version)\\ The executables that are compiled with the Intel and NAG (64-bit) compilers use MKL (parallel version). The executables that are compiled with the GNU compiler (gfortran) and NAG (32-bit) use the nonparallelized version of the BLAS and LAPACK source codes available from [[http://​www.netlib.org|netlib]].\\ There is a nextnano³ executable available that uses OpenMP parallelization for 
-      * CBR (parallelization with respect to energy grid) 
-      * NEGF (parallelization with respect to energy grid and further loops)\\ number-of-MKL-threads ​            = 8 
-      * Calculation of eigenstates for each $k_\parallel$ (1D and 2D simulations) 
-      * Matrix-vector products of numerical routines\\ Note: Not all operations are thread-safe,​ e.g. one cannot combine $k_\parallel$ parallelization with the ARPACK eigenvalue solver.\\ Only for this executable, the flag ''​number-of-parallel-threads = 4''​ has an effect. The NEGF keyword also supports ''​number-of-MKL-threads = 4''​ (''​0''​ means //dynamic// with is recommended) and ''​MKL-set-dynamic = yes''​ / ''​no''​. 
-  * nextnano.QCL - uses MKL (parallel version) 
-  * nextnano.MSB - uses MKL (parallel version) 
-The NEGF algorithms (nextnano.QCL,​ nextnano.MSB,​ CBR) include matrix-matrix operations which are well parallelized within the BLAS routines. 
- 
-If e.g. 4 nextnano simulations are running in parallel on a quad-core CPU, i.e. 4 nextnano executables are running simultaneously and each of them is using calls to the parallelized MKL library simultaneously,​ the total performance might be slower compared to running these simulations one after the other. In this case using a nextnano executable compiled with the serial version of the Intel MKL could be faster. 
- 
-In fact, it strongly depends on your nextnano application (e.g. 1D vs. 3D simulation, LAPACK vs. ARPACK eigenvalue solver, ...) if you benefit from parallelization or not. 
-In general, the best parallelization can be obtained if you run several nextnano simulations in parallel. 
-For instance, you could do parameter sweeps (e.g. sweep over quantum well width) using nextnanomat'​s //​Template//​ feature, i.e. if you run 4 simulations simultaneously on a quad-core CPU, e.g. for 4 different quantum well widths. 
----- 
  
 ==== I don't understand the $\bf{k} \cdot \bf{p}$ parameters ==== ==== I don't understand the $\bf{k} \cdot \bf{p}$ parameters ====