diff --git a/mat.h b/mat.h index 57f445d..bbad9b2 100644 --- a/mat.h +++ b/mat.h @@ -904,14 +904,14 @@ inline const double NRMat::amax() const{ if(location == cpu){ #endif #ifdef MATPTR - return v[0][cblas_idamax(nn*mm, v[0], 1) - 1]; + return v[0][cblas_idamax(nn*mm, v[0], 1) ]; #else - return v[cblas_idamax(nn*mm, v, 1) - 1]; + return v[cblas_idamax(nn*mm, v, 1) ]; #endif #ifdef CUDALA }else{ double ret(0.0); - const size_t pozice = cublasIdamax((size_t)nn*mm, v, 1) - 1; + const size_t pozice = cublasIdamax((size_t)nn*mm, v, 1); TEST_CUBLAS("cublasIdamax"); gpuget(1, sizeof(double), v + pozice, &ret); return ret; @@ -950,7 +950,7 @@ inline const double NRMat::amin() const{ #endif #ifdef CUDALA }else{ - const size_t pozice = cublasIdamin((size_t)nn*mm, v, 1) - 1; + const size_t pozice = cublasIdamin((size_t)nn*mm, v, 1); TEST_CUBLAS("cublasIdamin"); gpuget(1, sizeof(double), v + pozice, &ret); } @@ -969,14 +969,14 @@ inline const std::complex NRMat >::amax() const{ if(location == cpu){ #endif #ifdef MATPTR - return v[0][cblas_izamax(nn*mm, v[0], 1) - 1]; + return v[0][cblas_izamax(nn*mm, v[0], 1) ]; #else - return v[cblas_izamax(nn*mm, v, 1) - 1]; + return v[cblas_izamax(nn*mm, v, 1) ]; #endif #ifdef CUDALA }else{ std::complex ret(0.0, 0.0); - const size_t pozice = cublasIzamax((size_t)nn*mm, (cuDoubleComplex*)v, 1) - 1; + const size_t pozice = cublasIzamax((size_t)nn*mm, (cuDoubleComplex*)v, 1); TEST_CUBLAS("cublasIzamax"); gpuget(1, sizeof(std::complex), v + pozice, &ret); return ret; @@ -1019,7 +1019,7 @@ inline const std::complex NRMat >::amin() const{ #endif #ifdef CUDALA }else{ - const size_t pozice = cublasIzamin((size_t)nn*mm, (cuDoubleComplex*)v, 1) - 1; + const size_t pozice = cublasIzamin((size_t)nn*mm, (cuDoubleComplex*)v, 1); TEST_CUBLAS("cublasIzamin"); gpuget(1, sizeof(std::complex), v + pozice, &ret); } diff --git a/noncblas.cc b/noncblas.cc index 748b3f5..fcda2be 100644 --- a/noncblas.cc +++ b/noncblas.cc @@ -582,9 +582,9 @@ CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX) { #ifdef FORINT const FINT ntmp=N; const FINT incxtmp=incX; - return (CBLAS_INDEX)FORNAME(idamax)(&ntmp,X,&incxtmp); + return (CBLAS_INDEX)FORNAME(idamax)(&ntmp,X,&incxtmp)-1; #else - return (CBLAS_INDEX)FORNAME(idamax)(&N,X,&incX); + return (CBLAS_INDEX)FORNAME(idamax)(&N,X,&incX)-1; #endif } @@ -593,9 +593,9 @@ CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX) { #ifdef FORINT const FINT ntmp=N; const FINT incxtmp=incX; - return (CBLAS_INDEX)FORNAME(izamax)(&ntmp, X, &incxtmp); + return (CBLAS_INDEX)FORNAME(izamax)(&ntmp, X, &incxtmp)-1; #else - return (CBLAS_INDEX)FORNAME(izamax)(&N, X, &incX); + return (CBLAS_INDEX)FORNAME(izamax)(&N, X, &incX)-1; #endif } @@ -604,9 +604,9 @@ CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX) { #ifdef FORINT const FINT ntmp=N; const FINT incxtmp=incX; - return (CBLAS_INDEX)FORNAME(isamax)(&ntmp,X,&incxtmp); + return (CBLAS_INDEX)FORNAME(isamax)(&ntmp,X,&incxtmp)-1; #else - return (CBLAS_INDEX)FORNAME(isamax)(&N,X,&incX); + return (CBLAS_INDEX)FORNAME(isamax)(&N,X,&incX)-1; #endif } @@ -618,9 +618,9 @@ CBLAS_INDEX cblas_idamin(const int N, const double *X, const int incX) { #ifdef FORINT const FINT ntmp=N; const FINT incxtmp=incX; - return (CBLAS_INDEX)FORNAME(idamin)(&ntmp,X,&incxtmp); + return (CBLAS_INDEX)FORNAME(idamin)(&ntmp,X,&incxtmp)-1; #else - return (CBLAS_INDEX)FORNAME(idamin)(&N,X,&incX); + return (CBLAS_INDEX)FORNAME(idamin)(&N,X,&incX)-1; #endif } @@ -630,9 +630,9 @@ CBLAS_INDEX cblas_izamin(const int N, const void *X, const int incX) { #ifdef FORINT const FINT ntmp=N; const FINT incxtmp=incX; - return (CBLAS_INDEX)FORNAME(izamin)(&ntmp, X, &incxtmp); + return (CBLAS_INDEX)FORNAME(izamin)(&ntmp, X, &incxtmp)-1; #else - return (CBLAS_INDEX)FORNAME(izamin)(&N, X, &incX); + return (CBLAS_INDEX)FORNAME(izamin)(&N, X, &incX)-1; #endif } */ diff --git a/smat.h b/smat.h index c891b33..a5d5825 100644 --- a/smat.h +++ b/smat.h @@ -799,10 +799,10 @@ inline const double NRSMat::amax() const { #ifdef CUDALA if(location == cpu){ #endif - ret = v[cblas_idamax(NN2, v, 1) - 1]; + ret = v[cblas_idamax(NN2, v, 1)]; #ifdef CUDALA }else{ - const int pozice = cublasIdamax(NN2, v, 1) - 1; + const int pozice = cublasIdamax(NN2, v, 1) ; TEST_CUBLAS("cublasIdamax");//"double NRSMat::amax()" gpuget(1, sizeof(double), v + pozice, &ret); @@ -833,7 +833,7 @@ inline const double NRSMat::amin() const { ret = v[index]; #ifdef CUDALA }else{ - const int pozice = cublasIdamin(nn, v, 1) - 1; + const int pozice = cublasIdamin(nn, v, 1); TEST_CUBLAS("cublasIdamin");//"double NRSMat::amin()" gpuget(1, sizeof(double), v + pozice, &ret); } @@ -852,10 +852,10 @@ inline const std::complex NRSMat< std::complex >::amax() const{ #ifdef CUDALA if(location == cpu){ #endif - ret = v[cblas_izamax(NN2, v, 1) - 1]; + ret = v[cblas_izamax(NN2, v, 1)]; #ifdef CUDALA }else{ - const int pozice = cublasIzamax(NN2, (cuDoubleComplex*)v, 1) - 1; + const int pozice = cublasIzamax(NN2, (cuDoubleComplex*)v, 1); TEST_CUBLAS("cublasIzamax");//"std::complex NRSMat >::amax()" gpuget(1, sizeof(std::complex), v + pozice, &ret); } @@ -888,7 +888,7 @@ inline const std::complex NRSMat >::amin() const{ ret = v[index]; #ifdef CUDALA }else{ - const int pozice = cublasIzamin(nn, (cuDoubleComplex*)v, 1) - 1; + const int pozice = cublasIzamin(nn, (cuDoubleComplex*)v, 1); TEST_CUBLAS("cublasIzamin");//"std::complex NRSMat >::amin()" gpuget(1, sizeof(std::complex), v + pozice, &ret); } diff --git a/t.cc b/t.cc index 31e4978..1a69781 100644 --- a/t.cc +++ b/t.cc @@ -3421,7 +3421,7 @@ Tensor bb(b); cout << aa*bb; } -if(1) +if(0) { int seed; int f=open("/dev/random",O_RDONLY); @@ -3440,4 +3440,17 @@ cout < m; +cin >>m; +NRVec v(m); +cout < mm(v,m.nrows(),m.ncols()); +cout <::amax() const { #ifdef CUDALA if(location == cpu){ #endif - ret = v[cblas_idamax(nn, v, 1) - 1]; + ret = v[cblas_idamax(nn, v, 1)]; #ifdef CUDALA }else{ - const int pozice = cublasIdamax(nn, v, 1) - 1; + const int pozice = cublasIdamax(nn, v, 1) ; TEST_CUBLAS("cublasIdamax"); gpuget(1, sizeof(double), v + pozice, &ret); @@ -1906,7 +1906,7 @@ inline const double NRVec::amin() const { ret = v[index]; #ifdef CUDALA }else{ - const int pozice = cublasIdamin(nn, v, 1) - 1; + const int pozice = cublasIdamin(nn, v, 1); TEST_CUBLAS("cublasIdamin"); gpuget(1, sizeof(double), v + pozice, &ret); } @@ -1925,10 +1925,10 @@ inline const std::complex NRVec >::amax() const { #ifdef CUDALA if(location == cpu){ #endif - ret = v[cblas_izamax(nn, v, 1) - 1]; + ret = v[cblas_izamax(nn, v, 1) ]; #ifdef CUDALA }else{ - const int pozice = cublasIzamax(nn, (cuDoubleComplex*)v, 1) - 1; + const int pozice = cublasIzamax(nn, (cuDoubleComplex*)v, 1); TEST_CUBLAS("cublasIzamax"); gpuget(1, sizeof(std::complex), v + pozice, &ret); } @@ -1960,7 +1960,7 @@ inline const std::complex NRVec >::amin() const { ret = v[index]; #ifdef CUDALA }else{ - const int pozice = cublasIzamin(nn, (cuDoubleComplex*)v, 1) - 1; + const int pozice = cublasIzamin(nn, (cuDoubleComplex*)v, 1); TEST_CUBLAS("cublasIzamin"); gpuget(1, sizeof(std::complex), v + pozice, &ret); }