From 3ea655cdbefcf2056da456b7debc68ba7b535f55 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Thu, 24 Mar 2016 08:35:26 +0100 Subject: Static documentation rebuilt by staticdocs::build_site() --- vignettes/compiled_models.html | 420 ++++++++++++----------------------------- 1 file changed, 118 insertions(+), 302 deletions(-) (limited to 'vignettes/compiled_models.html') diff --git a/vignettes/compiled_models.html b/vignettes/compiled_models.html index 3215a386..50db7e9a 100644 --- a/vignettes/compiled_models.html +++ b/vignettes/compiled_models.html @@ -1,248 +1,98 @@ - - - - -Benchmark for a model that can also be solved with Eigenvalues - + - - + + + - - - - - - +
+ - + - +

Benchmark for a model that can also be solved with Eigenvalues

- -

This evaluation is taken from the example section of mkinfit. When using an mkin version -equal to or greater than 0.9-36 and a C compiler (gcc) is available, you will see -a message that the model is being compiled from autogenerated C code when -defining a model using mkinmod. The mkinmod() function checks for presence of -the gcc compiler using

- -
Sys.which("gcc")
-
- +

This evaluation is taken from the example section of mkinfit. When using an mkin version equal to or greater than 0.9-36 and a C compiler (gcc) is available, you will see a message that the model is being compiled from autogenerated C code when defining a model using mkinmod. The mkinmod() function checks for presence of the gcc compiler using

+
Sys.which("gcc")
##            gcc 
-## "/usr/bin/gcc"
-
- +## "/usr/bin/gcc"

First, we build a simple degradation model for a parent compound with one metabolite.

- -
library("mkin")
-
- -
## Loading required package: minpack.lm
-## Loading required package: rootSolve
-## Loading required package: inline
-## Loading required package: methods
-## Loading required package: parallel
-
- -
SFO_SFO <- mkinmod(
+
library("mkin")
+SFO_SFO <- mkinmod(
   parent = mkinsub("SFO", "m1"),
-  m1 = mkinsub("SFO"))
-
- -
## Successfully compiled differential equation model from auto-generated C code.
-
- -

We can compare the performance of the Eigenvalue based solution against the -compiled version and the R implementation of the differential equations using -the microbenchmark package.

- -
library("microbenchmark")
-library("ggplot2")
-mb.1 <- microbenchmark(
+  m1 = mkinsub("SFO"))
+
## Successfully compiled differential equation model from auto-generated C code.
+

We can compare the performance of the Eigenvalue based solution against the compiled version and the R implementation of the differential equations using the microbenchmark package.

+
library("microbenchmark")
+library("ggplot2")
+
## Need help? Try the ggplot2 mailing list:
+## http://groups.google.com/group/ggplot2.
+
mb.1 <- microbenchmark(
   "deSolve, not compiled" = mkinfit(SFO_SFO, FOCUS_2006_D, 
                                     solution_type = "deSolve", 
                                     use_compiled = FALSE, quiet = TRUE),
@@ -250,115 +100,81 @@ mb.1 <- microbenchmark(
                                solution_type = "eigen", quiet = TRUE),
   "deSolve, compiled" = mkinfit(SFO_SFO, FOCUS_2006_D, 
                                 solution_type = "deSolve", quiet = TRUE),
-  times = 3, control = list(warmup = 0))
-
- + times = 3, control = list(warmup = 0))
## Warning in microbenchmark(`deSolve, not compiled` = mkinfit(SFO_SFO,
 ## FOCUS_2006_D, : Could not measure overhead. Your clock might lack
-## precision.
-
- -
smb.1 <- summary(mb.1)
-print(mb.1)
-
- +## precision. +
smb.1 <- summary(mb.1)
+print(mb.1)
## Unit: milliseconds
 ##                   expr       min        lq      mean    median        uq
-##  deSolve, not compiled 4652.4576 4653.2263 4673.1220 4653.9950 4683.4543
-##       Eigenvalue based  749.7771  750.1327  764.7881  750.4882  772.2936
-##      deSolve, compiled  641.9152  647.6028  651.6533  653.2904  656.5223
+##  deSolve, not compiled 9280.0854 9299.6757 9323.2559 9319.2659 9344.8411
+##       Eigenvalue based  885.7475  891.8548  907.2823  897.9621  918.0498
+##      deSolve, compiled  713.2624  721.4990  728.2856  729.7357  735.7972
 ##        max neval cld
