I have a question concerning the C++ configuration for the “rstan” package. My OS is Windows 10, 64 bit. The rstan version is 2.18.2, the R version is 3.5.1.
I followed the instructions on https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started to install and configure rstan. I also run the code from section “Configuration of the C++ Toolchain” which gave me the following content of the file “~/.R/Makevars.win”:
CXX14FLAGS=-O3 -march=native -mtune=native
CXX11FLAGS=-O3 -march=native -mtune=native
However, after running the “Eight schools” example, print()ing “schools_fit@stanmodel@dso” (with “schools_fit” denoting the stanfit object returned from stan()) gives:
Created on: ‘x86_64, mingw32’ with ‘CXXFLAGS = -O2 -Wall $(DEBUGFLAG) -mtune=generic’.
I was wondering if the CXXFLAGS shouldn’t rather be “-O3 -march=native -mtune=native” (because of the “~/.R/Makevars.win” file above). While searching for answer on the internet, I stumbled across the following GitHub site: https://github.com/davharris/rstan/wiki/Installing-RStan-on-Windows
According to this site, the content of the “~/.R/Makevars” file (note that it is not “~/.R/Makevars.win”, but I used it for the “~/.R/Makevars.win” file anyway) should be:
CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function
When using this for the content of the “~/.R/Makevars.win” file, print()ing “schools_fit@stanmodel@dso” gives indeed:
Created on: ‘x86_64, mingw32’ with ‘CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function’.
Now my question is: What is the correct content to be specified for the “~/.R/Makevars.win” file? Is the difference between the upper two instruction sites due to the latter one being valid only for Linux (or Mac)?
Furthermore, rstan gives a package startup message recommending “Sys.setenv(LOCAL_CPPFLAGS = ‘-march=native’)”. According to https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started, this is not necessary after running the code from the “C++ configuration” section. However, according to https://stackoverflow.com/questions/43597632/understanding-the-contents-of-the-makevars-file-in-r-macros-variables-r-ma?rq=1, there is a difference between the CXXFLAGS and the CPPFLAGS. So is it correct that LOCAL_CPPFLAGS doesn’t need to be specified even though only the CXX14FLAGS and the CXX11FLAGS were specified in the “Makevars” file?