use of org.apache.sysml.api.mlcontext.MLContext in project incubator-systemml by apache.
the class GPUTests method runOnGPU.
/**
* Runs a program on the GPU
*
* @param spark a valid {@link SparkSession}
* @param scriptStr the script to run (as a string)
* @param inputs map of input variables names in the scriptStr (of variable_name -> object)
* @param outStrs list of variable names needed as output from the scriptStr
* @return list of output objects in order of outStrs
*/
protected List<Object> runOnGPU(SparkSession spark, String scriptStr, Map<String, Object> inputs, List<String> outStrs) {
// and other side effects.
synchronized (GPUTests.class) {
MLContext gpuMLC = new MLContext(spark);
gpuMLC.setConfigProperty("sysml.floating.point.precision", FLOATING_POINT_PRECISION);
if (IGNORE_CLEAR_MEMORY_BUG)
gpuMLC.setConfigProperty("sysml.gpu.eager.cudaFree", "true");
gpuMLC.setGPU(true);
gpuMLC.setForceGPU(true);
gpuMLC.setStatistics(true);
List<Object> outputs = new ArrayList<>();
Script script = ScriptFactory.dmlFromString(scriptStr).in(inputs).out(outStrs);
MLResults res = gpuMLC.execute(script);
for (String outStr : outStrs) {
Object output = res.get(outStr);
outputs.add(output);
}
gpuMLC.close();
return outputs;
}
}
use of org.apache.sysml.api.mlcontext.MLContext in project incubator-systemml by apache.
the class GPUTests method runOnCPU.
/**
* Runs a program on the CPU
*
* @param spark a valid {@link SparkSession}
* @param scriptStr the script to run (as a string)
* @param inputs map of input variables names in the scriptStr (of variable_name -> object)
* @param outStrs list of variable names needed as output from the scriptStr
* @return list of output objects in order of outStrs
*/
protected List<Object> runOnCPU(SparkSession spark, String scriptStr, Map<String, Object> inputs, List<String> outStrs) {
MLContext cpuMLC = new MLContext(spark);
List<Object> outputs = new ArrayList<>();
Script script = ScriptFactory.dmlFromString(scriptStr).in(inputs).out(outStrs);
MLResults res = cpuMLC.execute(script);
for (String outStr : outStrs) {
Object output = res.get(outStr);
outputs.add(output);
}
cpuMLC.close();
return outputs;
}
use of org.apache.sysml.api.mlcontext.MLContext in project incubator-systemml by apache.
the class GPUTests method generateInputMatrix.
/**
* Generates a random input matrix with a given size and sparsity
*
* @param spark valid instance of {@link SparkSession}
* @param m number of rows
* @param n number of columns
* @param sparsity sparsity (1 = completely dense, 0 = completely sparse)
* @return a random matrix with given size and sparsity
*/
protected Matrix generateInputMatrix(SparkSession spark, int m, int n, double sparsity, int seed) {
// Generate a random matrix of size m * n
MLContext genMLC = new MLContext(spark);
String scriptStr;
if (sparsity == 0.0) {
scriptStr = "in1 = matrix(0, rows=" + m + ", cols=" + n + ")";
} else {
scriptStr = "in1 = rand(rows=" + m + ", cols=" + n + ", sparsity = " + sparsity + ", seed= " + seed + ", min=-1.0, max=1.0)";
}
Script generateScript = ScriptFactory.dmlFromString(scriptStr).out("in1");
Matrix in1 = genMLC.execute(generateScript).getMatrix("in1");
genMLC.close();
return in1;
}
use of org.apache.sysml.api.mlcontext.MLContext in project incubator-systemml by apache.
the class GPUTests method generateIntegerSequenceMatrix.
/**
* Generates an input matrix which is a sequence of integers
* @param spark valid instance of {@link SparkSession}
* @param m number of rows
* @param n number of columns
* @return a matrix with a sequence of integers
*/
protected Matrix generateIntegerSequenceMatrix(SparkSession spark, int m, int n) {
MLContext genMLC = new MLContext(spark);
String scriptStr;
scriptStr = "temp = seq(1, " + (m * n) + ")" + "in1 = matrix(temp, rows=" + m + ", cols=" + n + ")";
Script generateScript = ScriptFactory.dmlFromString(scriptStr).out("in1");
Matrix in1 = genMLC.execute(generateScript).getMatrix("in1");
genMLC.close();
return in1;
}
use of org.apache.sysml.api.mlcontext.MLContext in project incubator-systemml by apache.
the class GPUTests method generateInputMatrix.
/**
* Generates a random input matrix with a given size and sparsity
*
* @param spark valid instance of {@link SparkSession}
* @param m number of rows
* @param n number of columns
* @param min min for RNG
* @param max max for RNG
* @param sparsity sparsity (1 = completely dense, 0 = completely sparse)
* @param performRounding performs rounding after generation of random matrix
* @return a random matrix with given size and sparsity
*/
protected Matrix generateInputMatrix(SparkSession spark, int m, int n, double min, double max, double sparsity, int seed, boolean performRounding) {
// Generate a random matrix of size m * n
MLContext genMLC = new MLContext(spark);
String scriptStr;
if (sparsity == 0.0) {
scriptStr = "in1 = matrix(0, rows=" + m + ", cols=" + n + ")";
} else {
scriptStr = "in1 = rand(rows=" + m + ", cols=" + n + ", sparsity = " + sparsity + ", seed= " + seed + ", min=" + min + ", max=" + max + ")";
if (performRounding)
scriptStr += "; in1 = round(in1)";
}
Script generateScript = ScriptFactory.dmlFromString(scriptStr).out("in1");
Matrix in1 = genMLC.execute(generateScript).getMatrix("in1");
genMLC.close();
return in1;
}
Aggregations