-##  4712.9136     3   c
-##   794.0990     3  b 
-##   659.7542     3 a
-
- -
autoplot(mb.1)
-
- -

plot of chunk benchmark_SFO_SFO

- -

We see that using the compiled model is by a factor of -7.1 -faster than using the R version with the default ode solver, and it is even -faster than the Eigenvalue based solution implemented in R which does not need -iterative solution of the ODEs:

- -
rownames(smb.1) <- smb.1$expr
-smb.1["median"]/smb.1["deSolve, compiled", "median"]
-
- -
##                         median
-## deSolve, not compiled 7.123930
-## Eigenvalue based      1.148782
-## deSolve, compiled     1.000000
-
- +## 9370.4163 3 c +## 938.1374 3 b +## 741.8588 3 a +
autoplot(mb.1)
+

+

We see that using the compiled model is by a factor of 12.8 faster than using the R version with the default ode solver, and it is even faster than the Eigenvalue based solution implemented in R which does not need iterative solution of the ODEs:

+
rownames(smb.1) <- smb.1$expr
+smb.1["median"]/smb.1["deSolve, compiled", "median"]
+
##                          median
+## deSolve, not compiled 12.770742
+## Eigenvalue based       1.230531
+## deSolve, compiled      1.000000
+
+

Benchmark for a model that can not be solved with Eigenvalues

- -

This evaluation is also taken from the example section of mkinfit.

- -
FOMC_SFO <- mkinmod(
+

This evaluation is also taken from the example section of mkinfit.

+
FOMC_SFO <- mkinmod(
   parent = mkinsub("FOMC", "m1"),
-  m1 = mkinsub( "SFO"))
-
- -
## Successfully compiled differential equation model from auto-generated C code.
-
- -
mb.2 <- microbenchmark(
+  m1 = mkinsub( "SFO"))
+
## Successfully compiled differential equation model from auto-generated C code.
+
mb.2 <- microbenchmark(
   "deSolve, not compiled" = mkinfit(FOMC_SFO, FOCUS_2006_D, 
                                     use_compiled = FALSE, quiet = TRUE),
   "deSolve, compiled" = mkinfit(FOMC_SFO, FOCUS_2006_D, quiet = TRUE),
-  times = 3, control = list(warmup = 0))
-
- + times = 3, control = list(warmup = 0))
## Warning in microbenchmark(`deSolve, not compiled` = mkinfit(FOMC_SFO,
 ## FOCUS_2006_D, : Could not measure overhead. Your clock might lack
-## precision.
-
- -
smb.2 <- summary(mb.2)
-print(mb.2)
-
- +## precision. +
smb.2 <- summary(mb.2)
+print(mb.2)
## Unit: seconds
 ##                   expr       min        lq      mean    median        uq
-##  deSolve, not compiled 10.202245 10.243829 10.260112 10.285413 10.289045
-##      deSolve, compiled  1.176863  1.182699  1.188555  1.188536  1.194402
-##        max neval cld
-##  10.292677     3   b
-##   1.200267     3  a
-
- -
smb.2["median"]/smb.2["deSolve, compiled", "median"]
-
- +## deSolve, not compiled 20.543131 20.661195 20.720383 20.779259 20.809008 +## deSolve, compiled 1.314865 1.316439 1.328049 1.318014 1.334642 +## max neval cld +## 20.83876 3 b +## 1.35127 3 a +
smb.2["median"]/smb.2["deSolve, compiled", "median"]
##   median
 ## 1     NA
-## 2     NA
-
+## 2 NA +
autoplot(mb.2)
+

+

Here we get a performance benefit of a factor of 15.8 using the version of the differential equation model compiled from C code using the inline package!

+

This vignette was built with mkin 0.9.42 on

+
## R version 3.2.4 Revised (2016-03-16 r70336)
+## Platform: x86_64-pc-linux-gnu (64-bit)
+## Running under: Debian GNU/Linux 8 (jessie)
+
## CPU model: Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
+
-
autoplot(mb.2)
-
-

plot of chunk benchmark_FOMC_SFO

+
-

Here we get a performance benefit of a factor of -8.7 -using the version of the differential equation model compiled from C code using -the inline package!

+ -
## CPU model: Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
-
- -- cgit v1.2.1