/*
* Copyright (C) 2008-2015 by Holger Arndt
*
* This file is part of the Universal Java Matrix Package (UJMP).
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership and licensing.
*
* UJMP is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* UJMP is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with UJMP; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
package org.ujmp.core.benchmark;
import java.util.LinkedList;
import java.util.List;
import org.ujmp.core.mapmatrix.DefaultMapMatrix;
import org.ujmp.core.util.MathUtil;
import org.ujmp.core.util.StringUtil;
import org.ujmp.core.util.UJMPSettings;
public class BenchmarkConfig extends DefaultMapMatrix {
private static final long serialVersionUID = 2267893158983793396L;
public static final double NOTAVAILABLE = 0;
public static final double ERROR = Double.NaN;
public BenchmarkConfig() {
put("name", null);
put("numberOfThreads", UJMPSettings.getInstance().getNumberOfThreads());
put("reverse", false);
put("shuffle", true);
put("gcMemory", true);
put("purgeMemory", true);
put("burnInRuns", 3);
put("runs", 10);
put("minTrialCount", 1);
put("maxTrialCount", 3);
put("maxTime", 60000); // maximal time for one operation
put("maxStd", 10); // maximal standard deviation results may vary
put("minSize", 10); // maximal size of a matrix
put("maxSize", 10000); // maximal size of a matrix
put("runTimesScalar", true);
put("runPlusMatrix", true);
put("runTranspose", true);
put("runMtimes", true);
put("runInv", true);
put("runInvSPD", true);
put("runSolveSquare", true);
put("runSolveTall", true);
put("runSVD", true);
put("runEig", true);
put("runChol", false);
put("runLU", false);
put("runQR", false);
put("runDefaultDenseDoubleMatrix2D", true);
put("runArrayDenseDoubleMatrix2D", false);
put("runBlockDenseDoubleMatrix2D", true);
put("runJBlasDenseDoubleMatrix2D", true);
put("runMTJDenseDoubleMatrix2D", true);
put("runOjalgoDenseDoubleMatrix2D", true);
put("runOrbitalDenseDoubleMatrix2D", false);
put("runJScienceDenseDoubleMatrix2D", false);
put("runJSciDenseDoubleMatrix2D", false);
put("runJMathArrayDenseDoubleMatrix2D", false);
put("runParallelColtDenseDoubleMatrix2D", true);
put("runColtDenseDoubleMatrix2D", true);
put("runSSTDenseDoubleMatrix2D", false);
put("runCommonsMathArrayDenseDoubleMatrix2D", true);
put("runCommonsMathBlockDenseDoubleMatrix2D", true);
put("runEJMLDenseDoubleMatrix2D", true);
put("runJamaDenseDoubleMatrix2D", true);
put("runJampackDenseDoubleMatrix2D", false);
put("runJMatricesDenseDoubleMatrix2D", false);
put("runMantissaDenseDoubleMatrix2D", false);
put("runVecMathDenseDoubleMatrix2D", false);
put("useJBlas", true);
put("useBlockMatrixMultiply", true);
put("useOjalgo", true);
put("useEJML", true);
put("useMTJ", true);
put("useParallelColt", true);
put("useCommonsMath", true);
put("defaultBlockSize", 100);
}
public List getSVDSizes() {
return getSquareSizes();
}
public boolean isRunTimesScalar() {
return MathUtil.getBoolean(get("runTimesScalar"));
}
public void setRunTimesScalar(boolean runTimesScalar) {
put("runTimesScalar", runTimesScalar);
}
public boolean isRunPlusMatrix() {
return MathUtil.getBoolean(get("runPlusMatrix"));
}
public void setRunPlusMatrix(boolean runPlusMatrix) {
put("runPlusMatrix", runPlusMatrix);
}
public boolean isRunTranspose() {
return MathUtil.getBoolean(get("runTranspose"));
}
public void setRunTranspose(boolean runTranspose) {
put("runTranspose", runTranspose);
}
public boolean isRunMtimes() {
return MathUtil.getBoolean(get("runMtimes"));
}
public void setRunMtimes(boolean runMtimes) {
put("runMtimes", runMtimes);
}
public boolean isRunInv() {
return MathUtil.getBoolean(get("runInv"));
}
public boolean isRunInvSPD() {
return MathUtil.getBoolean(get("runInvSPD"));
}
public void setRunInv(boolean runInv) {
put("runInv", runInv);
}
public void setRunInvSPD(boolean runInv) {
put("runInvSPD", runInv);
}
public boolean isRunSolveSquare() {
return MathUtil.getBoolean(get("runSolveSquare"));
}
public void setRunSolveSquare(boolean runSolveSquare) {
put("runSolveSquare", runSolveSquare);
}
public boolean isRunSolveTall() {
return MathUtil.getBoolean(get("runSolveTall"));
}
public void setRunSolveTall(boolean runSolveTall) {
put("runSolveTall", runSolveTall);
}
public boolean isRunSVD() {
return MathUtil.getBoolean(get("runSVD"));
}
public void setRunSVD(boolean runSVD) {
put("runSVD", runSVD);
}
public int getNumberOfThreads() {
return MathUtil.getInt(get("numberOfThreads"));
}
public void setNumberOfThreads(int numberOfThreads) {
put("numberOfThreads", numberOfThreads);
}
public boolean isRunEig() {
return MathUtil.getBoolean(get("runEig"));
}
public void setRunEig(boolean runEig) {
put("runEig", runEig);
}
public boolean isRunChol() {
return MathUtil.getBoolean(get("runChol"));
}
public void setRunChol(boolean runChol) {
put("runChol", runChol);
}
public boolean isRunLU() {
return MathUtil.getBoolean(get("runLU"));
}
public void setRunLU(boolean runLU) {
put("runLU", runLU);
}
public boolean isRunQR() {
return MathUtil.getBoolean(get("runQR"));
}
public void setRunQR(boolean runQR) {
put("runQR", runQR);
}
public int getBurnInRuns() {
return MathUtil.getInt(get("burnInRuns"));
}
public int getMinTrialCount() {
return MathUtil.getInt(get("minTrialCount"));
}
public void setMinTrialCount(int minTrialCount) {
put("minTrialCount", minTrialCount);
}
public int getMaxTrialCount() {
return MathUtil.getInt(get("maxTrialCount"));
}
public void setMaxTrialCount(int maxTrialCount) {
put("maxTrialCount", maxTrialCount);
}
public void setBurnInRuns(int burnInRuns) {
put("burnInRuns", burnInRuns);
}
public int getRuns() {
return MathUtil.getInt(get("runs"));
}
public void setRuns(int runs) {
put("runs", runs);
}
public List getSquareSizes() {
List sizes = new LinkedList();
int minSize = getMinSize();
int maxSize = getMaxSize();
if (minSize <= 2 && maxSize >= 2) {
sizes.add(new long[] { 2, 2 });
}
if (minSize <= 3 && maxSize >= 3) {
sizes.add(new long[] { 3, 3 });
}
if (minSize <= 4 && maxSize >= 4) {
sizes.add(new long[] { 4, 4 });
}
if (minSize <= 5 && maxSize >= 5) {
sizes.add(new long[] { 5, 5 });
}
if (minSize <= 10 && maxSize >= 10) {
sizes.add(new long[] { 10, 10 });
}
if (minSize <= 20 && maxSize >= 20) {
sizes.add(new long[] { 20, 20 });
}
if (minSize <= 50 && maxSize >= 50) {
sizes.add(new long[] { 50, 50 });
}
if (minSize <= 100 && maxSize >= 100) {
sizes.add(new long[] { 100, 100 });
}
if (minSize <= 200 && maxSize >= 200) {
sizes.add(new long[] { 200, 200 });
}
if (minSize <= 500 && maxSize >= 500) {
sizes.add(new long[] { 500, 500 });
}
if (minSize <= 1000 && maxSize >= 1000) {
sizes.add(new long[] { 1000, 1000 });
}
if (minSize <= 2000 && maxSize >= 2000) {
sizes.add(new long[] { 2000, 2000 });
}
if (minSize <= 5000 && maxSize >= 5000) {
sizes.add(new long[] { 5000, 5000 });
}
if (minSize <= 10000 && maxSize >= 10000) {
sizes.add(new long[] { 10000, 10000 });
}
return sizes;
}
public List getTallSizes() {
List sizes = new LinkedList();
for (long[] s : getSquareSizes()) {
s = s.clone();
s[0] *= 2;
sizes.add(s);
}
return sizes;
}
public List getTransposeSizes() {
return getSquareSizes();
}
public List getTimesSizes() {
return getSquareSizes();
}
public List getPlusSizes() {
return getSquareSizes();
}
public List getMtimesSizes() {
return getSquareSizes();
}
public List getInvSizes() {
return getSquareSizes();
}
public List getSolveSquareSizes() {
return getSquareSizes();
}
public List getSolveTallSizes() {
return getTallSizes();
}
public List getEigSizes() {
return getSquareSizes();
}
public List getQRSizes() {
return getSquareSizes();
}
public List getLUSizes() {
return getSquareSizes();
}
public List getCholSizes() {
return getSquareSizes();
}
public boolean isRunDefaultDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runDefaultDenseDoubleMatrix2D"));
}
public void setRunDefaultDenseDoubleMatrix2D(boolean runDefaultDenseDoubleMatrix2D) {
put("runDefaultDenseDoubleMatrix2D", runDefaultDenseDoubleMatrix2D);
}
public boolean isRunArrayDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runArrayDenseDoubleMatrix2D"));
}
public boolean isRunBlockDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runBlockDenseDoubleMatrix2D"));
}
public void setRunArrayDenseDoubleMatrix2D(boolean runArrayDenseDoubleMatrix2D) {
put("runArrayDenseDoubleMatrix2D", runArrayDenseDoubleMatrix2D);
}
public void setRunBlockDenseDoubleMatrix2D(boolean runBlockDenseDoubleMatrix2D) {
put("runBlockDenseDoubleMatrix2D", runBlockDenseDoubleMatrix2D);
}
public boolean isRunMTJDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runMTJDenseDoubleMatrix2D"));
}
public void setRunMTJDenseDoubleMatrix2D(boolean runMTJDenseDoubleMatrix2D) {
put("runMTJDenseDoubleMatrix2D", runMTJDenseDoubleMatrix2D);
}
public boolean isRunOjalgoDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runOjalgoDenseDoubleMatrix2D"));
}
public void setRunOjalgoDenseDoubleMatrix2D(boolean runOjalgoDenseDoubleMatrix2D) {
put("runOjalgoDenseDoubleMatrix2D", runOjalgoDenseDoubleMatrix2D);
}
public void setRunOrbitalDenseDoubleMatrix2D(boolean runOrbitalDenseDoubleMatrix2D) {
put("runOrbitalDenseDoubleMatrix2D", runOrbitalDenseDoubleMatrix2D);
}
public boolean isRunOwlpackDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runOwlpackDenseDoubleMatrix2D"));
}
public boolean isRunJScienceDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runJScienceDenseDoubleMatrix2D"));
}
public void setRunJScienceDenseDoubleMatrix2D(boolean runJScienceDenseDoubleMatrix2D) {
put("runJScienceDenseDoubleMatrix2D", runJScienceDenseDoubleMatrix2D);
}
public boolean isRunJSciDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runJSciDenseDoubleMatrix2D"));
}
public void setRunJSciDenseDoubleMatrix2D(boolean runJSciDenseDoubleMatrix2D) {
put("runJSciDenseDoubleMatrix2D", runJSciDenseDoubleMatrix2D);
}
public boolean isRunParallelColtDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runParallelColtDenseDoubleMatrix2D"));
}
public void setRunParallelColtDenseDoubleMatrix2D(boolean runParallelColtDenseDoubleMatrix2D) {
put("runParallelColtDenseDoubleMatrix2D", runParallelColtDenseDoubleMatrix2D);
}
public boolean isRunColtDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runColtDenseDoubleMatrix2D"));
}
public void setRunColtDenseDoubleMatrix2D(boolean runColtDenseDoubleMatrix2D) {
put("runColtDenseDoubleMatrix2D", runColtDenseDoubleMatrix2D);
}
public boolean isRunCommonsMathArrayDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runCommonsMathArrayDenseDoubleMatrix2D"));
}
public void setRunCommonsMathArrayDenseDoubleMatrix2D(
boolean runCommonsMathArrayDenseDoubleMatrix2D) {
put("runCommonsMathArrayDenseDoubleMatrix2D", runCommonsMathArrayDenseDoubleMatrix2D);
}
public boolean isRunCommonsMathBlockDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runCommonsMathBlockDenseDoubleMatrix2D"));
}
public void setRunCommonsMathBlockDenseDoubleMatrix2D(
boolean runCommonsMathBlockDenseDoubleMatrix2D) {
put("runCommonsMathBlockDenseDoubleMatrix2D", runCommonsMathBlockDenseDoubleMatrix2D);
}
public boolean isRunEJMLDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runEJMLDenseDoubleMatrix2D"));
}
public void setRunEJMLDenseDoubleMatrix2D(boolean runEJMLDenseDoubleMatrix2D) {
put("runEJMLDenseDoubleMatrix2D", runEJMLDenseDoubleMatrix2D);
}
public boolean isRunJamaDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runJamaDenseDoubleMatrix2D"));
}
public void setRunJamaDenseDoubleMatrix2D(boolean runJamaDenseDoubleMatrix2D) {
put("runJamaDenseDoubleMatrix2D", runJamaDenseDoubleMatrix2D);
}
public boolean isRunJampackDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runJampackDenseDoubleMatrix2D"));
}
public void setRunJampackDenseDoubleMatrix2D(boolean runJampackDenseDoubleMatrix2D) {
put("runJampackDenseDoubleMatrix2D", runJampackDenseDoubleMatrix2D);
}
public boolean isRunVecMathDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runVecMathDenseDoubleMatrix2D"));
}
public void setRunVecMathDenseDoubleMatrix2D(boolean runVecMathDenseDoubleMatrix2D) {
put("runVecMathDenseDoubleMatrix2D", runVecMathDenseDoubleMatrix2D);
}
public int getMaxTime() {
return MathUtil.getInt(get("maxTime"));
}
public int getMaxSize() {
return MathUtil.getInt(get("maxSize"));
}
public int getMinSize() {
return MathUtil.getInt(get("minSize"));
}
public void setMaxTime(int maxTime) {
put("maxTime", maxTime);
}
public void setMaxSize(int maxSize) {
put("maxSize", maxSize);
}
public void setMinSize(int minSize) {
put("minSize", minSize);
}
public double getMaxStd() {
return MathUtil.getDouble(get("maxStd"));
}
public void setMaxStd(double maxStd) {
put("maxStd", maxStd);
}
public boolean isGCMemory() {
return MathUtil.getBoolean(get("gcMemory"));
}
public void setGCMemory(boolean gcMemory) {
put("gcMemory", gcMemory);
}
public boolean isPurgeMemory() {
return MathUtil.getBoolean(get("purgeMemory"));
}
public void setPurgeMemory(boolean purgeMemory) {
put("purgeMemory", purgeMemory);
}
public boolean isShuffle() {
return MathUtil.getBoolean(get("shuffle"));
}
public void setShuffle(boolean shuffle) {
put("shuffle", shuffle);
}
public boolean isReverse() {
return MathUtil.getBoolean(get("reverse"));
}
public void setReverse(boolean reverse) {
put("reverse", reverse);
}
public String getName() {
return StringUtil.getString(get("name"));
}
public boolean isRunJBlasDenseDoubleMatrix2D() {
return MathUtil.getBoolean(get("runJBlasDenseDoubleMatrix2D"));
}
public void setRunJBlasDenseDoubleMatrix2D(boolean runJBlas) {
put("runJBlasDenseDoubleMatrix2D", runJBlas);
}
public void setUseJBlas(boolean use) {
put("useJBlas", use);
}
public boolean isUseJBlas() {
return MathUtil.getBoolean(get("useJBlas"));
}
public void setUseMTJ(boolean use) {
put("useMTJ", use);
}
public boolean isUseMTJ() {
return MathUtil.getBoolean(get("useMTJ"));
}
public void setUseOjalgo(boolean use) {
put("useOjalgo", use);
}
public boolean isUseOjalgo() {
return MathUtil.getBoolean(get("useOjalgo"));
}
public void setUseEJML(boolean use) {
put("useEJML", use);
}
public boolean isUseEJML() {
return MathUtil.getBoolean(get("useEJML"));
}
public boolean isUseBlockMatrixMultiply() {
return MathUtil.getBoolean(get("useBlockMatrixMultiply"));
}
public int getDefaultBlockSize() {
return MathUtil.getInt(get("defaultBlockSize"));
}
public void setUseBlockMatrixMultiply(boolean use) {
put("useBlockMatrixMultiply", use);
}
public void setDefaultBlockSize(int size) {
put("defaultBlockSize", size);
}
public void setUseParallelColt(boolean use) {
put("useParallelColt", use);
}
public boolean isUseParallelColt() {
return MathUtil.getBoolean(get("useParallelColt"));
}
public void setUseCommonsMath(boolean use) {
put("useCommonsMath", use);
}
public boolean isUseCommonsMath() {
return MathUtil.getBoolean(get("useCommonsMath"));
}
public void setName(String name) {
put("name", name);
}
}
Ads help maintain this website.