Commit 31d82b8c authored by German Leon's avatar German Leon
Browse files

Mas refinado, parece que version definitiva

parent 663c6b9c
......@@ -67,7 +67,7 @@ def profiler_caller(gdb_exec, kernels, benchmark_binary, benchmark_args,device,s
for i in range(0, cp.MAX_TIMES_TO_PROFILE):
start = time.time()
os.system(profiler_cmd)
#os.system(profiler_cmd)
end = time.time()
ret_profiler = cf.load_config_file("tmpxxx_return_profiler.conf")
acc_time_profiler+=float(ret_profiler.get('DEFAULT', 'Tiempo'))
......
......@@ -34,6 +34,42 @@ class BitFlip:
exc_type, exc_obj, exc_tb = sys.exc_info()
return "Exception type {} at line {}".format(exc_type, exc_tb.tb_lineno)
@staticmethod
def numreg (kernel):
try:
disassemble_array = cf.execute_command(gdb=gdb, to_execute="disassemble {}".format(kernel))
print ("kenel={}".format(kernel))
except:
print("SIN NOmbre")
disassemble_array = cf.execute_command(gdb=gdb, to_execute="disassemble")
listareg=set()
listaregdst=set()
listaregcond=set()
for i in range(0, len(disassemble_array) - 1):
line = disassemble_array[i]
m=re.match(r".*:\t(\S+) .*",line)
todacadena="ASSM_LINE:{}".format(line)
#print(todacadena)
lista=re.findall(r"R(\d+)", line)
if (len(lista) > 0):
listareg.update(lista)
#print (listareg)
#listaregdst.add (lista[0])
#print (listaregdst)
lista=re.findall(r" P(\d+)", line)
if (len(lista) > 0):
#print (listaregcond)
listaregcond.update(lista)
# if m and m.group(1) != '0':
# Print ("Encontrado"
print ("Registros Visibles ({})".format(len(listareg)))
print (listareg)
print ("Registros destino ({})".format(len(listaregdst)))
print (listaregdst)
print ("Registros condicionales ({})".format(len(listaregcond)))
print (listaregcond)
return (listareg)
"""
TODO: Describe the method
"""
......
......@@ -22,7 +22,7 @@ INJ_ERR_PATH = LOGS_PATH + '/tmp/carol_fi_inj_bench_err_{}.txt'
# Internal python scripts
FLIP_SCRIPT = 'flip_value.py'
PROFILER_SCRIPT = 'profiler_new.py'
PROFILER_SCRIPT = 'profiler.py'
# Temporary difference logs
DIFF_LOG = LOGS_PATH + '/tmp/diff_{}.log'
......
......@@ -647,7 +647,7 @@ def main():
global kill_strings, current_path, gpus_threads, lock, syncro, wait_finish
signal.signal(signal.SIGUSR1,receiveSignal);
signal.signal(signal.SIGUSR2,receiveEnd);
signal.signal(signal.SIGRTMIN,receiveEnd);
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--conf', dest="config_file", help='Configuration file', required=True)
parser.add_argument('-i', '--iter', dest="iterations",
......
import os
import os,signal
import gdb
import time
from classes.BitFlip import BitFlip
......@@ -12,9 +12,10 @@ Handler attached to exit event
def exit_handler(event):
global global_logging
os.system ("kill -s SIGRTMIN " + str(pid))
global_logging.info(str("event type: exit"))
print ("llego el final")
os.system ("kill -s USR2 " + str(pid))
try:
global_logging.info("exit code: {}".format(str(event.exit_code)))
except Exception as err:
......
import gdb
import time
import re
import sys
import common_functions as cf
from classes.BitFlip import BitFlip
def exit_handler(event):
global nosalir
nosalir=False
print(str("event type: exit"))
try:
print("exit code: {}".format(str(event.exit_code)))
except Exception as err:
err_str = "ERROR: {}".format(str(err))
print(err_str)
"""
Handler that will put a breakpoint on the kernel after
signal
"""
def set_event(event):
global trun,ocurrencias,t,primera
print ("Es mi primera vez"+ str(primera)+" "+str(ocurrencias))
if (isinstance(event, gdb.BreakpointEvent)):
if (primera):
t=time.time()
print ("Tomo tiempo " + str (t))
ocurrencias=ocurrencias+1
else:
print ("Para tiempo " + str (time.time()))
trun=(time.time()-t)
primera=not primera
# else:
# trun=(time.clock()-t)
"""
Main function
"""
def main():
global ocurrencias,t,nosalir,trun,primera
primera=True ;
ocurrencias=0;
# Initialize GDB to run the app
gdb.execute("set confirm off")
gdb.execute("set pagination off")
gdb.execute("set target-async off")
gdb.execute("set non-stop off")
# Initialize GDB to run the app
gdb.execute("set confirm off")
gdb.execute("set pagination off")
gdb.execute("set target-async off")
gdb.execute("set non-stop off")
# Connecting to a exit handler event
gdb.events.exited.connect(exit_handler)
# gdb_init_strings = str(os.environ["CAROL_FI_INFO"])
gdb_init_strings = arg0
# Connecting to a stop signal event
gdb.events.stop.connect(set_event)
for init_str in gdb_init_strings.split(";"):
# gdb_init_strings = str(os.environ["CAROL_FI_INFO"])
gdb_init_strings = arg0
cadena=gdb_init_strings.split(";",3)
print >>sys.stderr, (cadena[0]) #,"-",cadena[0],"-",cadena[1],"-", cadena[2],"#". cadena[3])
section =cadena[0]=="True"
onlycount=cadena[1]=="True"
#print ("B "+section+"ke "+kernel_end+" ....")
#print (cadena[2].split(";"))
for init_str in cadena[3].split(";"):
gdb.execute(init_str)
maxi=0.
gdb.execute("r")
if (onlycount):
ks=cadena[2].split(",")
print (ks)
listreg=set ()
for x in ks:
listreg.update(BitFlip.numreg(x) )
print(listreg)
maxi=len(listreg)
print("Maximo..."+str (maxi)+" o "+str(max([int(x) for x in listreg] ) ))
else:
if (section):
gdb.execute("c")
else:
gdb.execute("finish")
f=open("tmpxxx_return_profiler.conf","w")
f.write("[DEFAULT] \nOcurrencias = "+str(ocurrencias)+"\nTiempo = "+str(trun)+"\n")
f.close()
sys.exit(maxi)
gdb.execute("r")
main()
......@@ -13,6 +13,8 @@ CONFFILE=codes/lavaMD/lavaMD.conf
echo "Step 1 - Profiling the application for fault injection"
./app_profiler.py -c ${CONFFILE} $*
echo "Comienzo.." >> tiempos
date >> tiempos
echo "Step 2 - Running ${FAULTS} on ${CONFFILE}"
./fault_injector.py -i ${FAULTS} -c ${CONFFILE} -n 1 $*
......@@ -24,5 +26,6 @@ echo "==============================="
done
echo "Fault injection finished"
date >> tiempos
echo "Fin..." >> tiempos
exit 0
......@@ -13,12 +13,21 @@ FAULTS=1000
CONFFILE=$DIR_RODINIA/hotspot/hotspot.conf
echo "Step 1 - Profiling the application for fault injection"
./app_profiler.py -c ${CONFFILE} $*
date >> comienzo
echo "Comienzo.." >> tiempos
date >> tiempos
echo "Step 2 - Running ${FAULTS} on ${CONFFILE}"
./fault_injector.py -i ${FAULTS} -c ${CONFFILE} -n 1 $*
while test -f "tmpxxx_num_rounds.conf"
do
cat tmpxxx_num_rounds.conf >> tandas
./fault_injector.py -i ${FAULTS} -c ${CONFFILE} -n 1 $*
echo "==============================="
done
date >> final
echo "Fault injection finished"
date >> tiempos
echo "Fault injection finished"
exit 0
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment