Commit c62b2870 authored by D'azevedo, Ed's avatar D'azevedo, Ed
Browse files

initial checkin

parent 8a5b4537
Loading
Loading
Loading
Loading

src/estimate_work.c

0 → 100644
+76 −0
Original line number Diff line number Diff line
#include "test_vbatch.h"

void estimate_work( int npatches, 
                    int left_patch_size_[],
                    int right_patch_size_[],
                    int nC_[], 
                    double *ptotal_gflops, 
                    double *pgmemA, 
                    double *pgmemB, 
                    double *pgmemBX )
#define nC(ipatch,jpatch) nC_[ ((ipatch)-1) + ((jpatch)-1)*npatches ]
#define left_patch_size(ipatch) left_patch_size_[(ipatch)-1]
#define right_patch_size(ipatch) right_patch_size_[(ipatch)-1]
{
/*
 -------------------
 estimate total work
 -------------------
 */
 assert( ptotal_gflops != NULL );
 assert( pgmemA != NULL );
 assert( pgmemB != NULL );
 assert( pgmemBX != NULL );
  
 double gmemA = 0.0;
 double gmemB = 0.0;
 double gmemBX = 0.0;

 double total_flops = 0.0;
 {
 int ipatch = 0;
 int jpatch = 0;


 for(jpatch=1; jpatch <= npatches; jpatch++) {
 for(ipatch=1; ipatch <= npatches; ipatch++) {
    int nop = nC(ipatch,jpatch);
    if (nop <= 0) continue;

    double flops_total = 0.0;
    double flops_method1 = 0.0;
    double flops_method2 = 0.0;

    /*
     --------------------------------------
     Note: evaluate (B * X ) * transpose(A)
     --------------------------------------
     */
     
    
    int nrowA = left_patch_size(ipatch);
    int ncolA = left_patch_size(jpatch);
    int nrowB = right_patch_size(ipatch);
    int ncolB = right_patch_size(jpatch);
    int ncolX  = ncolA;

    gmemA += nop * nrowA * ncolA;
    gmemB += nop * nrowB * ncolB;
    gmemBX += nop * nrowB * ncolX;

    cal_kron_flops( nrowA, nrowB, ncolA, ncolB, 
            &flops_total, &flops_method1,   &flops_method2);

    total_flops += flops_method1*nop;
    };
    };
  };
  
 double total_gflops = total_flops/(1000.0*1000.0*1000.0);
 *ptotal_gflops = total_gflops;

 *pgmemA = gmemA;
 *pgmemB = gmemB;
 *pgmemBX = gmemBX;

}

src/estimate_work.h

0 → 100644
+14 −0
Original line number Diff line number Diff line
#ifndef ESTIMATE_WORK_H
#define ESTIMATE_WORK_H 1

extern
void estimate_work( int npatches,
                    int left_patch_size_[],
                    int right_patch_size_[],
                    int nC_[],
                    double *ptotal_gflops,
                    double *pgmemA,
                    double *pgmemB,
                    double *pgmemBX
                    );
#endif