Johannes Wilke created SYSTEMML-678:
---------------------------------------

             Summary: MLContext parallelization
                 Key: SYSTEMML-678
                 URL: https://issues.apache.org/jira/browse/SYSTEMML-678
             Project: SystemML
          Issue Type: Question
          Components: Algorithms, Parser, Runtime
    Affects Versions: SystemML 0.10
            Reporter: Johannes Wilke


I try to execute script in the MLContext. It is executing, but it dont 
parallel. For smaller scripts, it works fine. But this script doesnt and it is 
not clear why. I think it is because of the 4 loop levels, but I am not sure. 
Is there a documentation what is parallizable and what isnt?
If I change the main while-loop, i wish to parallize, to a parfor loop it works.
Here is the script:

X = read($Xin)
P = read($Pin)
#errorMatrix = matrix(0.0,rows=1,cols=1)
j = 1
sum = 0

while (j <=nrow(X) & sum >= 0){ # this should be parallelized 
#parfor(j in 1: nrow(X),check=0){



        first = TRUE

        windows = matrix(0,rows=1,cols=1)

        offsetPreWindowDefinitions = 0
        sumWindowLength = 0
        mastercount = 0
        totalwindowLength = 0
        s = 0
        for(i in 1: nrow(P)){
                if((as.scalar(P[i,1])*as.scalar(P[i,2]))>totalwindowLength){
                        totalwindowLength = 
(as.scalar(P[i,1])*as.scalar(P[i,2]))
                }
                s = s+1
        }

        lastWindow = matrix(0,rows=sum(P[,1]),cols=1)
        
        for(i in 1:nrow(P)){# for every Window-Definition

                
                for(k in 1: as.integer(as.scalar(P[i,1]))){# for every pnum

                        column = 
matrix(0,rows=as.integer(as.scalar(P[1,4])),cols=1)

                        for(l in 1: nrow(column)+1){
                                offsetPreWindowDefinitions = totalwindowLength 
- (as.scalar(P[i,1])*as.scalar(P[i,2]))
                                tsindex = ((k-1) * as.scalar(P[i,2])) + l-1 + 
offsetPreWindowDefinitions
                                if(l==nrow(column)+1){
                                        lastWindow[sumWindowLength+k,1] = 
X[j,tsindex+1]
                                } else {
                                        
                                        column[l,1] = X[j,tsindex+1]
                                }

                                mastercount = mastercount +1
                                #print(mastercount)

                        }

                        if(first){
                                first = FALSE;
                                windows = column
                        } else {
                                windows = cbind(windows,column)
                        }

                }

                
                sumWindowLength = sumWindowLength + as.scalar(P[i,1])


        }
        
        
        result = matrix(14.3,rows=as.integer(as.scalar(P[1,4])),cols=1)

        for(i in 
totalwindowLength:as.integer(as.scalar(P[1,4]))+totalwindowLength-1){
                result[i-totalwindowLength+1,1] = X[j,i+1]      
                s = s+1
        }

        params = solve(windows,result)
        print(j)
        predict = matrix(0,rows=1, cols=1)
        for(i in 1:nrow(lastWindow)){
                predict[1,1] = predict[1,1] + (params[i,1] * lastWindow[i,1])
                s = s+1
        }
        
        predictscalar = as.scalar(predict[1,1])
        targetscalar = as.scalar(X[j,ncol(X)])

        sum = sum + ((targetscalar - predictscalar) * (targetscalar - 
predictscalar))
        
        
        
        j = j+1
        #write(lastWindow, 
"/media/johannes/Data/Seafile/UNI/Beleg/sysml_output/lWOut.csv", format="csv", 
header=TRUE, sep=",", sparse=TRUE);
        #write(windows, 
"/media/johannes/Data/Seafile/UNI/Beleg/sysml_output/windowsOut.csv", 
format="csv", header=TRUE, sep=",", sparse=TRUE);
        #write(result, 
"/media/johannes/Data/Seafile/UNI/Beleg/sysml_output/resultOut.csv", 
format="csv", header=TRUE, sep=",", sparse=TRUE);
}
print(sum/nrow(X))


I hope that you can help me!






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to