http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/Algorithm_MLogreg.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/Algorithm_MLogreg.dml b/src/test/scripts/functions/codegen/Algorithm_MLogreg.dml new file mode 100644 index 0000000..88c05d9 --- /dev/null +++ b/src/test/scripts/functions/codegen/Algorithm_MLogreg.dml @@ -0,0 +1,274 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X = read($1) +Y_vec = read($2) +intercept = $3; +tol = $4; +maxiter = $5; + +intercept_status = intercept; +regularization = 0.001; +maxinneriter = 0; + +print ("BEGIN MULTINOMIAL LOGISTIC REGRESSION SCRIPT"); + +eta0 = 0.0001; +eta1 = 0.25; +eta2 = 0.75; +sigma1 = 0.25; +sigma2 = 0.5; +sigma3 = 4.0; +psi = 0.1; + +N = nrow (X); +D = ncol (X); + +# Introduce the intercept, shift and rescale the columns of X if needed +if (intercept_status == 1 | intercept_status == 2) # add the intercept column +{ + X = append (X, matrix (1, rows = N, cols = 1)); + D = ncol (X); +} + +scale_lambda = matrix (1, rows = D, cols = 1); +if (intercept_status == 1 | intercept_status == 2) +{ + scale_lambda [D, 1] = 0; +} + +if (intercept_status == 2) # scale-&-shift X columns to mean 0, variance 1 +{ # Important assumption: X [, D] = matrix (1, rows = N, cols = 1) + avg_X_cols = t(colSums(X)) / N; + var_X_cols = (t(colSums (X ^ 2)) - N * (avg_X_cols ^ 2)) / (N - 1); + is_unsafe = ppred (var_X_cols, 0.0, "<="); + scale_X = 1.0 / sqrt (var_X_cols * (1 - is_unsafe) + is_unsafe); + scale_X [D, 1] = 1; + shift_X = - avg_X_cols * scale_X; + shift_X [D, 1] = 0; + rowSums_X_sq = (X ^ 2) %*% (scale_X ^ 2) + X %*% (2 * scale_X * shift_X) + sum (shift_X ^ 2); +} else { + scale_X = matrix (1, rows = D, cols = 1); + shift_X = matrix (0, rows = D, cols = 1); + rowSums_X_sq = rowSums (X ^ 2); +} + +# Henceforth we replace "X" with "X %*% (SHIFT/SCALE TRANSFORM)" and rowSums(X ^ 2) +# with "rowSums_X_sq" in order to preserve the sparsity of X under shift and scale. +# The transform is then associatively applied to the other side of the expression, +# and is rewritten via "scale_X" and "shift_X" as follows: +# +# ssX_A = (SHIFT/SCALE TRANSFORM) %*% A --- is rewritten as: +# ssX_A = diag (scale_X) %*% A; +# ssX_A [D, ] = ssX_A [D, ] + t(shift_X) %*% A; +# +# tssX_A = t(SHIFT/SCALE TRANSFORM) %*% A --- is rewritten as: +# tssX_A = diag (scale_X) %*% A + shift_X %*% A [D, ]; + +# Convert "Y_vec" into indicator matrice: +max_y = max (Y_vec); +if (min (Y_vec) <= 0) { + # Category labels "0", "-1" etc. are converted into the largest label + Y_vec = Y_vec + (- Y_vec + max_y + 1) * (Y_vec <= 0); + max_y = max_y + 1; +} +Y = table (seq (1, N, 1), Y_vec, N, max_y); +K = ncol (Y) - 1; # The number of non-baseline categories + + +lambda = (scale_lambda %*% matrix (1, rows = 1, cols = K)) * regularization; +delta = 0.5 * sqrt (D) / max (sqrt (rowSums_X_sq)); + +B = matrix (0, rows = D, cols = K); ### LT = X %*% (SHIFT/SCALE TRANSFORM) %*% B; + ### LT = append (LT, matrix (0, rows = N, cols = 1)); + ### LT = LT - rowMaxs (LT) %*% matrix (1, rows = 1, cols = K+1); +P = matrix (1, rows = N, cols = K+1); ### exp_LT = exp (LT); +P = P / (K + 1); ### P = exp_LT / (rowSums (exp_LT) %*% matrix (1, rows = 1, cols = K+1)); +obj = N * log (K + 1); ### obj = - sum (Y * LT) + sum (log (rowSums (exp_LT))) + 0.5 * sum (lambda * (B_new ^ 2)); + +Grad = t(X) %*% (P [, 1:K] - Y [, 1:K]); +if (intercept_status == 2) { + Grad = diag (scale_X) %*% Grad + shift_X %*% Grad [D, ]; +} +Grad = Grad + lambda * B; +norm_Grad = sqrt (sum (Grad ^ 2)); +norm_Grad_initial = norm_Grad; + +if (maxinneriter == 0) { + maxinneriter = D * K; +} +iter = 1; + +# boolean for convergence check +converge = (norm_Grad < tol) | (iter > maxiter); + +print ("-- Initially: Objective = " + obj + ", Gradient Norm = " + norm_Grad + ", Trust Delta = " + delta); + +while (! converge) +{ + # SOLVE TRUST REGION SUB-PROBLEM + S = matrix (0, rows = D, cols = K); + R = - Grad; + V = R; + delta2 = delta ^ 2; + inneriter = 1; + norm_R2 = sum (R ^ 2); + innerconverge = (sqrt (norm_R2) <= psi * norm_Grad); + is_trust_boundary_reached = 0; + + while (! innerconverge) + { + if (intercept_status == 2) { + ssX_V = diag (scale_X) %*% V; + ssX_V [D, ] = ssX_V [D, ] + t(shift_X) %*% V; + } else { + ssX_V = V; + } + Q = P [, 1:K] * (X %*% ssX_V); + HV = t(X) %*% (Q - P [, 1:K] * (rowSums (Q) %*% matrix (1, rows = 1, cols = K))); + if (intercept_status == 2) { + HV = diag (scale_X) %*% HV + shift_X %*% HV [D, ]; + } + HV = HV + lambda * V; + alpha = norm_R2 / sum (V * HV); + Snew = S + alpha * V; + norm_Snew2 = sum (Snew ^ 2); + if (norm_Snew2 <= delta2) + { + S = Snew; + R = R - alpha * HV; + old_norm_R2 = norm_R2 + norm_R2 = sum (R ^ 2); + V = R + (norm_R2 / old_norm_R2) * V; + innerconverge = (sqrt (norm_R2) <= psi * norm_Grad); + } else { + is_trust_boundary_reached = 1; + sv = sum (S * V); + v2 = sum (V ^ 2); + s2 = sum (S ^ 2); + rad = sqrt (sv ^ 2 + v2 * (delta2 - s2)); + if (sv >= 0) { + alpha = (delta2 - s2) / (sv + rad); + } else { + alpha = (rad - sv) / v2; + } + S = S + alpha * V; + R = R - alpha * HV; + innerconverge = TRUE; + } + inneriter = inneriter + 1; + innerconverge = innerconverge | (inneriter > maxinneriter); + } + + # END TRUST REGION SUB-PROBLEM + + # compute rho, update B, obtain delta + gs = sum (S * Grad); + qk = - 0.5 * (gs - sum (S * R)); + B_new = B + S; + if (intercept_status == 2) { + ssX_B_new = diag (scale_X) %*% B_new; + ssX_B_new [D, ] = ssX_B_new [D, ] + t(shift_X) %*% B_new; + } else { + ssX_B_new = B_new; + } + + LT = append ((X %*% ssX_B_new), matrix (0, rows = N, cols = 1)); + LT = LT - rowMaxs (LT) %*% matrix (1, rows = 1, cols = K+1); + exp_LT = exp (LT); + P_new = exp_LT / (rowSums (exp_LT) %*% matrix (1, rows = 1, cols = K+1)); + obj_new = - sum (Y * LT) + sum (log (rowSums (exp_LT))) + 0.5 * sum (lambda * (B_new ^ 2)); + + # Consider updating LT in the inner loop + # Consider the big "obj" and "obj_new" rounding-off their small difference below: + + actred = (obj - obj_new); + + rho = actred / qk; + is_rho_accepted = (rho > eta0); + snorm = sqrt (sum (S ^ 2)); + + if (iter == 1) { + delta = min (delta, snorm); + } + + alpha2 = obj_new - obj - gs; + if (alpha2 <= 0) { + alpha = sigma3; + } + else { + alpha = max (sigma1, -0.5 * gs / alpha2); + } + + if (rho < eta0) { + delta = min (max (alpha, sigma1) * snorm, sigma2 * delta); + } + else { + if (rho < eta1) { + delta = max (sigma1 * delta, min (alpha * snorm, sigma2 * delta)); + } + else { + if (rho < eta2) { + delta = max (sigma1 * delta, min (alpha * snorm, sigma3 * delta)); + } + else { + delta = max (delta, min (alpha * snorm, sigma3 * delta)); + } + } + } + + if (is_trust_boundary_reached == 1) + { + print ("-- Outer Iteration " + iter + ": Had " + (inneriter - 1) + " CG iterations, trust bound REACHED"); + } else { + print ("-- Outer Iteration " + iter + ": Had " + (inneriter - 1) + " CG iterations"); + } + print (" -- Obj.Reduction: Actual = " + actred + ", Predicted = " + qk + + " (A/P: " + (round (10000.0 * rho) / 10000.0) + "), Trust Delta = " + delta); + + if (is_rho_accepted) + { + B = B_new; + P = P_new; + Grad = t(X) %*% (P [, 1:K] - Y [, 1:K]); + if (intercept_status == 2) { + Grad = diag (scale_X) %*% Grad + shift_X %*% Grad [D, ]; + } + Grad = Grad + lambda * B; + norm_Grad = sqrt (sum (Grad ^ 2)); + obj = obj_new; + print (" -- New Objective = " + obj + ", Beta Change Norm = " + snorm + ", Gradient Norm = " + norm_Grad); + } + + iter = iter + 1; + converge = ((norm_Grad < (tol * norm_Grad_initial)) | (iter > maxiter) | + ((is_trust_boundary_reached == 0) & (abs (actred) < (abs (obj) + abs (obj_new)) * 0.00000000000001))); + if (converge) { print ("Termination / Convergence condition satisfied."); } else { print (" "); } +} + +if (intercept_status == 2) { + B_out = diag (scale_X) %*% B; + B_out [D, ] = B_out [D, ] + t(shift_X) %*% B; +} else { + B_out = B; +} +write (B_out, $6); +
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/Algorithm_MSVM.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/Algorithm_MSVM.R b/src/test/scripts/functions/codegen/Algorithm_MSVM.R new file mode 100644 index 0000000..52a898b --- /dev/null +++ b/src/test/scripts/functions/codegen/Algorithm_MSVM.R @@ -0,0 +1,133 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args <- commandArgs(TRUE) +library("Matrix") + +X = readMM(paste(args[1], "X.mtx", sep="")); +Y = readMM(paste(args[1], "Y.mtx", sep="")); +intercept = as.integer(args[2]); +epsilon = as.double(args[3]); +lambda = 0.001; +max_iterations = as.integer(args[4]); + + +if(nrow(X) < 2) + stop("Stopping due to invalid inputs: Not possible to learn a classifier without at least 2 rows") + +lambda = 0.001 +num_samples = nrow(X) +dimensions = nrow(X) +num_features = ncol(X) + +min_y = min(Y) +num_classes = max(Y) +mod1 = Y %% 1 +mod1_should_be_nrow = sum(abs(mod1==0)) + + +if (intercept == 1) { + ones = matrix(1, num_samples, 1); + X = append(X, ones); +} + +num_rows_in_w = num_features +if(intercept == 1){ + num_rows_in_w = num_rows_in_w + 1 +} +w = matrix(0, num_rows_in_w, num_classes) + +debug_mat = matrix(-1, max_iterations, num_classes) +for(iter_class in 1:num_classes){ + Y_local = 2 * (Y == iter_class) - 1 + w_class = matrix(0, num_features, 1) + if (intercept == 1) { + zero_matrix = matrix(0, 1, 1); + w_class = t(append(t(w_class), zero_matrix)); + } + + g_old = t(X) %*% Y_local + s = g_old + + Xw = matrix(0, nrow(X), 1) + iter = 0 + continue = 1 + while(continue == 1) { + # minimizing primal obj along direction s + step_sz = 0 + Xd = X %*% s + wd = lambda * sum(w_class * s) + dd = lambda * sum(s * s) + continue1 = 1 + while(continue1 == 1){ + tmp_Xw = Xw + step_sz*Xd + out = 1 - Y_local * (tmp_Xw) + sv = (out > 0) + out = out * sv + g = wd + step_sz*dd - sum(out * Y_local * Xd) + h = dd + sum(Xd * sv * Xd) + step_sz = step_sz - g/h + if (g*g/h < 0.0000000001){ + continue1 = 0 + } + } + + #update weights + w_class = w_class + step_sz*s + Xw = Xw + step_sz*Xd + + out = 1 - Y_local * Xw + sv = (out > 0) + out = sv * out + obj = 0.5 * sum(out * out) + lambda/2 * sum(w_class * w_class) + g_new = t(X) %*% (out * Y_local) - lambda * w_class + + tmp = sum(s * g_old) + + train_acc = sum( (Y_local*(X%*%w_class))>= 0)/num_samples*100 + print(paste("For class " , iter_class , " iteration " , iter , " training accuracy: " , train_acc)) + debug_mat[iter+1,iter_class] = obj + + if((step_sz*tmp < epsilon*obj) | (iter >= max_iterations-1)){ + continue = 0 + } + + #non-linear CG step + be = sum(g_new * g_new)/sum(g_old * g_old) + s = be * s + g_new + g_old = g_new + + if(sum(s^2) == 0){ + continue = 0 + } + + iter = iter + 1 + } + + w[,iter_class] = as.matrix(w_class) +} + +extra_model_params = matrix(0, 2, ncol(w)) +extra_model_params[1, 1] = intercept +extra_model_params[2, 1] = dimensions +w = t(cbind(t(w), t(extra_model_params))) + +writeMM(as(w,"CsparseMatrix"), paste(args[5], "w", sep="")); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/Algorithm_MSVM.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/Algorithm_MSVM.dml b/src/test/scripts/functions/codegen/Algorithm_MSVM.dml new file mode 100644 index 0000000..0ab739f --- /dev/null +++ b/src/test/scripts/functions/codegen/Algorithm_MSVM.dml @@ -0,0 +1,150 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X = read($1) +Y = read($2) +intercept = $3; +eps = $4; +maxiter = $5; + +if(nrow(X) < 2) + stop("Stopping due to invalid inputs: Not possible to learn a classifier without at least 2 rows") + +epsilon = eps +lambda = 0.001 +max_iterations = maxiter +num_samples = nrow(X) +dimensions = nrow(X) +num_features = ncol(X) + + +if(nrow(X) != nrow(Y)) + stop("Stopping due to invalid argument: Numbers of rows in X and Y must match") + +if(intercept != 0 & intercept != 1) + stop("Stopping due to invalid argument: Currently supported intercept options are 0 and 1") + +min_y = min(Y) +if(min_y < 1) + stop("Stopping due to invalid argument: Label vector (Y) must be recoded") +num_classes = max(Y) +if(num_classes == 1) + stop("Stopping due to invalid argument: Maximum label value is 1, need more than one class to learn a multi-class classifier") +mod1 = Y %% 1 +mod1_should_be_nrow = sum(abs(ppred(mod1, 0, "=="))) +if(mod1_should_be_nrow != nrow(Y)) + stop("Stopping due to invalid argument: Please ensure that Y contains (positive) integral labels") + +if(epsilon < 0) + stop("Stopping due to invalid argument: Tolerance (tol) must be non-negative") + +if(lambda < 0) + stop("Stopping due to invalid argument: Regularization constant (reg) must be non-negative") + +if(max_iterations < 1) + stop("Stopping due to invalid argument: Maximum iterations should be a positive integer") + +if (intercept == 1) { + ones = matrix(1, rows=num_samples, cols=1); + X = append(X, ones); +} + +num_rows_in_w = num_features +if(intercept == 1){ + num_rows_in_w = num_rows_in_w + 1 +} +w = matrix(0, rows=num_rows_in_w, cols=num_classes) + +debug_mat = matrix(-1, rows=max_iterations, cols=num_classes) +parfor(iter_class in 1:num_classes){ + Y_local = 2 * ppred(Y, iter_class, "==") - 1 + w_class = matrix(0, rows=num_features, cols=1) + if (intercept == 1) { + zero_matrix = matrix(0, rows=1, cols=1); + w_class = t(append(t(w_class), zero_matrix)); + } + + g_old = t(X) %*% Y_local + s = g_old + + Xw = matrix(0, rows=nrow(X), cols=1) + iter = 0 + continue = 1 + while(continue == 1) { + # minimizing primal obj along direction s + step_sz = 0 + Xd = X %*% s + wd = lambda * sum(w_class * s) + dd = lambda * sum(s * s) + continue1 = 1 + while(continue1 == 1){ + tmp_Xw = Xw + step_sz*Xd + out = 1 - Y_local * (tmp_Xw) + sv = ppred(out, 0, ">") + out = out * sv + g = wd + step_sz*dd - sum(out * Y_local * Xd) + h = dd + sum(Xd * sv * Xd) + step_sz = step_sz - g/h + if (g*g/h < 0.0000000001){ + continue1 = 0 + } + } + + #update weights + w_class = w_class + step_sz*s + Xw = Xw + step_sz*Xd + + out = 1 - Y_local * Xw + sv = ppred(out, 0, ">") + out = sv * out + obj = 0.5 * sum(out * out) + lambda/2 * sum(w_class * w_class) + g_new = t(X) %*% (out * Y_local) - lambda * w_class + + tmp = sum(s * g_old) + + train_acc = sum(ppred(Y_local*(X%*%w_class), 0, ">="))/num_samples*100 + print("For class " + iter_class + " iteration " + iter + " training accuracy: " + train_acc) + debug_mat[iter+1,iter_class] = obj + + if((step_sz*tmp < epsilon*obj) | (iter >= max_iterations-1)){ + continue = 0 + } + + #non-linear CG step + be = sum(g_new * g_new)/sum(g_old * g_old) + s = be * s + g_new + g_old = g_new + + if(sum(s^2) == 0){ + continue = 0 + } + + iter = iter + 1 + } + + w[,iter_class] = w_class +} + +extra_model_params = matrix(0, rows=2, cols=ncol(w)) +extra_model_params[1, 1] = intercept +extra_model_params[2, 1] = dimensions +w = t(append(t(w), t(extra_model_params))) +write(w, $6, format="text") http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/Algorithm_PNMF.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/Algorithm_PNMF.R b/src/test/scripts/functions/codegen/Algorithm_PNMF.R new file mode 100644 index 0000000..a2fbb57 --- /dev/null +++ b/src/test/scripts/functions/codegen/Algorithm_PNMF.R @@ -0,0 +1,43 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args <- commandArgs(TRUE) +library("Matrix") + +X = readMM(paste(args[1], "X.mtx", sep="")); +W = readMM(paste(args[1], "W.mtx", sep="")); +H = readMM(paste(args[1], "H.mtx", sep="")); + +k = as.integer(args[2]); +eps = as.double(args[3]); +max_iter = as.integer(args[4]); +iter = 1; + +while( iter < max_iter ) { + H = (H*(t(W)%*%(X/(W%*%H+eps)))) / (colSums(W)%*%matrix(1,1,ncol(H))); + W = (W*((X/(W%*%H+eps))%*%t(H))) / (matrix(1,nrow(W),1)%*%t(rowSums(H))); + obj = sum(W%*%H) - sum(X*log(W%*%H+eps)); + print(paste("obj=", obj)) + iter = iter + 1; +} + +writeMM(as(W,"CsparseMatrix"), paste(args[5], "W", sep="")); +writeMM(as(H,"CsparseMatrix"), paste(args[5], "H", sep="")); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/Algorithm_PNMF.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/Algorithm_PNMF.dml b/src/test/scripts/functions/codegen/Algorithm_PNMF.dml new file mode 100644 index 0000000..641cc09 --- /dev/null +++ b/src/test/scripts/functions/codegen/Algorithm_PNMF.dml @@ -0,0 +1,40 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X = read($1); +W = read($2); +H = read($3); + +k = $4; +eps = $5; +max_iter = $6; +iter = 1; + +while( iter < max_iter ) { + H = (H*(t(W)%*%(X/(W%*%H+eps)))) / t(colSums(W)); + W = (W*((X/(W%*%H+eps))%*%t(H))) / t(rowSums(H)); + obj = sum(W%*%H) - sum(X*log(W%*%H+eps)); + print("iter=" + iter + " obj=" + obj); + iter = iter + 1; +} + +write(W, $7); +write(H, $8); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/DAGcellwisetmpl1.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/DAGcellwisetmpl1.R b/src/test/scripts/functions/codegen/DAGcellwisetmpl1.R new file mode 100644 index 0000000..21c70b5 --- /dev/null +++ b/src/test/scripts/functions/codegen/DAGcellwisetmpl1.R @@ -0,0 +1,36 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +N = 2000; +M = as.integer(args[1]); +X = matrix( seq(1,N*M), N, M, byrow=TRUE) + +A = (X * 7 + 6) * 5 + 4; +B = A + 1; +C = A + 2; +S = B + C; + +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/DAGcellwisetmpl1.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/DAGcellwisetmpl1.dml b/src/test/scripts/functions/codegen/DAGcellwisetmpl1.dml new file mode 100644 index 0000000..0a9062e --- /dev/null +++ b/src/test/scripts/functions/codegen/DAGcellwisetmpl1.dml @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +N = 2000; +M = $1; +X = matrix( seq(1,N*M), rows=N, cols=M) + +A = (X * 7 + 6) * 5 + 4; +B = A + 1; +C = A + 2; +S = B + C; + +write(S, $2) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/DAGcellwisetmpl2.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/DAGcellwisetmpl2.R b/src/test/scripts/functions/codegen/DAGcellwisetmpl2.R new file mode 100644 index 0000000..90d4d96 --- /dev/null +++ b/src/test/scripts/functions/codegen/DAGcellwisetmpl2.R @@ -0,0 +1,36 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +N = 2000; +M = as.integer(args[1]); +X = matrix( seq(1,N*M), N, M, byrow=TRUE) + +A = (X * 7 + 6) * 5 + 4; +B = A + 1; +C = A + 2; +S = as.matrix(sum(B * C)); + +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/DAGcellwisetmpl2.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/DAGcellwisetmpl2.dml b/src/test/scripts/functions/codegen/DAGcellwisetmpl2.dml new file mode 100644 index 0000000..8bcc462 --- /dev/null +++ b/src/test/scripts/functions/codegen/DAGcellwisetmpl2.dml @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +N = 2000; +M = $1; +X = matrix( seq(1,N*M), rows=N, cols=M) + +A = (X * 7 + 6) * 5 + 4; +B = A + 1; +C = A + 2; +S = as.matrix(sum(B * C)); + +write(S, $2) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/DAGcellwisetmpl3.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/DAGcellwisetmpl3.R b/src/test/scripts/functions/codegen/DAGcellwisetmpl3.R new file mode 100644 index 0000000..d052e3e --- /dev/null +++ b/src/test/scripts/functions/codegen/DAGcellwisetmpl3.R @@ -0,0 +1,36 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +N = 2000; +M = as.integer(args[1]); +X = matrix( seq(1,N*M), N, M, byrow=TRUE) + +A = (X * 7 + 6) * 5 + 4; +B = A + 1; +C = A + 2; +S = rowSums(B * C); + +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/DAGcellwisetmpl3.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/DAGcellwisetmpl3.dml b/src/test/scripts/functions/codegen/DAGcellwisetmpl3.dml new file mode 100644 index 0000000..287abe7 --- /dev/null +++ b/src/test/scripts/functions/codegen/DAGcellwisetmpl3.dml @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +N = 2000; +M = $1; +X = matrix( seq(1,N*M), rows=N, cols=M) + +A = (X * 7 + 6) * 5 + 4; +B = A + 1; +C = A + 2; +S = rowSums(B * C); + +write(S, $2) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/SystemML-config-codegen.xml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/SystemML-config-codegen.xml b/src/test/scripts/functions/codegen/SystemML-config-codegen.xml new file mode 100644 index 0000000..5d623ae --- /dev/null +++ b/src/test/scripts/functions/codegen/SystemML-config-codegen.xml @@ -0,0 +1,61 @@ +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> + +<root> + <!-- local fs tmp working directory--> + <localtmpdir>/tmp/systemml</localtmpdir> + + <!-- hdfs tmp working directory--> + <scratch>scratch_space</scratch> + + <!-- compiler optimization level, valid values: 0 | 1 | 2 | 3 | 4, default: 2 --> + <optlevel>7</optlevel> + + <!-- default number of reduce tasks per MR job, default: 2 x number of nodes --> + <numreducers>10</numreducers> + + <!-- override jvm reuse flag for specific MR jobs, valid values: true | false --> + <jvmreuse>false</jvmreuse> + + <!-- default block dim for binary block files --> + <defaultblocksize>1000</defaultblocksize> + + <!-- run systemml control program as yarn appmaster, in case of MR1 always falls back to client, please disable for debug mode --> + <dml.yarn.appmaster>false</dml.yarn.appmaster> + + <!-- maximum jvm heap size of the dml yarn appmaster in MB, the requested memory is 1.5x this parameter --> + <dml.yarn.appmaster.mem>2048</dml.yarn.appmaster.mem> + + <!-- maximum jvm heap size of the map/reduce tasks in MB, the requested memory is 1.5x this parameter, negative values ignored --> + <dml.yarn.mapreduce.mem>2048</dml.yarn.mapreduce.mem> + + <!-- yarn application submission queue, relevant for default capacity scheduler --> + <dml.yarn.app.queue>default</dml.yarn.app.queue> + + <!-- enables multi-threaded matrix multiplications in singlenode control program --> + <cp.parallel.matrixmult>true</cp.parallel.matrixmult> + + <!-- enables multi-threaded read/write of text formats in singlenode control program --> + <cp.parallel.textio>true</cp.parallel.textio> + + <!-- enables automatic code generation --> + <codegen.enabled>true</codegen.enabled> + <codegen.plancache>true</codegen.plancache> + <codegen.literals>1</codegen.literals> +</root> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl1.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl1.R b/src/test/scripts/functions/codegen/cellwisetmpl1.R new file mode 100644 index 0000000..1c306b0 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl1.R @@ -0,0 +1,43 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +#X= matrix( 1, 100, 100) +#X = matrix( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow = TRUE) +#X= matrix( c(0,0,3,4,0,0,0,8,0), nrow=3, ncol=3, byrow = TRUE) +#Y= matrix( c(2,2,2,3,3,3,1,1,1), nrow=3, ncol=3, byrow = TRUE) +#X= matrix(1, 1001, 1001) + +X= matrix( seq(1,4000000), 2000,2000, byrow=TRUE) +#X= matrix(1, 2000,2000, byrow=TRUE) + +Y= matrix( 2, 2000, 2000) +#S= X*(1-X) +lamda = 4000 + +S=round(abs(X+lamda))+5 +#S=sum(X+Y+5) +#S=round(X+(X+9.5)) +#print(S) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl1.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl1.dml b/src/test/scripts/functions/codegen/cellwisetmpl1.dml new file mode 100644 index 0000000..f646c15 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl1.dml @@ -0,0 +1,27 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( seq(1,4000000), rows=2000, cols=2000) +Y= matrix( 2, rows=2000, cols=1) + +lamda = sum(Y) +S=round(abs(X+lamda))+5 +write(S,$1) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl2.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl2.R b/src/test/scripts/functions/codegen/cellwisetmpl2.R new file mode 100644 index 0000000..f48d9e6 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl2.R @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +#X= matrix( 1,100, 100) +#X = matrix( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow = TRUE) +#X= matrix( "0 0 3 4 0 0 0 8 0", 3, 3) +X= matrix( 1, 10, 10) +S= 1/(1+exp(-X)) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl2.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl2.dml b/src/test/scripts/functions/codegen/cellwisetmpl2.dml new file mode 100644 index 0000000..c84a987 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl2.dml @@ -0,0 +1,28 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( 1, rows=10, cols=10) +S= 1/(1+exp(-X)) +write(S,$1) + + + + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl3.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl3.R b/src/test/scripts/functions/codegen/cellwisetmpl3.R new file mode 100644 index 0000000..43253aa --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl3.R @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +#X= matrix( seq(1,25), 5, 5, byrow = TRUE) +X = matrix( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow = TRUE) + +#S= X*as.matrix(X>0) +#S=7 + (1 / exp(X) ) +S = 10 + floor(round(abs(7 + (1 / exp(X) )))) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl3.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl3.dml b/src/test/scripts/functions/codegen/cellwisetmpl3.dml new file mode 100644 index 0000000..4aa30eb --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl3.dml @@ -0,0 +1,24 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9", rows=3, cols=3) +S=10 + floor(round(abs(7 + (1 / exp(X) )))) +write(S,$1) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl4.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl4.R b/src/test/scripts/functions/codegen/cellwisetmpl4.R new file mode 100644 index 0000000..803904c --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl4.R @@ -0,0 +1,32 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +#X= matrix( seq(1,25), 5, 5, byrow = TRUE) +X = matrix( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow = TRUE) +w=matrix( c(3,3,3,3,3,3,3,3,3), nrow=3, ncol=3, byrow = TRUE) +z=matrix( c(5,5,5,5,5,5,5,5,5), nrow=3, ncol=3, byrow = TRUE) +#S= X*as.matrix(X>0) +#S=7 + (1 / exp(X) ) +S = 10 + floor(round(abs((X+w)*z))) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl4.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl4.dml b/src/test/scripts/functions/codegen/cellwisetmpl4.dml new file mode 100644 index 0000000..58b0b58 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl4.dml @@ -0,0 +1,26 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9", rows=3, cols=3) +w=matrix( "3 3 3", rows=3, cols=1) +z=matrix( "5 5 5", rows=3, cols=1) +S=10 + floor(round(abs((X+w)*z))) +write(S,$1) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl5.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl5.R b/src/test/scripts/functions/codegen/cellwisetmpl5.R new file mode 100644 index 0000000..ae95111 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl5.R @@ -0,0 +1,34 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +#X= matrix( seq(1,25), 5, 5, byrow = TRUE) +X = matrix( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, byrow = TRUE) +w=matrix( c(1,1,1,2,2,2,3,3,3), nrow=3, ncol=3, byrow = TRUE) +z=matrix( c(3,3,3,3,3,3,3,3,3), nrow=3, ncol=3, byrow = TRUE) +#S= X*as.matrix(X>0) +#S=7 + (1 / exp(X) ) +G = abs(exp(X)) +Y=10 + floor(round(abs((X/w)+z))) +S = G + Y +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl5.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl5.dml b/src/test/scripts/functions/codegen/cellwisetmpl5.dml new file mode 100644 index 0000000..c9f30ef --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl5.dml @@ -0,0 +1,29 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9", rows=3, cols=3) +w=matrix( "1 2 3", rows=3, cols=1) +z=matrix( "3 3 3", rows=3, cols=1) + +G = abs(exp(X)) +Y=10 + floor(round(abs((X/w)+z))) +S = G + Y +write(S,$1) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl6.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl6.R b/src/test/scripts/functions/codegen/cellwisetmpl6.R new file mode 100644 index 0000000..669e76f --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl6.R @@ -0,0 +1,33 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +#X= matrix( seq(1,25), 5, 5, byrow = TRUE) +X = matrix( c(1,2,3), nrow=3, ncol=1, byrow = TRUE) +y=matrix( c(1,1,1), nrow=3, ncol=1, byrow = TRUE) +z=matrix( c(3,3,3), nrow=3, ncol=1, byrow = TRUE) +#S= X*as.matrix(X>0) +#S=7 + (1 / exp(X) ) +S=sum(X*y*z) +print(S) +write(S,paste(args[2],"S",sep="")) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/cellwisetmpl6.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/cellwisetmpl6.dml b/src/test/scripts/functions/codegen/cellwisetmpl6.dml new file mode 100644 index 0000000..7ff5124 --- /dev/null +++ b/src/test/scripts/functions/codegen/cellwisetmpl6.dml @@ -0,0 +1,54 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3", rows=3, cols=1) +y=matrix( "1 1 1", rows=3, cols=1) +z=matrix( "3 3 3", rows=3, cols=1) + + +S = sum(X*y*z) +print(S) +write(S,$1) +#S=10 + floor(round(abs((X+w)+z))) +#G = abs(exp(X)) + +#print(sum(G)) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/codegenIntegration.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/codegenIntegration.R b/src/test/scripts/functions/codegen/codegenIntegration.R new file mode 100644 index 0000000..7456c87 --- /dev/null +++ b/src/test/scripts/functions/codegen/codegenIntegration.R @@ -0,0 +1,45 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +X = matrix( c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), nrow=5, ncol=3, byrow = TRUE) +v=matrix(1,3,1) + +###############Test0 +#lamda = sum(X) +#S=t(X)%*%X%*%(lamda*v) +#writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + +###############Test1 +#lamda=sum(X) +#S=t(X)%*%(lamda*(X%*%v)) +#writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + +###############Test2 +#w=matrix( c(1,2,3,4,5), nrow=5, ncol=1, byrow = TRUE) +#S=t(X)%*%(w*(X%*%v)) +#writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + +###############Test3 +S=colSums(X/rowSums(X)) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/codegenIntegration.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/codegenIntegration.dml b/src/test/scripts/functions/codegen/codegenIntegration.dml new file mode 100644 index 0000000..e312fe0 --- /dev/null +++ b/src/test/scripts/functions/codegen/codegenIntegration.dml @@ -0,0 +1,67 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +v=matrix(1,rows=3,cols=1) +###############Test 0 + +#lamda = sum(X) +#S=t(X)%*%(X%*%(lamda*v)) +#write(S,$1) + +###############Test 1 +#Y= matrix( "1 1 1 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +#lamda=sum(Y) +#S=t(X)%*%(lamda*(X%*%v)) +#write(S,$1) + +###############Test 2 (need to update the current template) +#w=matrix( "1 2 3 4 5", rows=5, cols=1) +#z=matrix( "3 3 3 3 3", rows=5, cols=1) +#S=t(X)%*%(w*(X%*%v)) +#write(S,$1) + +###############Test 3 +X= matrix( "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +S=colSums(X/rowSums(X)) +write(S,$1) + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern1.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern1.R b/src/test/scripts/functions/codegen/rowAggPattern1.R new file mode 100644 index 0000000..3657e4a --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern1.R @@ -0,0 +1,29 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +X = matrix( c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), nrow=5, ncol=3, byrow = TRUE) +v=matrix(1,3,1) +lamda = sum(X) +S=t(X)%*%X%*%(lamda*v) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern1.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern1.dml b/src/test/scripts/functions/codegen/rowAggPattern1.dml new file mode 100644 index 0000000..1d43211 --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern1.dml @@ -0,0 +1,26 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +v=matrix(1,rows=3,cols=1) +lamda = sum(X) +S=t(X)%*%(X%*%(lamda*v)) +write(S,$1) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern2.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern2.R b/src/test/scripts/functions/codegen/rowAggPattern2.R new file mode 100644 index 0000000..1689593 --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern2.R @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +X = matrix( c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), nrow=5, ncol=3, byrow = TRUE) +v=matrix(1,3,1) +Y= matrix( c(1,1,1,4,5,6,7,8,9,10,11,12,13,14,15), nrow=5, ncol=3, byrow = TRUE) +lamda=sum(Y) +S=t(X)%*%(lamda*(X%*%v)) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern2.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern2.dml b/src/test/scripts/functions/codegen/rowAggPattern2.dml new file mode 100644 index 0000000..4007ae9 --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern2.dml @@ -0,0 +1,30 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +v=matrix(1,rows=3,cols=1) +Y= matrix( "1 1 1 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +lamda=sum(Y) +#lamda=2 +S=t(X)%*%(lamda*(X%*%v)) +write(S,$1) + + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern3.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern3.R b/src/test/scripts/functions/codegen/rowAggPattern3.R new file mode 100644 index 0000000..760620a --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern3.R @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +X = matrix( c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), nrow=5, ncol=3, byrow = TRUE) +v=matrix(1,3,1) +w=matrix( c(1,2,3,4,5), nrow=5, ncol=1, byrow = TRUE) +z=matrix( c(3,3,3,3,3), nrow=5, ncol=1, byrow = TRUE) + +S=t(X)%*%(z+(2-(w*(X%*%v)))) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern3.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern3.dml b/src/test/scripts/functions/codegen/rowAggPattern3.dml new file mode 100644 index 0000000..7fbfb87 --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern3.dml @@ -0,0 +1,30 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +v=matrix(1,rows=3,cols=1) +w=matrix( "1 2 3 4 5", rows=5, cols=1) +z=matrix( "3 3 3 3 3", rows=5, cols=1) + +S=t(X)%*%(z+(2-(w*(X%*%v)))) +write(S,$1) + + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern4.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern4.R b/src/test/scripts/functions/codegen/rowAggPattern4.R new file mode 100644 index 0000000..65774b4 --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern4.R @@ -0,0 +1,27 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") +X = matrix( c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), nrow=5, ncol=3, byrow = TRUE) +S=t(colSums(X/rowSums(X))) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/rowAggPattern4.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/rowAggPattern4.dml b/src/test/scripts/functions/codegen/rowAggPattern4.dml new file mode 100644 index 0000000..4c65efd --- /dev/null +++ b/src/test/scripts/functions/codegen/rowAggPattern4.dml @@ -0,0 +1,25 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", rows=5, cols=3) +S=colSums(X/rowSums(X)) +write(S,$1) + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wcemm.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wcemm.R b/src/test/scripts/functions/codegen/wcemm.R new file mode 100644 index 0000000..f228db3 --- /dev/null +++ b/src/test/scripts/functions/codegen/wcemm.R @@ -0,0 +1,35 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +X = as.matrix(readMM(paste(args[1], "A.mtx", sep=""))) + +U= matrix( 1, 2000, 10) +V= matrix( 2, 2000, 10) + +eps = 0.1 +S= sum(X*log(U%*%t(V)+eps)) +print(S) +write(S, paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wcemm.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wcemm.dml b/src/test/scripts/functions/codegen/wcemm.dml new file mode 100644 index 0000000..32ff880 --- /dev/null +++ b/src/test/scripts/functions/codegen/wcemm.dml @@ -0,0 +1,30 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= read($2) +U= matrix( 1, rows=2000, cols=10) +V= matrix( 2, rows=2000, cols=10) +if(1==1){} + +eps = 0.1 +S= sum(X*log(U%*%t(V)+eps)) +write(S,$1) +print(S) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmm.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmm.R b/src/test/scripts/functions/codegen/wdivmm.R new file mode 100644 index 0000000..37e2d44 --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmm.R @@ -0,0 +1,32 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +X= matrix( 3, 20000,2000) +U= matrix( 4, 20000,10) +V= matrix( 5, 2000,10) +eps = 0.1 +S= t(t(U) %*% (X/(U%*%t(V)+eps))); +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmm.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmm.dml b/src/test/scripts/functions/codegen/wdivmm.dml new file mode 100644 index 0000000..dc030f4 --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmm.dml @@ -0,0 +1,29 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( 3, rows=20000, cols=2000) +U= matrix( 4, rows=20000, cols=10) +V= matrix( 5, rows=2000, cols=10) +if(1==1){} +eps = 0.1 +S= t(t(U) %*% (X/(U%*%t(V)+eps))) + +write(S,$1) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmmRight.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmmRight.R b/src/test/scripts/functions/codegen/wdivmmRight.R new file mode 100644 index 0000000..cc3159a --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmmRight.R @@ -0,0 +1,32 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +X= matrix( 3, 2000,2000) +U= matrix( 4, 2000,10) +V= matrix( 5, 2000,10) +eps = 0.1 +S= (X/(U%*%t(V)))%*%V +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmmRight.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmmRight.dml b/src/test/scripts/functions/codegen/wdivmmRight.dml new file mode 100644 index 0000000..488d744 --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmmRight.dml @@ -0,0 +1,32 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( 3, rows=2000, cols=2000) +U= matrix( 4, rows=2000, cols=10) +V= matrix( 5, rows=2000, cols=10) + +if(1==1){} + +eps = 0.1 +S= (X/(U%*%t(V)))%*%V +print(sum(S)) +write(S,$1) + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmmRightNotranspose.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmmRightNotranspose.R b/src/test/scripts/functions/codegen/wdivmmRightNotranspose.R new file mode 100644 index 0000000..e541154 --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmmRightNotranspose.R @@ -0,0 +1,32 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +X= matrix( c(1,0,1,2,2,0,0,3,3,0,0,4), nrow=4, ncol=3, byrow = TRUE) +U= matrix( c(1,2,3,4,5,6,7,8), nrow=4, ncol=2, byrow = TRUE) +V= matrix( c(9,12,10,13,11,14), nrow=2, ncol=3, byrow = TRUE) +eps = 0.1 +S= (X/((U%*%V)+eps))%*%t(V) +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmmRightNotranspose.dml ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmmRightNotranspose.dml b/src/test/scripts/functions/codegen/wdivmmRightNotranspose.dml new file mode 100644 index 0000000..1938832 --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmmRightNotranspose.dml @@ -0,0 +1,31 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +X= matrix( "1 0 1 2 2 0 0 3 3 0 0 4", rows=4, cols=3) +U= matrix( "1 2 3 4 5 6 7 8", rows=4, cols=2) +V= matrix( "9 12 10 13 11 14", rows=2, cols=3) + +if(1==1){} + +eps = 0.1 +S= (X/((U%*%V)+eps))%*%t(V) +write(S,$1) + http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/bbefe96b/src/test/scripts/functions/codegen/wdivmmTransposeOut.R ---------------------------------------------------------------------- diff --git a/src/test/scripts/functions/codegen/wdivmmTransposeOut.R b/src/test/scripts/functions/codegen/wdivmmTransposeOut.R new file mode 100644 index 0000000..ba1da27 --- /dev/null +++ b/src/test/scripts/functions/codegen/wdivmmTransposeOut.R @@ -0,0 +1,32 @@ +#------------------------------------------------------------- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#------------------------------------------------------------- + +args<-commandArgs(TRUE) +options(digits=22) +library("Matrix") + +X= matrix( c(1,0,1,2,2,0,0,3,3,0,0,4), nrow=4, ncol=3, byrow = TRUE) +U= matrix( c(1,2,3,4,5,6,7,8), nrow=4, ncol=2, byrow = TRUE) +V= matrix( c(9,12,10,13,11,14), nrow=2, ncol=3, byrow = TRUE) +eps = 0.1 +S= (t(U) %*% (X/((U%*%V)+eps))); +writeMM(as(S, "CsparseMatrix"), paste(args[2], "S", sep="")); + \ No newline at end of file
