From eb01728fb665ffad05b91cd9727fd009567dae5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20W=C3=B3jtowicz?= Date: Thu, 19 May 2016 19:11:33 +0200 Subject: [PATCH] added saving host info; added saving results in rds files; renamed benchmark scripts --- .gitignore | 1 + benchmark-revolution.R | 75 ++++++++++++++++++++++++ sample-benchmark.R => benchmark-sample.R | 0 R-benchmark-25.R => benchmark-urbanek.R | 40 ++++++++++--- master-ctrl-slaves.sh | 12 +++- revolution-benchmark.R | 34 ----------- slave-cmds.sh | 39 ++++++------ 7 files changed, 139 insertions(+), 62 deletions(-) create mode 100644 benchmark-revolution.R rename sample-benchmark.R => benchmark-sample.R (100%) rename R-benchmark-25.R => benchmark-urbanek.R (84%) delete mode 100644 revolution-benchmark.R diff --git a/.gitignore b/.gitignore index f75b796..1c2691c 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ vignettes/*.pdf cpuinfo hosts-list.txt ssh/rsa.key +*.rds diff --git a/benchmark-revolution.R b/benchmark-revolution.R new file mode 100644 index 0000000..0149168 --- /dev/null +++ b/benchmark-revolution.R @@ -0,0 +1,75 @@ +# source: https://gist.github.com/andrie/24c9672f1ea39af89c66#file-rro-mkl-benchmark-r + +runs = 10 +results = data.frame(name=character(), time=numeric()) + +cat(c("Runs :", runs, "\n")) + +# Initialization + +set.seed (1) +m <- 10000 +n <- 5000 +A <- matrix (runif (m*n),m,n) + +cat("Matrix Multiply : ") +cumulate = 0 +for (i in 1:runs) + cumulate = cumulate + as.numeric(system.time (B <- crossprod(A))[3]) + +results = rbind(results, data.frame(name="Matrix Multiply", + time=cumulate/runs)) +cat(c(cumulate/runs, "\n")) + +cat("Cholesky Factorization : ") +cumulate = 0 +for (i in 1:runs) + cumulate = cumulate + as.numeric(system.time (C <- chol(B))[3]) + +results = rbind(results, data.frame(name="Cholesky Factorization", + time=cumulate/runs)) +cat(c(cumulate/runs, "\n")) + +cat("Singular Value Deomposition : ") +m <- 10000 +n <- 2000 +A <- matrix (runif (m*n),m,n) + +cumulate = 0 +for (i in 1:runs) + cumulate = cumulate + as.numeric(system.time (S <- svd (A,nu=0,nv=0))[3]) + +results = rbind(results, data.frame(name="Singular Value Deomposition", + time=cumulate/runs)) +cat(c(cumulate/runs, "\n")) + +cat("Principal Components Analysis : ") +m <- 10000 +n <- 2000 +A <- matrix (runif (m*n),m,n) + +cumulate = 0 +for (i in 1:runs) + cumulate = cumulate + as.numeric(system.time (P <- prcomp(A))[3]) + +results = rbind(results, data.frame(name="Principal Components Analysis", + time=cumulate/runs)) +cat(c(cumulate/runs, "\n")) + +cat("Linear Discriminant Analysis : ") +library('MASS') +g <- 5 +k <- round (m/2) +A <- data.frame (A, fac=sample (LETTERS[1:g],m,replace=TRUE)) +train <- sample(1:m, k) + +cumulate = 0 +for (i in 1:runs) + cumulate = cumulate + as.numeric(system.time (L <- lda(fac ~., data=A, prior=rep(1,g)/g, subset=train))[3]) + +results = rbind(results, data.frame(name="Linear Discriminant Analysis", + time=cumulate/runs)) +cat(c(cumulate/runs, "\n")) + +attr(results, "runs") = runs +saveRDS(results, paste0("test-revolution-", ifelse(exists("blasLibName"), blasLibName, ""), ".rds")) diff --git a/sample-benchmark.R b/benchmark-sample.R similarity index 100% rename from sample-benchmark.R rename to benchmark-sample.R diff --git a/R-benchmark-25.R b/benchmark-urbanek.R similarity index 84% rename from R-benchmark-25.R rename to benchmark-urbanek.R index 653e51c..831dc46 100644 --- a/R-benchmark-25.R +++ b/benchmark-urbanek.R @@ -1,7 +1,6 @@ # source: http://r.research.att.com/benchmarks/R-benchmark-25.R -library(methods) # for Rscript - +# R Benchmark 2.5.1 (05/2016) # R Benchmark 2.5 (06/2008) [Simon Urbanek] # version 2.5: scaled to get roughly 1s per test, R 2.7.0 @ 2.6GHz Mac Pro # R Benchmark 2.4 (06/2008) [Simon Urbanek] @@ -27,14 +26,18 @@ library(methods) # for Rscript # by Stephan Steinhaus (stst@informatik.uni-frankfurt.de) # Reference for Escoufier's equivalents vectors (test III.5): # Escoufier Y., 1970. Echantillonnage dans une population de variables -# aleatoires réelles. Publ. Inst. Statis. Univ. Paris 19 Fasc 4, 1-47. +# aleatoires r?elles. Publ. Inst. Statis. Univ. Paris 19 Fasc 4, 1-47. # # type source("c://R2.R") to start the test -runs <- 3 # Number of times the tests are executed +library(methods) # for Rscript +set.seed(1) +results = data.frame(name=character(), time=numeric()) + +runs <- 10 # Number of times the tests are executed times <- rep(0, 15); dim(times) <- c(5,3) -require(Matrix) # Optimized matrix operations -require(SuppDists) # Optimized random number generators +library(Matrix) # Optimized matrix operations +library(SuppDists) # Optimized random number generators #Runif <- rMWC1019 # The fast uniform number generator Runif <- runif # If you don't have SuppDists, you can use: Runif <- runif @@ -43,10 +46,10 @@ Runif <- runif # If you don't have SuppDists, you can use: Rnorm <- rnorm #b <- rziggurat(10, new.start=TRUE) # Init. the generator Rnorm <- rnorm -remove("a", "b") + options(object.size=100000000) -cat("\n\n R Benchmark 2.5\n") +cat("\n\n R Benchmark 2.5.1\n") cat(" ===============\n") cat(c("Number of times each test is run__________________________: ", runs)) cat("\n\n") @@ -71,6 +74,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[1, 1] <- timing cat(c("Creation, transp., deformation of a 2500x2500 matrix (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Creation, transp., deformation of a 2500x2500 matrix", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -87,6 +91,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[2, 1] <- timing cat(c("2400x2400 normal distributed random matrix ^1000____ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="2400x2400 normal distributed random matrix ^1000", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -104,6 +109,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[3, 1] <- timing cat(c("Sorting of 7,000,000 random values__________________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Sorting of 7,000,000 random values", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -120,6 +126,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[4, 1] <- timing cat(c("2800x2800 cross-product matrix (b = a' * a)_________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="2800x2800 cross-product matrix (b = a' * a)", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -148,12 +155,13 @@ for (i in 1:runs) { timing <- cumulate/runs times[5, 1] <- timing cat(c("Linear regr. over a 3000x3000 matrix (c = a \\ b')___ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Linear regr. over a 3000x3000 matrix (c = a \ b')", time=as.numeric(timing))) remove("a", "b", "c", "qra") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() times[ , 1] <- sort(times[ , 1]) cat(" --------------------------------------------\n") -cat(c(" Trimmed geom. mean (2 extremes eliminated): ", exp(mean(log(times[2:4, 1]))), "\n\n")) +cat(c(" Trimmed geom. mean (2 extremes eliminated): ", exp(mean(log(times[2:4, 1]))), "\n\n")) cat(" II. Matrix functions\n") cat(" --------------------\n") @@ -172,6 +180,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[1, 2] <- timing cat(c("FFT over 2,400,000 random values____________________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="FFT over 2,400,000 random value", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -193,6 +202,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[2, 2] <- timing cat(c("Eigenvalues of a 640x640 random matrix______________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Eigenvalues of a 640x640 random matrix", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -213,6 +223,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[3, 2] <- timing cat(c("Determinant of a 2500x2500 random matrix____________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Determinant of a 2500x2500 random matrix", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -232,6 +243,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[4, 2] <- timing cat(c("Cholesky decomposition of a 3000x3000 matrix________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Cholesky decomposition of a 3000x3000 matrix", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -251,6 +263,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[5, 2] <- timing cat(c("Inverse of a 1600x1600 random matrix________________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Inverse of a 1600x1600 random matrix", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -275,6 +288,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[1, 3] <- timing cat(c("3,500,000 Fibonacci numbers calculation (vector calc)(sec): ", timing, "\n")) +results = rbind(results, data.frame(name="3,500,000 Fibonacci numbers calculation (vector calc)", time=as.numeric(timing))) remove("a", "b", "phi") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -293,6 +307,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[2, 3] <- timing cat(c("Creation of a 3000x3000 Hilbert matrix (matrix calc) (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Creation of a 3000x3000 Hilbert matrix (matrix calc)", time=as.numeric(timing))) remove("a", "b") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -311,6 +326,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[3, 3] <- timing cat(c("Grand common divisors of 400,000 pairs (recursion)__ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Grand common divisors of 400,000 pairs (recursion)", time=as.numeric(timing))) remove("a", "b", "c", "gcd2") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -333,6 +349,7 @@ for (i in 1:runs) { timing <- cumulate/runs times[4, 3] <- timing cat(c("Creation of a 500x500 Toeplitz matrix (loops)_______ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Creation of a 500x500 Toeplitz matrix (loops)", time=as.numeric(timing))) remove("b", "j", "k") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -375,6 +392,7 @@ for (i in 1:runs) { } times[5, 3] <- timing cat(c("Escoufier's method on a 45x45 matrix (mixed)________ (sec): ", timing, "\n")) +results = rbind(results, data.frame(name="Escoufier's method on a 45x45 matrix (mixed)", time=as.numeric(timing))) remove("x", "p", "vt", "vr", "vrt", "rvt", "RV", "j", "k") remove("x2", "R", "Rxx", "Ryy", "Rxy", "Ryx", "Rvmax", "Trace") if (R.Version()$os == "Win32" || R.Version()$os == "mingw32") flush.console() @@ -385,5 +403,9 @@ cat(c(" Trimmed geom. mean (2 extremes eliminated): ", exp(mean(l cat(c("Total time for all 15 tests_________________________ (sec): ", sum(times), "\n")) cat(c("Overall mean (sum of I, II and III trimmed means/3)_ (sec): ", exp(mean(log(times[2:4, ]))), "\n")) + +attr(results, "runs") = runs +saveRDS(results, paste0("test-urbanek-", ifelse(exists("blasLibName"), blasLibName, ""), ".rds")) + remove("cumulate", "timing", "times", "runs", "i") cat(" --- End of test ---\n\n") diff --git a/master-ctrl-slaves.sh b/master-ctrl-slaves.sh index 8822e0a..be8a8cd 100644 --- a/master-ctrl-slaves.sh +++ b/master-ctrl-slaves.sh @@ -13,7 +13,7 @@ function configure_hosts { echo -n "${host} ... " echo -n "config-push " - scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} slave-cmds.sh cpuinfo sample-benchmark.R R-benchmark-25.R revolution-benchmark.R root@${host}:/root + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} slave-cmds.sh cpuinfo benchmark-sample.R benchmark-urbanek.R benchmark-revolution.R root@${host}:/root ret=$? if [ $ret -ne 0 ] ; then echo "error $ret"; continue @@ -29,6 +29,7 @@ function configure_hosts { echo "config-run " { ssh ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host} 'bash slave-cmds.sh mro_install netlib_install atlas_st_install openblas_install atlas_mt_install gotoblas2_install mkl_install blis_install cublas_install > install.log 2>&1' ; scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/install.log install-${host}.log; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/host-info.log host-info-${host}.log; echo "${host} finished" ; } & done @@ -59,6 +60,15 @@ function benchmark { echo "benchmark-run " { ssh ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host} "bash slave-cmds.sh test_${BENCHMARK_TEST} netlib_check atlas_st_check openblas_check atlas_mt_check gotoblas2_check mkl_check blis_check cublas_check > test-${BENCHMARK_TEST}.log 2>&1" ; scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}.log test-${BENCHMARK_TEST}-${host}.log; + + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-netlib.rds test-${BENCHMARK_TEST}-${host}-netlib.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-atlas_st.rds test-${BENCHMARK_TEST}-${host}-atlas_st.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-openblas.rds test-${BENCHMARK_TEST}-${host}-openblas.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-atlas_mt.rds test-${BENCHMARK_TEST}-${host}-atlas_mt.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-gotoblas2.rds test-${BENCHMARK_TEST}-${host}-gotoblas2.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-mkl.rds test-${BENCHMARK_TEST}-${host}-mkl.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-blis.rds test-${BENCHMARK_TEST}-${host}-blis.rds; + scp ${SSH_OPTIONS} -i ssh/${SSH_KEY_PRIV} root@${host}:/root/test-${BENCHMARK_TEST}-cublas.rds test-${BENCHMARK_TEST}-${host}-cublas.rds 2> /dev/null; echo "${host} finished" ; } & done diff --git a/revolution-benchmark.R b/revolution-benchmark.R deleted file mode 100644 index fa96871..0000000 --- a/revolution-benchmark.R +++ /dev/null @@ -1,34 +0,0 @@ -# source: https://gist.github.com/andrie/24c9672f1ea39af89c66#file-rro-mkl-benchmark-r - -# Initialization - -set.seed (1) -m <- 10000 -n <- 5000 -A <- matrix (runif (m*n),m,n) - -# Matrix multiply -system.time (B <- crossprod(A)) - -# Cholesky Factorization -system.time (C <- chol(B)) - -# Singular Value Deomposition -m <- 10000 -n <- 2000 -A <- matrix (runif (m*n),m,n) -system.time (S <- svd (A,nu=0,nv=0)) - -# Principal Components Analysis -m <- 10000 -n <- 2000 -A <- matrix (runif (m*n),m,n) -system.time (P <- prcomp(A)) - -# Linear Discriminant Analysis -library('MASS') -g <- 5 -k <- round (m/2) -A <- data.frame (A, fac=sample (LETTERS[1:g],m,replace=TRUE)) -train <- sample(1:m, k) -system.time (L <- lda(fac ~., data=A, prior=rep(1,g)/g, subset=train)) diff --git a/slave-cmds.sh b/slave-cmds.sh index 37033f1..e6f6116 100644 --- a/slave-cmds.sh +++ b/slave-cmds.sh @@ -3,7 +3,7 @@ WGET_OPTIONS="--no-check-certificate" MRO_VERSION="3.2.4" CHECKPOINT_DATE="2016-04-01" -R_BENCHMARK_SCRIPT="sample-benchmark.R" +R_BENCHMARK_SCRIPT="benchmark-sample.R" DIR_BLAS="/opt/blas-libs" if [ ! -f ./cpuinfo ]; then @@ -19,6 +19,11 @@ NPROC=${PROCESSOR_CORES} function mro_install { echo "Started installing Microsoft R Open and dependencies" + + # save host info + ./cpuinfo -g | grep -oP 'Processor name( +):( +)\K(.+)' > host-info.log + cat /proc/meminfo | grep -oP 'MemTotal:( +)\K(\d+)' >> host-info.log + lspci -nn | grep -oP "VGA.*\KNVIDIA.*?]" >> host-info.log # update debian repos & upgrade packages echo "deb http://snapshot.debian.org/archive/debian/20160411T102554Z/ jessie-backports main" >> /etc/apt/sources.list @@ -47,9 +52,9 @@ function mro_install { # prepare R checkpoint mkdir ~/.checkpoint Rscript -e "library(checkpoint); checkpoint('${CHECKPOINT_DATE}')" - sed -i "1i\library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE)" sample-benchmark.R - sed -i "1i\library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE)" revolution-benchmark.R - sed -i "1i\library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE)" R-benchmark-25.R + sed -i "1i\library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE)" benchmark-sample.R + sed -i "1i\library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE)" benchmark-urbanek.R + sed -i "1i\library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE)" benchmark-revolution.R # make directory for BLAS and LAPACK libraries mkdir -p ${DIR_BLAS} @@ -107,9 +112,9 @@ function netlib_remove { function netlib_check { - echo "Started checking netlib." + echo "Started checking netlib" - LD_PRELOAD="${DIR_NETLIB}/libblas.so.3.0 ${DIR_NETLIB}/liblapack.so.3.0" Rscript ${R_BENCHMARK_SCRIPT} + LD_PRELOAD="${DIR_NETLIB}/libblas.so.3.0 ${DIR_NETLIB}/liblapack.so.3.0" Rscript -e "blasLibName='netlib'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking netlib" } @@ -149,7 +154,7 @@ function atlas_st_check { echo "Started checking ATLAS (single-threaded)" - LD_PRELOAD="${DIR_ATLAS_ST}/libatlas.so.3 ${DIR_ATLAS_ST}/libblas.so.3 ${DIR_ATLAS_ST}/liblapack.so.3" Rscript ${R_BENCHMARK_SCRIPT} + LD_PRELOAD="${DIR_ATLAS_ST}/libatlas.so.3 ${DIR_ATLAS_ST}/libblas.so.3 ${DIR_ATLAS_ST}/liblapack.so.3" Rscript -e "blasLibName='atlas_st'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking ATLAS (single-threaded)" } @@ -198,7 +203,7 @@ function openblas_check { echo "Started checking OpenBLAS" - LD_PRELOAD="${DIR_OPENBLAS}/libopenblas.so.0 ${DIR_OPENBLAS}/libblas.so.3 ${DIR_OPENBLAS}/liblapack.so.3" Rscript ${R_BENCHMARK_SCRIPT} + LD_PRELOAD="${DIR_OPENBLAS}/libopenblas.so.0 ${DIR_OPENBLAS}/libblas.so.3 ${DIR_OPENBLAS}/liblapack.so.3" Rscript -e "blasLibName='openblas'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking OpenBLAS" } @@ -257,7 +262,7 @@ function atlas_mt_check { echo "Started checking ATLAS (multi-threaded)" - LD_PRELOAD="${DIR_ATLAS_MT}/libtatlas.so" Rscript ${R_BENCHMARK_SCRIPT} + LD_PRELOAD="${DIR_ATLAS_MT}/libtatlas.so" Rscript -e "blasLibName='atlas_mt'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking ATLAS (multi-threaded)" } @@ -313,13 +318,11 @@ function gotoblas2_check { echo "${DIR_GOTOBLAS2}" > /etc/ld.so.conf.d/gotoblas2.conf ldconfig - sed "2i\library(RhpcBLASctl); blas_set_num_threads(${NPROC})" ${R_BENCHMARK_SCRIPT} > benchmark-gotoblas2.R - LD_PRELOAD="${DIR_GOTOBLAS2}/libgoto2blas.so ${DIR_GOTOBLAS2}/libgoto2lapack.so" GOTO_NUM_THREADS=${NPROC} Rscript benchmark-gotoblas2.R + LD_PRELOAD="${DIR_GOTOBLAS2}/libgoto2blas.so ${DIR_GOTOBLAS2}/libgoto2lapack.so" GOTO_NUM_THREADS=${NPROC} Rscript -e "blasLibName='gotoblas2'; library(checkpoint); checkpoint('${CHECKPOINT_DATE}', scanForPackages=FALSE, verbose=FALSE); library(RhpcBLASctl); blas_set_num_threads(${NPROC}); source('${R_BENCHMARK_SCRIPT}')" rm /etc/ld.so.conf.d/gotoblas2.conf ldconfig - rm benchmark-gotoblas2.R echo "Finished checking GotoBLAS2" } @@ -366,7 +369,7 @@ function mkl_check { echo "Started checking MKL" - LD_PRELOAD="${DIR_MKL}/libRblas.so ${DIR_MKL}/libRlapack.so ${DIR_MKL}/libmkl_vml_mc3.so ${DIR_MKL}/libmkl_vml_def.so ${DIR_MKL}/libmkl_gnu_thread.so ${DIR_MKL}/libmkl_core.so ${DIR_MKL}/libmkl_gf_lp64.so ${DIR_MKL}/libiomp5.so ${DIR_MKL}/libmkl_gf_ilp64.so" MKL_INTERFACE_LAYER="GNU,LP64" MKL_THREADING_LAYER="GNU" Rscript ${R_BENCHMARK_SCRIPT} + LD_PRELOAD="${DIR_MKL}/libRblas.so ${DIR_MKL}/libRlapack.so ${DIR_MKL}/libmkl_vml_mc3.so ${DIR_MKL}/libmkl_vml_def.so ${DIR_MKL}/libmkl_gnu_thread.so ${DIR_MKL}/libmkl_core.so ${DIR_MKL}/libmkl_gf_lp64.so ${DIR_MKL}/libiomp5.so ${DIR_MKL}/libmkl_gf_ilp64.so" MKL_INTERFACE_LAYER="GNU,LP64" MKL_THREADING_LAYER="GNU" Rscript -e "blasLibName='mkl'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking MKL" } @@ -482,7 +485,7 @@ function blis_check { ((PARALLEL_STEPS--)) done - LD_PRELOAD="${DIR_BLIS}/libblis.so" BLIS_JC_NT=${COUNT_JC} BLIS_IC_NT=${COUNT_IC} BLIS_JR_NT=${COUNT_JR} BLIS_IR_NT=${COUNT_IR} Rscript ${R_BENCHMARK_SCRIPT} + LD_PRELOAD="${DIR_BLIS}/libblis.so" BLIS_JC_NT=${COUNT_JC} BLIS_IC_NT=${COUNT_IC} BLIS_JR_NT=${COUNT_JR} BLIS_IR_NT=${COUNT_IR} Rscript -e "blasLibName='blis'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking BLIS" } @@ -598,7 +601,7 @@ function cublas_check { echo "Started checking cuBLAS" - NVBLAS_CONFIG_FILE="${DIR_CUBLAS}/nvblas.conf" LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libnvblas.so.6.5 /usr/lib/x86_64-linux-gnu/libcublas.so.6.5" Rscript ${R_BENCHMARK_SCRIPT} + NVBLAS_CONFIG_FILE="${DIR_CUBLAS}/nvblas.conf" LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libnvblas.so.6.5 /usr/lib/x86_64-linux-gnu/libcublas.so.6.5" Rscript -e "blasLibName='cublas'; source('${R_BENCHMARK_SCRIPT}')" echo "Finished checking cuBLAS" } @@ -620,13 +623,13 @@ else NPROC=${PROCESSOR_CPUS} ;; test_sample) - R_BENCHMARK_SCRIPT="sample-benchmark.R" + R_BENCHMARK_SCRIPT="benchmark-sample.R" ;; test_urbanek) - R_BENCHMARK_SCRIPT="R-benchmark-25.R" + R_BENCHMARK_SCRIPT="benchmark-urbanek.R" ;; test_revolution) - R_BENCHMARK_SCRIPT="revolution-benchmark.R" + R_BENCHMARK_SCRIPT="benchmark-revolution.R" ;; *) $i