I've just installed v13 and am starting to migrate to it for some heavy (large models, lots of steps) nonlinear quasistatic analyses. It looks to be another very nice upgrade.
Two questions:
1. On p. 124 of the Mecway v13 user manual it lists some CCX environment variables (e.g. OMP_NUM_THREADS) that are now set by Mecway. How does a user specify within Mecway the values desired for these CCX environment variables? I've been working around this by having Mecway point to a .bat file that sets the environment variables and then starts CCX, but it would be cleaner if the environment variables could be set within Mecway.
2. I see that the Mecway v13 distribution included source for the Pardiso solver, as well as some MKL and other library files. Does the ccx.exe in the distribution include some solver options beyond SPOOLES? If not, is there a place I can download a CCX executable with Pardiso for Windows10? It's been years since I was deep enough into code development to do a complex build, and I don't have any such tools on my hardware here.
Thanks!
Comments
http://mecway.com/forum/discussion/750/propeller-hub/p1
The method I suggest (see 3rd-4th entry) is not the onlyway, but it is simple and works. I have upgraded to 2.16 and it works fine.
1) SPOOLES. The slowest solver and what the default CCX included with Mecway uses.
2) MKL CCX downloaded from http://www.dhondt.de/ where it says "For an update of the bconverged distribution replace the executables in the bconverged download by the following files .". Extract ccx_PARDISO.exe and put it in %ProgramFiles%\Mecway\Mecway13\ccx or wherever Mecway was installed to then set it in Mecway through Tools -> Options -> CalculiX -> Solver. This uses the MKL files included with Mecway.
3) MKL CCX as in 2) but also install MKL from https://software.intel.com/en-us/mkl/choose-download/windows and copy all the DLL files from %ProgramFiles(x86)%\IntelSWTools\compilers_and_libraries_2019.4.245\windows\redist\intel64_win\mkl to the same location as ccx_pardiso_dynamic.exe . This takes advantage of CPU features like AVX2 and is significantly faster than 2).
4) Compile CCX with MKL and a patch to enable Out-Of-Core (OOC) mode. The source code with the patch and instructions for compiling it are installed with Mecway in its ccx folder. After compiling, install it as with 2) or 3). This allows you to solve bigger models than will fit in RAM.
For options 2), 3), and 4), you can also set the environment variable OMP_NUM_THREADS to the number of threads (eg. 8) for multithreading on multiple cores.
I set the environment variable globally in Windows (Control Panel\All Control Panel Items\System -> Advanced system settings -> Environment variables), but that's a good point that it would be easier done in Mecway.
I'm trying to follow the build instructions for compiling the large model ccx you describe in option 4 above, and have run into a couple of snags (I've not done this before):
1. There is no ccx/src/etc/ directory, but there is a build.sh in ccx/src. Is that the correct one?
2. Where exactly in build.sh is the path defined that must be changed to MINGW_HOME? There is a command cp -p $BUILD_HOME/$file. Do you change $BUILD_HOME to MINGW_HOME near the bottom of the file under Building CCX.....?
Thanks.
2. No, it's this line
export MINGW_HOME=/c/msys64/mingw64
Only change it if /c/msys64/mingw64 isn't the correct location of mingw64 on your installation, such as if it's not on drive C:.
Thanks for bringing up these issues. I'll make them clearer in in the next release.
ccx/src is where build.sh that you run to compile it is. The final output files end up in ccx/src/x64/install.
1. ccx.exe
2. ccx_MKL.exe
3. Various llibxx.dll, mklxxx.dll, pthreadGC2.dll, and license.rtf
I noticed there were no mkl_vml_avx files as suggested in 3 above, and no ccx_pardiso_dynamic as used previously.
I ran the bolt file donated as a benchmark previously, and got roughly the same execution time for the previous pardiso version vs the ccx_MKL version.
What exactly is the difference between the two ccx versions?
at one time, i asked victor about the latest version of pardiso. on the pardiso website, they claim it is even faster than the older version in the intel mkl. i don't know if intel had a falling out with the pardiso developers or what. it's odd to have different versions of the same solver. victor looked into licensing it directly. however, they wanted a huge amount of money to do that. the intel version you can use for free. victor isn't allowed to distribute it though. thus, all the end user confusion.
screenshot above, something is wrong since you cannot fill out the registration
breakdown? (Sorry, Parallel Studio EX)
here I move my question.
The problem is already solved → the web browser was a problem, ChG I didn't see places to write. IE it's ok, done, I have dowload now thank's
But there's a new problem. GCC and gfortran were updated to version 10.1 this month and they break the build with these errors: To get it working, add some extra compiler flags to 3 files like this:
ccx/src/patches/ARPACK/ARmake.inc
Replace
FFLAGS = -O3
with
FFLAGS = -O3 -fallow-argument-mismatch
ccx/src/patches/CalculiX/ccx_2.16/src/Makefile
Replace
FFLAGS = -Wall -O2 -fopenmp
with
FFLAGS = -Wall -O2 -fopenmp -fallow-argument-mismatch
ccx/src/patches/CalculiX/ccx_2.16/src/Makefile_MKL
Replace
FFLAGS = -Wall -O2 -fopenmp
with
FFLAGS = -Wall -O2 -fopenmp -fallow-argument-mismatch
and replace
CFLAGS = -Wall -O2 -I ../../../SPOOLES.2.2 -I ../../../pthreads-w32-2-9-1-release/Pre-built.2/include -DARCH="Linux" -DSPOOLES -DPARDISO -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -D_SC_NPROCESSORS_CONF=1 -posix
with
CFLAGS = -Wall -O2 -I ../../../SPOOLES.2.2 -I ../../../pthreads-w32-2-9-1-release/Pre-built.2/include -DARCH="Linux" -DSPOOLES -DPARDISO -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -D_SC_NPROCESSORS_CONF=1 -posix -fcommon
https://mecway.com/download/ccx_win64_mkl_pardiso_source_2.16_2020-06-04.zip
how can I get spooles or pardiso for multithreading?
thanks
Or you can download MKL (now called oneMKL) it from the link in step 3 there if you want to recompile or use the full library.