# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# ### Check if results are binary correct

import numpy as np
import pandas as pd

# First we read in two reference files, one for the intel results, one for the gnu results

df_intel = pd.read_csv('reference_intel.csv', delimiter=' ')
df_gnu = pd.read_csv('benchmark_i5.csv', delimiter=' ')

# take the rows containing all the various matrix and vector sizes

values_intel = df_intel[['n','Nx','Ny','exblas_i']]
values_gnu = df_gnu[['n','Nx','Ny','exblas_i']].iloc[0:32]
values_intel.set_index(['n','Nx'], inplace=True)
values_gnu.set_index(['n','Nx'], inplace=True)

# Make a dictionary of files and compilertypes that we want to check

files = {'knl_mpi1':'intel', 'knl_mpi2':'intel', 'knl_mpi4':'intel',
         'skl_mpi1':'intel', 'skl_mpi2':'intel', 'skl_mpi4':'intel',
         'p100_mpi1':'gnu', 'p100_mpi2':'gnu', 'p100_mpi4':'gnu',
         'v100_mpi1':'gnu', 'v100_mpi2':'gnu', 'v100_mpi4':'gnu',
         'i5':'gnu','gtx1060':'gnu'}

# Now, go through all the files and all rows and compare the result (the exblas_i column) to the 
# corresponding reference value

for f,k in files.items():
    df=pd.read_csv('benchmark_'+f+'.csv', delimiter=' ')
    Passed = True; Err = False
    print( "Checking", f , k)
    ref = values_gnu
    if k == 'intel' : 
        ref = values_intel
    for i in df.index: 
        try:
            if df.loc[i,'exblas_i'] != ref.loc[(df.loc[i,'n'],df.loc[i,'Nx']),'exblas_i'] and not pd.isnull(df.loc[i,'exblas_i']):
                Passed = False
                print( "Wrong result at n = ",df.loc[i,'n']," N = ",df.loc[i,'Nx'],
                       " Difference is ", df.loc[i,'exblas_i']-ref.loc[(df.loc[i,'n'],df.loc[i,'Nx']),'exblas_i'])       
        except KeyError:
            Err = True
            continue
    if Passed :
        print( "PASSED")
    else:
        print( "FAILED")
        
    if Err: 
        print( "    There was a Key error")




StarcoderdataJupyterScriptsDedupFiltered