Mercurial > mxe-octave
view src/of-fl-core-1-fixes.patch @ 4186:393571034f24
* tools/makeinst-script.sh.in: set appid of desktop (GUI).lnk
author | John D |
---|---|
date | Tue, 09 Aug 2016 16:50:32 -0400 |
parents | b54e00ea56bc |
children |
line wrap: on
line source
diff -ur fl-core.orig/src/fl_compose.cc fl-core/src/fl_compose.cc --- fl-core.orig/src/fl_compose.cc 2015-10-02 10:13:53.044225859 -0400 +++ fl-core/src/fl_compose.cc 2015-10-02 10:22:05.635130470 -0400 @@ -63,14 +63,14 @@ // Structure for thread arguments. Each thread will perform the computation between the start_index and end_index row. struct threadArg { - int start_index; - int end_index; + octave_idx_type start_index; + octave_idx_type end_index; }; // Functions prototype declaration -float get_elem(float vec[], int row, int col,int numCols); -void set_elem(float vec[], int row, int col, int numCols, float elem); +float get_elem(float vec[], octave_idx_type row, octave_idx_type col,octave_idx_type numCols); +void set_elem(float vec[], octave_idx_type row, octave_idx_type col, octave_idx_type numCols, float elem); int is_valid_function(octave_function *func); void *thread_function(void *arg); int get_available_cpus(); @@ -110,13 +110,13 @@ SparseMatrix sparseC; // Matrices dimensions -long int rowsA,rowsB,colsA,colsB,rowsC,colsC; +octave_idx_type rowsA,rowsB,colsA,colsB,rowsC,colsC; // Lock option. 1 = calculation executed only for the diagonal of the matrix int lock_option; // The increment -int col_index_increment; +octave_idx_type col_index_increment; // Number of threads that will be created int num_threads; @@ -357,8 +357,9 @@ else { Matrix outMatrix(rowsC,colsC); - for(int i=0;i<rowsC;i++) - for(int j=0;j<colsC;j++) + + for(octave_idx_type i=0;i<rowsC;i++) + for(octave_idx_type j=0;j<colsC;j++) outMatrix(i,j) = get_elem(c,i,j,colsC); if(sparse_res) @@ -390,15 +391,15 @@ // Initialize the first matrix Matrix tempMatrix = args(0).matrix_value(); a = new float[rowsA*colsA]; - for (int i=0; i<rowsA; i++) - for(int j=0; j<colsA;j++) + for (octave_idx_type i=0; i<rowsA; i++) + for(octave_idx_type j=0; j<colsA;j++) a[i*colsA+j] = tempMatrix(i,j); // Initialize the second matrix tempMatrix = args(1).matrix_value(); b = new float[rowsB*colsB]; - for (int i=0; i<rowsB; i++) - for(int j=0; j<colsB;j++) + for (octave_idx_type i=0; i<rowsB; i++) + for(octave_idx_type j=0; j<colsB;j++) b[i*colsB+j] = tempMatrix(i,j); @@ -418,7 +419,7 @@ } // Define the number interval of rows for each thread - int interval = rowsA / num_threads; + octave_idx_type interval = rowsA / num_threads; int i; // Define the threads @@ -465,22 +466,22 @@ float tnorm_val; // Initialize the result sparse matrix - sparseC = SparseMatrix((int)colsB, (int)rowsA, (int)(colsB*rowsA)); + sparseC = SparseMatrix(colsB, rowsA, (colsB*rowsA)); // Initialize the number of nonzero elements in the sparse matrix c int nel = 0; sparseC.xcidx(0) = 0; // Calculate the composition for each element - for (int i = 0; i < rowsC; i++) + for (octave_idx_type i = 0; i < rowsC; i++) { - for(int j = 0; j < colsC; j++) + for(octave_idx_type j = 0; j < colsC; j++) { // Get the index of the first element of the i-th column of a transpose (i-th row of a) // and the index of the first element of the j-th column of b - int ka = a.cidx(i); - int kb = b.cidx(j); + octave_idx_type ka = a.cidx(i); + octave_idx_type kb = b.cidx(j); snorm_val = 0; // Check if the values of the matrix are really not 0 (it happens if the column of a or b hasn't any value) @@ -549,18 +550,18 @@ float tnorm_val; // Get the row start_index and end_index - int start_index = thread_args->start_index; - int end_index = thread_args->end_index; + octave_idx_type start_index = thread_args->start_index; + octave_idx_type end_index = thread_args->end_index; // Calculate the composition for the specified rows (between start_index and end_index) - for (int i=start_index; i<end_index; i++) + for (octave_idx_type i=start_index; i<end_index; i++) { - for(int j=lock_option*i; j<colsB; j=j+col_index_increment) + for(octave_idx_type j=lock_option*i; j<colsB; j=j+col_index_increment) { snorm_val = calc_tnorm(get_elem(a,i,0,colsA),get_elem(b,0,j,colsB)); - for(int k=1; k<colsA; k++) + for(octave_idx_type k=1; k<colsA; k++) { tnorm_val = calc_tnorm(get_elem(a,i,k,colsA),get_elem(b,k,j,colsB)); snorm_val = calc_snorm(snorm_val,tnorm_val); @@ -767,7 +768,7 @@ /* Get the (i,j)-th element from the vector vec. The column number of the original matrix (numCols) is required */ -float get_elem(float vec[], int row, int col,int numCols) +float get_elem(float vec[], octave_idx_type row, octave_idx_type col,octave_idx_type numCols) { return vec[row*numCols+col]; } @@ -775,7 +776,7 @@ /* Set the (i,j)-th element from the vector vec. The column number of the original matrix (numCols) is required */ -void set_elem(float vec[], int row, int col, int numCols, float elem) +void set_elem(float vec[], octave_idx_type row, octave_idx_type col, octave_idx_type numCols, float elem) { vec[row*numCols+col] = elem; return; diff -ur fl-core.orig/src/Makefile fl-core/src/Makefile --- fl-core.orig/src/Makefile 2015-10-02 10:13:53.044225859 -0400 +++ fl-core/src/Makefile 2015-10-02 10:16:20.899198805 -0400 @@ -1,15 +1,23 @@ OCT = fl_compose.oct SRC := $(OCT:.oct=.cc) BASE := $(OCT:.oct=) -ifdef COMSPEC - ADDPARAM := -lpthreadVC2 + +MKOCTFILE ?= mkoctfile +OCTAVE_CONFIG ?= octave-config + +ifneq (,$(findstring mingw,$(shell $(OCTAVE_CONFIG) -p CANONICAL_HOST_TYPE))) + ADDPARAM := -lpthread +else + ifdef COMSPEC + ADDPARAM := -lpthreadVC2 + endif endif .phony: all all: $(OCT) %.oct: %.cc - mkoctfile -s $< $(ADDPARAM) + $(MKOCTFILE) -s $< $(ADDPARAM) .phony: clean clean: