Yeah. That sounds like a really good deal. But I got a better one. How about... I give you the finger... and you give me my phone call?
ConfigureCustomization(redirected from Main.ConfigureCustomization) Custom compiler flagsThe default compiler options are designed for a high level of optimization with the gcc compiler. For other compilers, you might get better results with some customization. To set the compiler flags, either set the environment variable The default is equivalent to export CXXFLAGS="-O2 -march=native -flto" Specifying a different architectureBy default, the tools will be compiled for the same architecture of the machine that the compiler is running on. This means that if you compile the toolkit on a modern machine that has some recent CPU extensions (for example
Advanced Vector eXtensions), and then attempt to run the tools on an older machine that doesn't have these extensions, it will fail with an "Illegal Instruction" error. To work around this, you need to specify the target architecture by hand, with the export CXXFLAGS="-O2 -march=core2 -mtune=native" Installing to a different location
If you want to change the default, for example to install the executable files into ../mptoolkit/configure --prefix=/usr/local DebuggingBy default, the toolkit will be compiled with no debug information, so stack traces etc will not be useful. To enable debugging, use the configure option You can also use You can also use Optimized BLAS libariesThe configure script attempts to auto-detect the BLAS and LAPACK libraries, but it will often fail to autodetect an optimized BLAS library, especially if it is installed in a non-standard location. The difference in speed between the reference BLAS library and an optimized BLAS library such as MKL is typically around a factor 4 or more (much more if you also use multi-threading). To use a specific BLAS libary, use the option To use MKL, use the option For example, a typical command for single-threaded MKL (which strangely still requires libpthread), use ../mptoolkit/configure --with-blas="-Wl,--no-as-needed -L/opt/intel/composerxe/mkl/lib/intel64 \ -lmkl_gf_lp64 -lmkl_core -lmkl_sequential -lpthread -lm" note 1: I used checking convention for returning complex values from Fortran functions... return_in_register whereas using the intel version of MKL gives checking convention for returning complex values from Fortran functions... pass_as_first_argument If you get problems such as a segmentation fault or a program hanging inside zdotc (or some similar BLAS function) then it is most likely a problem of wrong MKL version. note 2: verify in the output of note 3: Versions MKL prior to around 2019.5 have serious bugs in the SVD and eigensolvers in the LAPACK functions. Symptoms are the toolkit hanging at the start of iDMRG or at the end (while orthogonalizing the MPS), or extreme inaccuracies with TEBD time evolution. A possible workaround is to use a different LAPACK library with MKL BLAS. To do this, specify Which BLAS library to choose?
|