[Rcpp-commits] r3338 - pkg/RcppEigen/vignettes
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sat Nov 12 23:49:01 CET 2011
Author: edd
Date: 2011-11-12 23:49:01 +0100 (Sat, 12 Nov 2011)
New Revision: 3338
Modified:
pkg/RcppEigen/vignettes/Rcpp.bib
pkg/RcppEigen/vignettes/RcppEigen-intro-jss.tex
Log:
bit more spit and polish, finally added 'ISO/IEC 2011' as a C++ 2011 reference
Modified: pkg/RcppEigen/vignettes/Rcpp.bib
===================================================================
--- pkg/RcppEigen/vignettes/Rcpp.bib 2011-11-12 22:20:48 UTC (rev 3337)
+++ pkg/RcppEigen/vignettes/Rcpp.bib 2011-11-12 22:49:01 UTC (rev 3338)
@@ -5,10 +5,13 @@
@String{R-Forge = "http://R-Forge.R-Project.org/" }
@Misc{cpp11,
+ author = "ISO/IEC",
organization = "{International Organization for Standardization}",
- title = "ISO/IEC 14882:2011 -- Information Technology -- Programming Languages -- C++",
+ title = "C++ 2011 Standard Document 14882:2011",
+ howpublished = {ISO/IEC Standard Group for Information Technology / Programming Languages / C++},
year = 2011,
- url = "http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372"
+ url = "http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372",
+ urlansi = "http://webstore.ansi.org/RecordDetail.aspx?sku=ISO/IEC%2014882:2011"
}
@manual{Abrahams+Grosse-Kunstleve:2003:Boost.Python,
Modified: pkg/RcppEigen/vignettes/RcppEigen-intro-jss.tex
===================================================================
--- pkg/RcppEigen/vignettes/RcppEigen-intro-jss.tex 2011-11-12 22:20:48 UTC (rev 3337)
+++ pkg/RcppEigen/vignettes/RcppEigen-intro-jss.tex 2011-11-12 22:49:01 UTC (rev 3338)
@@ -15,7 +15,7 @@
\Plainauthor{Douglas Bates, Dirk Eddelbuettel} %, Romain Fran\c{c}ois}
\Plaintitle{Fast and Elegant Numerical Linear Algebra Using the RcppEigen Package}
-\Shorttitle{Fast + Elegant Numerical Linear Algebra with RcppEigen} %% too short ?
+\Shorttitle{Fast and Elegant Numerical Linear Algebra with RcppEigen}
\Abstract{
\noindent
@@ -104,7 +104,7 @@
% Could cite Eddelbuettel (1996) here, but a real survey would be better.
As both the \proglang{C++} language and standards have evolved
-\citep{Meyers:2005:EffectiveC++,Meyers:1995:MoreEffectiveC++}, so have the
+\citep{Meyers:2005:EffectiveC++,Meyers:1995:MoreEffectiveC++,cpp11}, so have the
compilers implementing the language. Relatively modern language constructs
such as template meta-programming are particularly useful because they provide
overloading of operations (allowing expressive code in the compiled language
@@ -1345,18 +1345,24 @@
\label{tab:lmRes}
\end{table}
The processor used for these timings is a 4-core processor but almost all the
-methods are single-threaded and not affected by the number of cores.
-Only the \code{arma} and \code{lm.fit} methods benefit from
-the multi-threaded BLAS implementation provided by OpenBLAS, and the relative
-speed increase in modest for this problem size and number of cores (at 7.76
-seconds relative to 10.29 seconds for \code{arma}, and 13.74 seconds relative
-to 16.91 seconds for \code{lm.fit}.
+methods are single-threaded and not affected by the number of cores. Only
+the \code{arma}, \code{lm.fit} and \code{GSL} methods benefit from the
+multi-threaded BLAS implementation provided by OpenBLAS, and the relative
+speed increase is modest for this problem size and number of cores (at 7.76
+seconds relative to 10.29 seconds for \code{arma}, 13.74 seconds relative to
+16.91 seconds for \code{lm.fit}, and 176.95 seconds relative to 193.29
+seconds for the \code{GSL}). Parallel computing approaches will always have
+to trade-off increased communication and overhead costs against the potential
+gains from running multiple execution threads. % Nonetheless, with the ongoing
+%shift to multi-core architectures and an ever increasing number of cores in
+%modern processing units, it is conceivable that \pkg{Eigen} may also switch
+%to a multi-threaded approach to further improve its performance.
These results indicate that methods based on forming and decomposing
$\bm X^\prime\bm X$ (LDLt, LLt and SymmEig) are considerably
faster than the others. The SymmEig method, using a rank-revealing
decomposition, would be preferred, although the LDLt method could
-probably be modified to be rank-revealing. Do bear in mind that the
+probably be modified to be rank-revealing. However, the
dimensions of the problem will influence the comparative results.
Because there are 100,000 rows in $\bm X$, methods that decompose the
whole $\bm X$ matrix (all the methods except those named above) will
@@ -1394,11 +1400,11 @@
Occasionally the method for \code{Rcpp::wrap} will not force an
evaluation when it should. This is at least what Bill Venables calls
-an ``infelicity'' in the code, if not an outright bug. In the code
-for the transpose of an integer matrix shown in Figure~\ref{trans} the
-transpose is assigned to a \code{MatrixXi} object before applying
-\code{wrap} to it. The assignment forces the evaluation. If this
-step is skipped, as in Figure~\ref{badtrans}, an answer with the correct
+an ``infelicity'' in the code.%, if not an outright bug.
+In the code for the transpose of an integer matrix shown in
+Figure~\ref{trans} the transpose is assigned to a \code{MatrixXi} object
+before applying \code{wrap} to it. The assignment forces the evaluation. If
+this step is skipped, as in Figure~\ref{badtrans}, an answer with the correct
shape but incorrect contents is obtained.
\begin{figure}[htb]
@@ -1426,9 +1432,8 @@
[1] "Mean relative difference: 0.4285714"
\end{verbatim}
-Another recommended practice is to assign objects before wrapping them
+So the recommended practice is to first assign objects before wrapping them
for return to \proglang{R}.
-\marginpar{DE: Don't you say that already when comparing Fig 1 and Fig 13?}
\section{Sparse matrices}
\label{sec:sparse}
@@ -1568,3 +1573,4 @@
+
More information about the Rcpp-commits
mailing list