瀏覽代碼

HPCC-16655 Extract_Tri anomaly in eclblas

Fixed the unusual upper-casing and added a test case.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 年之前
父節點
當前提交
fa2e97e93e

+ 3 - 3
ecllibrary/std/BLAS.ecl

@@ -133,7 +133,7 @@ EXPORT Types.matrix_t
    * A = L  * L**T,  if UPLO = 'L',
    * A = L  * L**T,  if UPLO = 'L',
    * where U is an upper triangular matrix and L is lower triangular.
    * where U is an upper triangular matrix and L is lower triangular.
    * This is the unblocked version of the algorithm, calling Level 2 BLAS.
    * This is the unblocked version of the algorithm, calling Level 2 BLAS.
-   * @param tri indocate whether upper or lower triangle is used
+   * @param tri indicate whether upper or lower triangle is used
    * @param r number of rows/columns in the square matrix
    * @param r number of rows/columns in the square matrix
    * @param A the square matrix
    * @param A the square matrix
    * @param clear clears the unused triangle
    * @param clear clears the unused triangle
@@ -234,10 +234,10 @@ EXPORT Types.matrix_t
    * @return the triangle
    * @return the triangle
    */
    */
   EXPORT Types.matrix_t
   EXPORT Types.matrix_t
-         Extract_Tri(Types.dimension_t m, Types.dimension_t n,
+         extract_tri(Types.dimension_t m, Types.dimension_t n,
                      Types.Triangle tri, Types.Diagonal dt,
                      Types.Triangle tri, Types.Diagonal dt,
                      Types.matrix_t a)
                      Types.matrix_t a)
-       := LIB_ECLBLAS.ECLBLAS.Extract_Tri(m, n, tri, dt, a);
+       := LIB_ECLBLAS.ECLBLAS.extract_tri(m, n, tri, dt, a);
 
 
   /**
   /**
    * Generate a diagonal matrix.
    * Generate a diagonal matrix.

+ 15 - 0
ecllibrary/teststd/BLAS/Test_extract_tri.ecl

@@ -0,0 +1,15 @@
+IMPORT Std.BLAS AS BLAS;
+IMPORT BLAS.Types;
+Diagonal := Types.Diagonal;
+Triangle := Types.Triangle;
+
+SET OF REAL8 init1 := [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0];
+
+EXPORT Test_extract_tri := MODULE
+  EXPORT TestRuntime := MODULE
+    EXPORT test01 := ASSERT(BLAS.extract_tri(3, 3, Triangle.Upper, Diagonal.UnitTri, init1)   =[1.0,0.0,0.0,4.0,1.0,0.0,7.0,8.0,1.0]);
+    EXPORT test02 := ASSERT(BLAS.extract_tri(3, 3, Triangle.Upper, Diagonal.NotUnitTri, init1)=[1.0,0.0,0.0,4.0,5.0,0.0,7.0,8.0,9.0]);
+    EXPORT test03 := ASSERT(BLAS.extract_tri(3, 3, Triangle.Lower, Diagonal.UnitTri, init1)   =[1.0,2.0,3.0,0.0,1.0,6.0,0.0,0.0,1.0]);
+    EXPORT test04 := ASSERT(BLAS.extract_tri(3, 3, Triangle.Lower, Diagonal.NotUnitTri, init1)=[1.0,2.0,3.0,0.0,5.0,6.0,0.0,0.0,9.0]);
+  END;
+END;

+ 1 - 1
plugins/eclblas/CMakeLists.txt

@@ -37,7 +37,7 @@ if(USE_CBLAS)
         dsyrk.cpp
         dsyrk.cpp
         dtrsm.cpp
         dtrsm.cpp
         eclblas.cpp
         eclblas.cpp
-        Extract_Tri.cpp
+        extract_tri.cpp
         make_diag.cpp)
         make_diag.cpp)
 
 
     include_directories(
     include_directories(

+ 1 - 1
plugins/eclblas/eclblas.hpp

@@ -93,7 +93,7 @@ namespace eclblas {
                         uint32_t n, uint32_t lda, double alpha, bool isAllA,
                         uint32_t n, uint32_t lda, double alpha, bool isAllA,
                         size32_t lenA, const void * a, bool isAllB, size32_t lenB,
                         size32_t lenA, const void * a, bool isAllB, size32_t lenB,
                         const void * b);
                         const void * b);
-  ECLBLAS_CALL void Extract_Tri(bool & __isAllResult, size32_t & __lenResult,
+  ECLBLAS_CALL void extract_tri(bool & __isAllResult, size32_t & __lenResult,
                                 void * & __result, uint32_t m, uint32_t n, uint8_t tri,
                                 void * & __result, uint32_t m, uint32_t n, uint8_t tri,
                                 uint8_t dt, bool isAllA, size32_t lenA,
                                 uint8_t dt, bool isAllA, size32_t lenA,
                                 const void * a);
                                 const void * a);

+ 1 - 1
plugins/eclblas/Extract_Tri.cpp

@@ -21,7 +21,7 @@
 
 
 namespace eclblas {
 namespace eclblas {
 
 
-ECLBLAS_CALL void Extract_Tri(bool & __isAllResult, size32_t & __lenResult,
+ECLBLAS_CALL void extract_tri(bool & __isAllResult, size32_t & __lenResult,
                               void * & __result, uint32_t m, uint32_t n, uint8_t tri,
                               void * & __result, uint32_t m, uint32_t n, uint8_t tri,
                               uint8_t dt, bool isAllA, size32_t lenA, const void * a){
                               uint8_t dt, bool isAllA, size32_t lenA, const void * a){
   int cells = m * n;
   int cells = m * n;

+ 1 - 1
plugins/eclblas/lib_eclblas.ecllib

@@ -44,7 +44,7 @@ EXPORT eclblas := SERVICE : plugin('eclblasplugin'), library('eclblas'), namespa
                  BOOLEAN transposeA, blas_Diagonal diag,
                  BOOLEAN transposeA, blas_Diagonal diag,
                  blas_dimension_t M, blas_dimension_t N,  blas_dimension_t lda,
                  blas_dimension_t M, blas_dimension_t N,  blas_dimension_t lda,
                  blas_value_t alpha, const blas_matrix_t A, const blas_matrix_t B);
                  blas_value_t alpha, const blas_matrix_t A, const blas_matrix_t B);
-  SET OF REAL8 Extract_Tri(blas_dimension_t m, blas_dimension_t n, blas_Triangle tri,
+  SET OF REAL8 extract_tri(blas_dimension_t m, blas_dimension_t n, blas_Triangle tri,
                        blas_Diagonal dt, const blas_matrix_t a);
                        blas_Diagonal dt, const blas_matrix_t a);
   SET OF REAL8 make_diag(blas_dimension_t m, blas_value_t v=1.0, const blas_matrix_t X=[]);
   SET OF REAL8 make_diag(blas_dimension_t m, blas_value_t v=1.0, const blas_matrix_t X=[]);
 END;
 END;