Software Archive
Read-only legacy content

How to understand offload report time?

yu__frank
Beginner
281 Views

Hi All,

When I set OFFLOAD_REPORT = 1, offload program will output the offload time of MIC.

example:

[Host-TIME] 26.24

[MIC-TIME] 24.13

So My question is :What mean is " Host-Time - MIC-Time " ,It is the memory transfer & alloc time ?

Test code is :

#define FLOPS_ARRAY_SIZE (1024*1024)
#define MAXFLOPS_ITERS 100000000
#define LOOP_COUNT 128

#define FLOPSPERCALC 2

float fa[FLOPS_ARRAY_SIZE] __attribute__((aligned(64)));
float fb[FLOPS_ARRAY_SIZE] __attribute__((aligned(64)));

int main(int argc, char *argv[])
{
    int i,j,k;
    int numthreads = 0;
    double tstart, tstop, ttime;
    double gflops = 0.0;
    float a = 1.1;

#pragma omp parallel for num_threads(12)
    for(i=0; i<FLOPS_ARRAY_SIZE; i++)
    {
        fa = (float)i*0.1 + 0.001;
        fb = (float)i*0.1 + 0.002;
    }

    printf("Starting Compute on %d threads\r\n", numthreads);

    tstart = dtime();

float* faa = fa;
float* fbb = fb;

#pragma offload target (mic) \              
inout(faa:length(FLOPS_ARRAY_SIZE)) \
in(fbb:length(FLOPS_ARRAY_SIZE))
{
#pragma omp parallel for num_threads(10)
    for(i=0; i<200; i++)
    {
        int offset = i*LOOP_COUNT;

        for(j=0; j<MAXFLOPS_ITERS; j++)
        {
            for(k=0;            k<LOOP_COUNT; k++)
            {
                 faa[k+offset] = a * faa[k+offset] + fbb[k+offset];
             }
        }
    }
}
}

When I changed the thread number of OMP , the "Host_Time - MIC_Time" was changed. 

If it is the memory transfer & alloc time , Why it was changed, because the data size was not changed.

And I had another question , whether the "Host_Time - MIC_Time"  is too long.

Thread_Number    Total    Host_Time    MIC_Time    Host_Time - MIC_Time
1    261.382    260.664547    241.37162    19.292927
10    26.316    26.243896    24.126691    2.117205
20    13.261    13.22475    12.066625    1.158125
30    10.35    10.321081    9.372723    0.948358
40    7.574    7.55332    6.812689    0.740631
50    5.91    5.893639    5.266601    0.627038
60    5.498    5.482917    4.890489    0.592428
70    4.546    4.533944    4.014249    0.519695
80    4.23    4.218489    3.718513    0.499976
90    4.235    4.223366    3.725147    0.498219
100    3.318    3.30913    2.878106    0.431024
120    2.972    2.963577    2.556071    0.407506
140    4.209    4.197017    3.680592    0.516425
160    3.742    3.731337    3.27012    0.461217
180    4.051    4.039941    3.552438    0.487503
200    3.055    3.046902    2.63788    0.409022

 

0 Kudos
3 Replies
gaston-hillar
Valued Contributor I
281 Views

Frank,

The following link provides you detailed information about the offload report and will answer all your questions. This way, you will understand what you can expect from the offload report. https://software.intel.com/en-us/node/522521

I'm sure it will help you to understand all the data that the offload report is generating for you.

0 Kudos
gaston-hillar
Valued Contributor I
281 Views

As explained in the documentation I provided in my previous answer:

Mic-Time is:

The total time measured for executing the offload on the target.

This excludes the data transfer time between the host and the target, and counts only the execution time on the target.

 

0 Kudos
yu__frank
Beginner
281 Views

Thanks gaston-hillar,

I have read it, but I think there must has some mistake at "CPU TIME" description in this article.

It said : 

[Offload] [MIC 0] [CPU Time] 0.000000 (seconds)
[Offload] [MIC 0] [MIC Time] 0.000298 (seconds)

I do not think so, I think "CPU Time" includes "MIC Time", because I already tested it. 

So do you or others can test it for confirm it.

Thanks.

 

0 Kudos
Reply