From a350a16bb2c11986faf5883a2804d46b03bd7c8f Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Sat, 10 Sep 2016 05:21:52 +0200 Subject: Static documentation rebuilt with current staticdocs Using hadley/staticdocs commit #8c1069d from 8 days ago --- vignettes/compiled_models.html | 327 ----------------------------------------- 1 file changed, 327 deletions(-) delete mode 100644 vignettes/compiled_models.html (limited to 'vignettes/compiled_models.html') diff --git a/vignettes/compiled_models.html b/vignettes/compiled_models.html deleted file mode 100644 index 004a808c..00000000 --- a/vignettes/compiled_models.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - - - - - - - - -Performance benefit by using compiled model definitions in mkin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
-
-
-
-
- -
- - - - - - - -
-

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")
-
##            gcc 
-## "/usr/bin/gcc"
-

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

-
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(
-  "deSolve, not compiled" = mkinfit(SFO_SFO, FOCUS_2006_D, 
-                                    solution_type = "deSolve", 
-                                    use_compiled = FALSE, quiet = TRUE),
-  "Eigenvalue based" = mkinfit(SFO_SFO, FOCUS_2006_D, 
-                               solution_type = "eigen", quiet = TRUE),
-  "deSolve, compiled" = mkinfit(SFO_SFO, FOCUS_2006_D, 
-                                solution_type = "deSolve", quiet = TRUE),
-  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)
-
## Unit: milliseconds
-##                   expr       min        lq      mean    median        uq
-##  deSolve, not compiled 6507.8296 6549.5160 6597.4319 6591.2024 6642.2330
-##       Eigenvalue based  890.5249  917.6589  928.4907  944.7928  947.4735
-##      deSolve, compiled  735.4908  742.0363  749.3996  748.5817  756.3540
-##        max neval cld
-##  6693.2636     3   c
-##   950.1543     3  b 
-##   764.1264     3 a
-
autoplot(mb.1)
-

-

We see that using the compiled model is by a factor of 8.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 8.804921
-## Eigenvalue based      1.262110
-## 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(
-  parent = mkinsub("FOMC", "m1"),
-  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))
-
## 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)
-
## Unit: seconds
-##                   expr       min       lq      mean    median        uq
-##  deSolve, not compiled 13.741831 13.74759 13.815509 13.753350 13.852348
-##      deSolve, compiled  1.358402  1.35862  1.368666  1.358838  1.373798
-##        max neval cld
-##  13.951345     3   b
-##   1.388759     3  a
-
smb.2["median"]/smb.2["deSolve, compiled", "median"]
-
##   median
-## 1     NA
-## 2     NA
-
autoplot(mb.2)
-

-

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

-

This vignette was built with mkin 0.9.44.9000 on

-
## R version 3.3.1 (2016-06-21)
-## 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
-
- - - -
-
- -
- - - - - - -- cgit v1.2.1