As a package writer, you should not in general (IMO) override the settings
made by whoever compiled R on your system

If you want to use -O4, you should really compile R from source using -O4
and check that it works. Then your package will use it as well.

Best,
Kasper

On Wed, May 21, 2025 at 3:30 PM Peiyuan Zhu <garyzh...@gmail.com> wrote:

> Ok now I replaced all -g -O2 with -O3 in Makeconf then it seems to have
> worked. Not sure which line exactly that has led to it working tho.
>
> > load_all(".")
> ℹ Loading dst
> Exports from /Users/garyzhubc/Work/dst-1/src/belplauHFast.cpp:
>    NumericMatrix belplauHFast(NumericVector MACC, const arma::sp_mat& W2,
> NumericMatrix h, bool display_progress = false)
>
> Exports from /Users/garyzhubc/Work/dst-1/src/closure.cpp:
>    LogicalMatrix closure(IntegerMatrix ttx, bool computeJoin = true, bool
> display_progress = false)
>
> Exports from /Users/garyzhubc/Work/dst-1/src/closureSparse.cpp:
>    arma::sp_mat closureSparse(arma::sp_mat ttx, bool computeJoin = true,
> bool display_progress = false)
>
> Exports from /Users/garyzhubc/Work/dst-1/src/commSparse.cpp:
>    NumericVector commSparse(arma::sp_mat x, arma::sp_mat x_c, double a,
> bool display_progress = false)
>
> Exports from /Users/garyzhubc/Work/dst-1/src/iotaSparse.cpp:
>    arma::sp_mat iotaSparse(arma::sp_mat tt, bool display_progress = false)
>
> Exports from /Users/garyzhubc/Work/dst-1/src/treeFast.cpp:
>    SEXP buildTreeFast(const arma::sp_mat& tt, const Rcpp::NumericVector& q,
> bool display_progress = false, Rcpp::Nullable<Rcpp::IntegerVector> indices
> = R_NilValue)
>    SEXP updateTreeFast(SEXP tree_ptr, LogicalVector xx_vec, LogicalVector
> s_vec)
>    SEXP supersetFast(SEXP node_ptr, LogicalVector z_vec)
>    NumericVector unravelTreeFast(SEXP tree_ptr)
>    List inspectNode(SEXP tree_ptr)
>    Rcpp::List inspectNodes(Rcpp::List trees)
>    Rcpp::List buildTreesFast(const arma::sp_mat& tt, const
> Rcpp::NumericVector& q)
>    Rcpp::NumericVector unravelTreesFast(Rcpp::List trees)
>    Rcpp::List updateTreesFast(Rcpp::List trees, Rcpp::NumericVector xx_vec,
> Rcpp::NumericVector s_vec)
>
> /Users/garyzhubc/Work/dst-1/src/RcppExports.cpp updated.
> /Users/garyzhubc/Work/dst-1/R/RcppExports.R updated.
> ℹ Re-compiling dst
> ── R CMD INSTALL
>
> ──────────────────────────────────────────────────────────────────────────────────────
> ─  installing *source* package ‘dst’ ...
>    ** using staged installation
>    ** libs
>    using C++ compiler: ‘Apple clang version 17.0.0 (clang-1700.0.13.3)’
>    using SDK: ‘’
>    clang++ -arch x86_64 -std=gnu++17
> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>
>  
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/Rcpp/include'
>
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/BH/include'
>
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/RcppProgress/include'
>
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/RcppArmadillo/include'
> -I/opt/R/x86_64/include   -O3 -fPIC  -falign-functions=64 -Wall -O3   -c
> RcppExports.cpp -o RcppExports.o
>
>
> On Wed, May 21, 2025 at 1:08 PM Peiyuan Zhu <garyzh...@gmail.com> wrote:
>
> > The closest I got is the below after putting:
> >
> > PKG_CXXFLAGS = -O3
> > PKG_CFLAGS = -O3
> >
> > in Makevars. Still I'm seeing "-falign-functions=64 -Wall -g -O2" after
> > -O3 so the last flag always wins.
> >
> >
> > > load_all(".")
> > ℹ Loading dst
> > Exports from /Users/garyzhubc/Work/dst-1/src/belplauHFast.cpp:
> >    NumericMatrix belplauHFast(NumericVector MACC, const arma::sp_mat& W2,
> > NumericMatrix h, bool display_progress = false)
> >
> > Exports from /Users/garyzhubc/Work/dst-1/src/closure.cpp:
> >    LogicalMatrix closure(IntegerMatrix ttx, bool computeJoin = true, bool
> > display_progress = false)
> >
> > Exports from /Users/garyzhubc/Work/dst-1/src/closureSparse.cpp:
> >    arma::sp_mat closureSparse(arma::sp_mat ttx, bool computeJoin = true,
> > bool display_progress = false)
> >
> > Exports from /Users/garyzhubc/Work/dst-1/src/commSparse.cpp:
> >    NumericVector commSparse(arma::sp_mat x, arma::sp_mat x_c, double a,
> > bool display_progress = false)
> >
> > Exports from /Users/garyzhubc/Work/dst-1/src/iotaSparse.cpp:
> >    arma::sp_mat iotaSparse(arma::sp_mat tt, bool display_progress =
> false)
> >
> > Exports from /Users/garyzhubc/Work/dst-1/src/treeFast.cpp:
> >    SEXP buildTreeFast(const arma::sp_mat& tt, const Rcpp::NumericVector&
> > q, bool display_progress = false, Rcpp::Nullable<Rcpp::IntegerVector>
> > indices = R_NilValue)
> >    SEXP updateTreeFast(SEXP tree_ptr, LogicalVector xx_vec, LogicalVector
> > s_vec)
> >    SEXP supersetFast(SEXP node_ptr, LogicalVector z_vec)
> >    NumericVector unravelTreeFast(SEXP tree_ptr)
> >    List inspectNode(SEXP tree_ptr)
> >    Rcpp::List inspectNodes(Rcpp::List trees)
> >    Rcpp::List buildTreesFast(const arma::sp_mat& tt, const
> > Rcpp::NumericVector& q)
> >    Rcpp::NumericVector unravelTreesFast(Rcpp::List trees)
> >    Rcpp::List updateTreesFast(Rcpp::List trees, Rcpp::NumericVector
> > xx_vec, Rcpp::NumericVector s_vec)
> >
> > /Users/garyzhubc/Work/dst-1/src/RcppExports.cpp updated.
> > /Users/garyzhubc/Work/dst-1/R/RcppExports.R updated.
> > ℹ Re-compiling dst
> > ── R CMD INSTALL
> >
> ──────────────────────────────────────────────────────────────────────────────────────
> > ─  installing *source* package ‘dst’ ... (1.4s)
> >    ** using staged installation
> >    ** libs
> >    using C++ compiler: ‘Apple clang version 17.0.0 (clang-1700.0.13.3)’
> >    using SDK: ‘’
> >    clang++ -arch x86_64 -std=gnu++17
> > -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
> >
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/Rcpp/include'
> >
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/BH/include'
> >
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/RcppProgress/include'
> >
> -I'/Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/library/RcppArmadillo/include'
> > -I/opt/R/x86_64/include   -O3 -fPIC  -falign-functions=64 -Wall -g -O2
>  -c
> > RcppExports.cpp -o RcppExports.o
> >
> >
> >
> > On Wed, May 21, 2025 at 12:57 PM Dirk Eddelbuettel <e...@debian.org>
> wrote:
> >
> >>
> >> On 21 May 2025 at 09:34, Peiyuan Zhu wrote:
> >> | I'm happy to just use O3 but it sounds like this isn't something
> doable
> >> in C++.
> >>
> >> It is called -O3, not 'O3'. (Also Rcpp, not RCpp.)
> >>
> >> We do not know what you did because you never posted anything even
> >> remotely
> >> close to reproducible.
> >>
> >> | Maybe I should just give up RCpp and move the program entirely to C++
> >> from now
> >> | on.
> >>
> >> Whatever works for you. You could also look at some existing projects
> and
> >> see
> >> what they do; I just did a quick recursive search below my git directory
> >> on
> >> the machine and saw at least two packages set -O3.  So it works for some
> >> of us.
> >>
> >> Good luck either way.
> >>
> >> Best, Dirk
> >>
> >> --
> >> dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
> >>
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>


-- 
Best,
Kasper

        [[alternative HTML version deleted]]

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to