1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
#include <ulmblas/level3/pack/trupack.h>
#include <ulmblas/auxiliary/memorypool.h>
#include <ulmblas/auxiliary/printmatrix.h>

using namespace ulmBLAS;

int
main()
{
    static MemoryPool<double>  memoryPool;

    const int m = 10;
    double *A   = memoryPool.allocate(m*m);

    const int MR = ugemm_mr<double>();
    const int mp = (m+MR)/MR;
    double *A_  = memoryPool.allocate(mp*MR*m);

    int count = 0;

    for (int j=0; j<m; ++j) {
        for (int i=0; i<m; ++i) {
            A[i+j*m] = ++count;
        }
    }

    printMatrix(m, m, A1, m);

    trupack(mfalse, A1, m, A_);
    printMatrix(MR, mp*m, A_1, MR);

    trupack(mtrue, A1, m, A_);
    printMatrix(MR, mp*m, A_1, MR);
}