Commit 3a880d1c15d8014eec9d403db73911f7dce73309

Authored by David Mayerich
1 parent ec722ff9

fixed PCA and BIP conversion bugs

Showing 2 changed files with 6 additions and 2 deletions   Show diff stats
stim/envi/bip.h
... ... @@ -1289,11 +1289,15 @@ public:
1289 1289 stat = cublasSetVector((int)B, sizeof(double), s, 1, s_dev, 1); //copy the spectrum from the host to the device
1290 1290 stat = cublasDaxpy(handle, (int)B, &axpy_alpha, center_dev, 1, s_dev, 1); //subtract the center (average)
1291 1291 stat = cublasDgemv(handle,CUBLAS_OP_N,(int)M,(int)B,&axpy_alpha2,basis_dev,(int)M,s_dev,1,&axpy_beta,A_dev,1); //performs the matrix-vector multiplication
1292   - stat = cublasGetVector((int)B, sizeof(double), A_dev, 1, A, 1); //copy the projected pixel to the host (from GPU to CPU)
  1292 + stat = cublasGetVector((int)M, sizeof(double), A_dev, 1, A, 1); //copy the projected pixel to the host (from GPU to CPU)
  1293 +
  1294 + //stat = cublasGetVector((int)B, sizeof(double), s_dev, 1, A, 1); //copy the projected pixel to the host (from GPU to CPU)
1293 1295  
1294 1296 //std::copy<double*, T*>(A, A + M, temp);
1295 1297 for(i = 0; i < M; i++) temp[i] = (T)A[i]; //casting projected pixel from double to whatever T is
1296 1298 }
  1299 + else
  1300 + memset(temp, 0, sizeof(T) * M);
1297 1301  
1298 1302 target.write(reinterpret_cast<const char*>(temp), sizeof(T) * M); //write the projected vector
1299 1303 if(PROGRESS) progress = (double)(xy+1) / XY * 100; //record the current progress
... ...
stim/envi/bsq.h
... ... @@ -543,7 +543,7 @@ public:
543 543 }
544 544  
545 545 b = !b; //swap the double-buffer
546   - pt_total += binary<T>::permute(dst[b], src[b], X(), N[b], Z(), 0, 2, 1); //permute the batch to a BIL file
  546 + pt_total += binary<T>::permute(dst[b], src[b], X(), N[b], Z(), 2, 0, 1); //permute the batch to a BIL file
547 547 wt_total += writeblock(&target, dst[b], N[b] * slice_bytes); //write the permuted data to the output file
548 548 y_proc += N[b]; //increment the counter of processed pixels
549 549 if(PROGRESS) progress = (double)( y_proc + 1 ) / Y() * 100; //increment the progress counter based on the number of processed pixels
... ...