Commit 68e252bb authored by German Leon's avatar German Leon
Browse files

Version refinada

parent 707781af
...@@ -107,13 +107,18 @@ def main(): ...@@ -107,13 +107,18 @@ def main():
parser.add_argument('-d', '--device', dest="device", help="The GPU to perform FI." parser.add_argument('-d', '--device', dest="device", help="The GPU to perform FI."
" Default is 0.", required=False, default=0, type=int) " Default is 0.", required=False, default=0, type=int)
args = parser.parse_args() args = parser.parse_args()
if (args.device>0):
cp.LOGS_PATH=cp.LOGS_PATH+"-"+str(args.device)
cp.rewrite_path()
os.system("rm -f {}".format(cp.KERNEL_INFO_DIR))
# Read the configuration file with data for all the apps that will be executed # Read the configuration file with data for all the apps that will be executed
conf = cf.load_config_file(args.config_file) conf = cf.load_config_file(args.config_file)
benchmark_binary = conf.get('DEFAULT', 'benchmarkBinary')
if (args.device>0):
cp.LOGS_PATH="{}-{}-{}".format(cp.LOGS_PATH,args.device,benchmark_binary.split('/')[-1])
cp.rewrite_path()
os.system("rm -f {}".format(cp.KERNEL_INFO_DIR))
# First set env vars # First set env vars
cf.set_python_env() cf.set_python_env()
......
...@@ -108,7 +108,6 @@ class BitFlip: ...@@ -108,7 +108,6 @@ class BitFlip:
return valores return valores
def nextinstr(self): def nextinstr(self):
#Obtengo el valor de los registro referenciados por la primera instruccipn #Obtengo el valor de los registro referenciados por la primera instruccipn
#self.__logging.info("===============================")
gdb.execute("nexti") gdb.execute("nexti")
linea= self.asmline() linea= self.asmline()
...@@ -121,7 +120,6 @@ class BitFlip: ...@@ -121,7 +120,6 @@ class BitFlip:
#Almaceno en un dictionario los valores de los registros #Almaceno en un dictionario los valores de los registros
regs={} regs={}
for x in valores: for x in valores:
#print(x)
m = re.match(r".*R(\d+).*0x([0-9a-fA-F]+).*", x) m = re.match(r".*R(\d+).*0x([0-9a-fA-F]+).*", x)
if m: if m:
regs[m.group(1)]=m.group(2) regs[m.group(1)]=m.group(2)
......
...@@ -29,6 +29,8 @@ class RunGDB(Thread): ...@@ -29,6 +29,8 @@ class RunGDB(Thread):
self.__gpu_to_execute = gpu_to_execute self.__gpu_to_execute = gpu_to_execute
os.environ['OMP_NUM_THREADS'] = '1' os.environ['OMP_NUM_THREADS'] = '1'
def run(self): def run(self):
if cp.DEBUG: if cp.DEBUG:
printf("GDB Thread run, id: {}".format(self.__unique_id)) printf("GDB Thread run, id: {}".format(self.__unique_id))
......
...@@ -4,7 +4,7 @@ from threading import Thread ...@@ -4,7 +4,7 @@ from threading import Thread
from random import uniform from random import uniform
import common_parameters as cp # All common parameters will bet at common_parameters module import common_parameters as cp # All common parameters will bet at common_parameters module
import os import os,signal
import sys import sys
""" """
...@@ -35,37 +35,51 @@ class SignalApp(Thread): ...@@ -35,37 +35,51 @@ class SignalApp(Thread):
log_string = "Sending a signal using command: {} after {}s and each {}s.".format(self.__signal_cmd, self.__init_wait_time,self.__time_to_sleep) log_string = "Sending a signal using command: {} after {}s and each {}s.".format(self.__signal_cmd, self.__init_wait_time,self.__time_to_sleep)
if cp.DEBUG: if cp.DEBUG:
print(log_string) self.__log.info(log_string)
# Sleep for a random time # Sleep for a random time
# time.sleep(self.__init_wait_time) # time.sleep(self.__init_wait_time)
#a=[ uniform.randint(1,1000) for _ in range(self.__signals_to_send))] #a=[ uniform.randint(1,1000) for _ in range(self.__signals_to_send))]
#a.sort() #a.sort()
# os.system("{} > /dev/null 2>/dev/null".format(self.__signal_cmd)) #os.system(self.__signal_cmd)
#for line in os.popen(self.__signal_cmd):
# pid=int(line)
#os.kill(int(self.__signal_cmd),signal.SIGINT)
self.__log.info(log_string) self.__log.info(log_string)
try: try:
(self._syncro).wait() (self._syncro).wait()
#except threading.BrokenBarrierError: #except threading.BrokenBarrierError:
except: except:
(self._syncro).abort() (self._syncro).abort()
print("Breakpoint inicial fuera de tiempo") self.__log.info("Breakpoint inicial fuera de tiempo")
#(self._waitfinish).wait()
(self._syncro).reset() (self._syncro).reset()
hang=True hang=True
self.__log.info("Timeout syncron of breakpoint\n") self.__log.info("Timeout syncron of breakpoint\n")
pid = (os.popen(self.__signal_cmd)).read()
pid=int(pid.split('\n')[0])
#print("Comando {} y resultado {} de tipo {}".format(self.__signal_cmd,pid, type (pid)) )
# Time random # Time random
#print ("INIT:"+str(self.__init_wait_time)+"sleep"+str()) #print ("INIT:"+str(self.__init_wait_time)+"sleep"+str())
time.sleep(self.__init_wait_time) time.sleep(self.__init_wait_time)
for signals in range(0, self.__signals_to_send): for signals in range(0, self.__signals_to_send):
os.system("{} > /dev/null 2>/dev/null".format(self.__signal_cmd)) #os.system("{} > /dev/null 2>/dev/null".format(self.__signal_cmd))
try:
os.kill(pid,signal.SIGINT)
except:
self.__log.info("Process is dead")
break
self.__log.info("sending signal {}".format(signals)) self.__log.info("sending signal {}".format(signals))
#try: try:
#(self._syncro).wait() (self._syncro).wait()
#except threading.BrokenBarrierError: except:
#except: (self._syncro).abort()
#(self._syncro).abort() break
#print("Breakpoint fuera de tiempo") #print("Breakpoint fuera de tiempo")
#(self._syncro).reset() (self._syncro).reset()
time.sleep(self.__time_to_sleep) time.sleep(self.__time_to_sleep)
#(self._syncro).reset() #(self._syncro).reset()
try: try:
...@@ -73,7 +87,7 @@ class SignalApp(Thread): ...@@ -73,7 +87,7 @@ class SignalApp(Thread):
#except threading.BrokenBarrierError: #except threading.BrokenBarrierError:
except: except:
(self._waitfinish).abort() (self._waitfinish).abort()
print("Hang timeout execution") self.__log.info("Hang timeout execution")
hang=True hang=True
self.__log.info("Timeout execution programa") self.__log.info("Timeout execution programa")
(self._waitfinish).reset() (self._waitfinish).reset()
......
...@@ -28,13 +28,13 @@ maxWaitTimes = 5 ...@@ -28,13 +28,13 @@ maxWaitTimes = 5
# Must be full path # Must be full path
benchmarkBinary = /home/badia/mycarol-fi/codes/hotspot/hotspot benchmarkBinary = /home/badia/mycarol-fi/codes/hotspot/hotspot
#benchmarkBinary_noverificar = /home/badia/rodinia_3.1/cuda/lavaMD/lavaMD
# Commands to set the session inside GDB environment # Commands to set the session inside GDB environment
benchmarkArgs = 2 10000 /home/badia/mycarol-fi/data/hotspot/temp_1024 /home/badia/mycarol-fi/data/hotspot/power_1024 output.out benchmarkArgs = 1024 2 10000 /home/badia/mycarol-fi/data/hotspot/temp_1024 /home/badia/mycarol-fi/data/hotspot/power_1024 output.out
#benchmarkArgs = 16384 2 2 /home/badia/rodinia_3.1/data/hotspot/temp_16384 /home/badia/rodinia_3.1/data/hotspot/power_16384 output.out
benchmarkArgs_noverificar = 1024 2 10000 /home/badia/mycarol-fi/data/hotspot/temp_1024 /home/badia/mycarol-fi/data/hotspot/power_1024 output.out benchmarkArgs_noverificar = 1024 2 10000 /home/badia/mycarol-fi/data/hotspot/temp_1024 /home/badia/mycarol-fi/data/hotspot/power_1024 output.out
#benchmarkArgs_noverificar = 16384 2 2 /home/badia/rodinia_3.1/data/hotspot/temp_16384 /home/badia/rodinia_3.1/data/hotspot/power_16384 .
# CSV output file. It will be overwrite at each injection # CSV output file. It will be overwrite at each injection
csvFile = results/hotspot_RF.csv csvFile = results/hotspot_RF.csv
......
import signal
# Max size of register # Max size of register
SINGLE_MAX_SIZE_REGISTER = 32 SINGLE_MAX_SIZE_REGISTER = 32
...@@ -26,8 +27,11 @@ DEBUG_PROFILER = True ...@@ -26,8 +27,11 @@ DEBUG_PROFILER = True
NUM_DIVISION_TIMES = 100.0 NUM_DIVISION_TIMES = 100.0
# Common body of log filename # Common body of log filename
#SIGNALSTOP= "USR1"
SIGNAL_STOP=signal.SIGRTMIN
#SIGNALEXIT= "USR2"
SIGNAL_EXIT=signal.SIGRTMIN+1
# MAX INT 32 bits # MAX INT 32 bits
MAX_INT_32 = 4294967295 MAX_INT_32 = 4294967295
......
...@@ -29,20 +29,23 @@ if the string is always empty the column will be empty, otherwise it ...@@ -29,20 +29,23 @@ if the string is always empty the column will be empty, otherwise it
will contain the returned values for each injection will contain the returned values for each injection
""" """
def receiveSignal(signalNumber, frame): def receiveSignal(signalNumber, frame):
global logging
logging.info("Esperando sincronismo del final")
try: try:
syncro.wait() syncro.wait()
except: except:
syncro.abort() syncro.abort()
print("Breakpoint inicial fuera de tiempo") logging.info("Breakpoint inicial fuera de tiempo")
print ("Alcanzado el breakpoint, y recibida la señal",signalNumber); logging.info("Alcanzado el breakpoint, y recibida la señal {}".format(signalNumber));
def receiveEnd(signalNumber, frame): def receiveEnd(signalNumber, frame):
print ("Esperando sincronismo del final"); global logging
logging.info("Esperando sincronismo del final")
try: try:
wait_finish.wait() wait_finish.wait()
except: except:
wait_finish.abort() wait_finish.abort()
print("Hang timeout execution") logging.info("Hang timeout execution")
print ("Recibida la señal de final del programa",signalNumber); logging.info("Recibida la señal de final del programa {}".format(signalNumber));
def user_defined_function(injection_output_path): def user_defined_function(injection_output_path):
# This is a temporary example for carol-fi-codes suite # This is a temporary example for carol-fi-codes suite
...@@ -315,7 +318,7 @@ def check_injection_outcome(host_thread, logging, injection_site): ...@@ -315,7 +318,7 @@ def check_injection_outcome(host_thread, logging, injection_site):
dpc={} dpc={}
dpc['absoluto']="0x"+re.match(r".*0x([0-9a-fA-F]+) <.*",assm_line).group(1) dpc['absoluto']="0x"+re.match(r".*0x([0-9a-fA-F]+) <.*",assm_line).group(1)
dpc['relativo']=assm_line.split('<')[1].split('>')[0] dpc['relativo']=assm_line.split('<')[1].split('>')[0]
print("---PC: "+dpc['absoluto']+ "PC rel"+dpc['relativo']) #print("---PC: "+dpc['absoluto']+ "PC rel"+dpc['relativo'])
pc=dpc['absoluto']+"<"+dpc['relativo']+">" pc=dpc['absoluto']+"<"+dpc['relativo']+">"
if cp.INJECTION_SITES[injection_site] in [cp.INST_OUT, cp.INST_ADD]: if cp.INJECTION_SITES[injection_site] in [cp.INST_OUT, cp.INST_ADD]:
# if fault was injected ASSM_LINE MUST be in the logfile # if fault was injected ASSM_LINE MUST be in the logfile
...@@ -337,7 +340,7 @@ return old register value, new register value ...@@ -337,7 +340,7 @@ return old register value, new register value
def gdb_inject_fault(**kwargs): def gdb_inject_fault(**kwargs):
global kill_strings global kill_strings, logging
# These are the mandatory parameters # These are the mandatory parameters
bits_to_flip = kwargs.get('bits_to_flip') bits_to_flip = kwargs.get('bits_to_flip')
fault_model = kwargs.get('fault_model') fault_model = kwargs.get('fault_model')
...@@ -377,6 +380,9 @@ def gdb_inject_fault(**kwargs): ...@@ -377,6 +380,9 @@ def gdb_inject_fault(**kwargs):
logging = Logging(log_file=flip_log_file, unique_id=unique_id) logging = Logging(log_file=flip_log_file, unique_id=unique_id)
logging.info("Starting GDB script") logging.info("Starting GDB script")
#init_wait_time = uniform(0, end_time * cp.MAX_SIGNAL_BEFORE_ENDING)
#time_to_sleep = (max_wait_time - self.__init_wait_time) / seq_signals
# Generate configuration file for specific test # Generate configuration file for specific test
gdb_env_string = "{}|{}|{}|{}|{}|{}|file {}; set args {}|{}".format(gdb_kernel,os.getpid(),maxregs,",".join(str(i) for i in bits_to_flip), fault_model, gdb_env_string = "{}|{}|{}|{}|{}|{}|file {}; set args {}|{}".format(gdb_kernel,os.getpid(),maxregs,",".join(str(i) for i in bits_to_flip), fault_model,
flip_log_file, benchmark_binary, benchmark_args, flip_log_file, benchmark_binary, benchmark_args,
...@@ -404,10 +410,9 @@ def gdb_inject_fault(**kwargs): ...@@ -404,10 +410,9 @@ def gdb_inject_fault(**kwargs):
# Starting both threads # Starting both threads
fi_process.start() fi_process.start()
print ("Esperando breakpoint.....") #if cp.DEBUG:
#syncro.wait() # cf.printf( "Waiting breakpoint.....")
#syncro.reset()
"syncro = threading.Barrier(2, timeout=5) "
signal_app_thread.start() signal_app_thread.start()
...@@ -553,7 +558,8 @@ def fault_injection_by_signal(**kwargs): ...@@ -553,7 +558,8 @@ def fault_injection_by_signal(**kwargs):
# Global rows list # Global rows list
global lock, exit_injector,num_rounds,kill_strings global lock, exit_injector,num_rounds,kill_strings
benchmark_binary = kwargs.get('benchmark_binary') benchmark_binary = kwargs.get('benchmark_binary')
kwargs['signal_cmd'] = "killall -2 {}".format(os.path.basename(benchmark_binary)) #kwargs['signal_cmd'] = "killall -2 {}".format(os.path.basename(benchmark_binary))
kwargs['signal_cmd'] = "pgrep {}".format(os.path.basename(benchmark_binary))
fault_models = kwargs.get('fault_models') fault_models = kwargs.get('fault_models')
iterations = kwargs.get('iterations') iterations = kwargs.get('iterations')
host_thread = kwargs.get('host_thread') host_thread = kwargs.get('host_thread')
...@@ -654,8 +660,8 @@ Main function ...@@ -654,8 +660,8 @@ Main function
def main(): def main():
global kill_strings, current_path, gpus_threads, lock, syncro, wait_finish global kill_strings, current_path, gpus_threads, lock, syncro, wait_finish
signal.signal(signal.SIGUSR1,receiveSignal); signal.signal(cp.SIGNAL_STOP,receiveSignal);
signal.signal(signal.SIGUSR2,receiveEnd); signal.signal(cp.SIGNAL_EXIT,receiveEnd);
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('-c', '--conf', dest="config_file", help='Configuration file', required=True) parser.add_argument('-c', '--conf', dest="config_file", help='Configuration file', required=True)
parser.add_argument('-i', '--iter', dest="iterations", parser.add_argument('-i', '--iter', dest="iterations",
...@@ -670,9 +676,7 @@ def main(): ...@@ -670,9 +676,7 @@ def main():
args = parser.parse_args() args = parser.parse_args()
if args.iterations < 1: if args.iterations < 1:
parser.error('Iterations must be greater than zero') parser.error('Iterations must be greater than zero')
if (args.device>0):
cp.LOGS_PATH=cp.LOGS_PATH+"-"+str(args.device)
cp.rewrite_path()
# Start with a different seed every time to vary the random numbers generated # Start with a different seed every time to vary the random numbers generated
# the seed will be the current number of second since 01/01/70 # the seed will be the current number of second since 01/01/70
...@@ -680,7 +684,10 @@ def main(): ...@@ -680,7 +684,10 @@ def main():
# Read the configuration file with data for all the apps that will be executed # Read the configuration file with data for all the apps that will be executed
conf = cf.load_config_file(args.config_file) conf = cf.load_config_file(args.config_file)
benchmark_binary_default = conf.get('DEFAULT', 'benchmarkBinary')
if (args.device>0):
cp.LOGS_PATH="{}-{}-{}".format(cp.LOGS_PATH,args.device,benchmark_binary_default.split('/')[-1])
cp.rewrite_path()
# Connect signal SIGINT to stop the fault injector # Connect signal SIGINT to stop the fault injector
kill_strings = "" kill_strings = ""
signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGINT, signal_handler)
...@@ -727,7 +734,7 @@ def main(): ...@@ -727,7 +734,7 @@ def main():
raise FileNotFoundError(tmp_path + " path does not exists, run app_profile.py to create it") raise FileNotFoundError(tmp_path + " path does not exists, run app_profile.py to create it")
# Set binaries for the injection # Set binaries for the injection
benchmark_binary_default = conf.get('DEFAULT', 'benchmarkBinary')
gdb_path_default = conf.get('DEFAULT', 'gdbExecName') gdb_path_default = conf.get('DEFAULT', 'gdbExecName')
each_thread_iterations = iterations / num_gpus each_thread_iterations = iterations / num_gpus
......
...@@ -8,13 +8,12 @@ import common_parameters as cp ...@@ -8,13 +8,12 @@ import common_parameters as cp
""" """
Handler attached to exit event Handler attached to exit event
""" """
def sendsignal (signal):
os.kill(int(pid),signal)
def exit_handler(event): def exit_handler(event):
global global_logging global global_logging
os.system ("kill -s USR2 " + str(pid)) sendsignal(cp.SIGNAL_EXIT)
global_logging.info(str("event type: exit")) global_logging.info(str("event type: exit"))
print ("llego el final")
try: try:
global_logging.info("exit code: {}".format(str(event.exit_code))) global_logging.info("exit code: {}".format(str(event.exit_code)))
...@@ -35,7 +34,7 @@ def set_event(event): ...@@ -35,7 +34,7 @@ def set_event(event):
if (isinstance(event, gdb.BreakpointEvent)): if (isinstance(event, gdb.BreakpointEvent)):
global_logging.info("Before breakpoint"+ str(time.clock()-t)) global_logging.info("Before breakpoint"+ str(time.clock()-t))
global_logging.info ("Enviado senal a "+ str(pid)) global_logging.info ("Enviado senal a "+ str(pid))
os.system ("kill -s USR1 " + str(pid)) sendsignal(cp.SIGNAL_STOP)
bp.enabled=False bp.enabled=False
gdb.execute('c') gdb.execute('c')
# #os.system ("killall -2 python3") # #os.system ("killall -2 python3")
...@@ -47,7 +46,7 @@ def set_event(event): ...@@ -47,7 +46,7 @@ def set_event(event):
bit_flip.single_event() bit_flip.single_event()
global_logging.info("BIT FLIP SET ON SIGNAL {}".format(event.stop_signal)) global_logging.info("BIT FLIP SET ON SIGNAL {}".format(event.stop_signal))
#global_logging.info ("Enviado senal a "+ str(pid)) #global_logging.info ("Enviado senal a "+ str(pid))
#os.system ("kill -s USR1 " + str(pid)) sendsignal(cp.SIGNAL_STOP)
except Exception as err: except Exception as err:
global_logging.exception("EVENT DIFFERENT FROM STOP SIGNAL: {}".format(str(err))) global_logging.exception("EVENT DIFFERENT FROM STOP SIGNAL: {}".format(str(err)))
...@@ -80,6 +79,8 @@ def main(): ...@@ -80,6 +79,8 @@ def main():
[kernel,pid,max_regs,bits_to_flip, fault_model, flip_log_file, [kernel,pid,max_regs,bits_to_flip, fault_model, flip_log_file,
gdb_init_strings, injection_site] = arg0.split('|') gdb_init_strings, injection_site] = arg0.split('|')
# Logging # Logging
global_logging = Logging(log_file=flip_log_file) global_logging = Logging(log_file=flip_log_file)
global_logging.info("Starting flip_value script "+" called by " + str(pid) + " for stop kernel " + str(kernel)); global_logging.info("Starting flip_value script "+" called by " + str(pid) + " for stop kernel " + str(kernel));
...@@ -131,3 +132,9 @@ injection_site = None ...@@ -131,3 +132,9 @@ injection_site = None
bit_flip = None bit_flip = None
main() main()
...@@ -2,6 +2,7 @@ import os ...@@ -2,6 +2,7 @@ import os
import re import re
import gdb import gdb
import time import time
import signal
import common_functions as cf import common_functions as cf
def exit_handler(event): def exit_handler(event):
global nosalir global nosalir
...@@ -19,6 +20,26 @@ def exit_handler(event): ...@@ -19,6 +20,26 @@ def exit_handler(event):
Handler that will put a breakpoint on the kernel after Handler that will put a breakpoint on the kernel after
signal signal
""" """
def handler(signum, frame):
global pid,pillo,t0
print ("handler:+++++++++++========================++++++++++++")
#print ("+++++++++++========================++++++++++++")
#gdb.execute("nexti")
settimeslice()
pillo=time.time()-t0
os.kill(os.getpid(), signal.SIGINT)
#print ("+++++++++++========================++++++++++++")
def setalarm():
signal.signal(signal.SIGALRM,handler)
#print ("No disponible")
def settimeslice():
#signal.alarm(1)
signal.setitimer(signal.ITIMER_REAL,1.0,1.0)
#print ("No disponible")
def pausealarm():
signal.setitimer(signal.ITIMER_REAL,0)
#print ("No disponible")
def selectrd(): def selectrd():
linea= cf.execute_command(gdb=gdb, to_execute="x/1i $pc") linea= cf.execute_command(gdb=gdb, to_execute="x/1i $pc")
...@@ -49,7 +70,7 @@ def selectrd(): ...@@ -49,7 +70,7 @@ def selectrd():
print(x) print(x)
m = re.match(r".*R(\d+).*0x([0-9a-fA-F]+).*", x) m = re.match(r".*R(\d+).*0x([0-9a-fA-F]+).*", x)
if m: if m:
if (regs[m.group(1)]!=m.group(2)) if (regs[m.group(1)]!=m.group(2)):
regdst.add(m.group(1)) regdst.add(m.group(1))
...@@ -57,46 +78,78 @@ def selectrd(): ...@@ -57,46 +78,78 @@ def selectrd():
print (type(lista)) print (type(lista))
print(lista) print(lista)
def set_event(event): def set_event(event):
global trun,ocurrencias,t global trun,ocurrencias,t,pillo,t0,bp
#pausealarm()
if (isinstance(event, gdb.BreakpointEvent)): if (isinstance(event, gdb.BreakpointEvent)):
t=time.clock() print ("Bp")
t0=time.clock()
bp.enabled=False
ocurrencias=ocurrencias+1 ocurrencias=ocurrencias+1
#signal.setitimer(signal.ITIMER_REAL,3)
else: else:
trun=(time.clock()-t) print ("set_event")
#signal.setitimer(signal.ITIMER_REAL,0)
trun=(time.clock()-t0)
#signal.setitimer(signal.ITIMER_REAL,2)
#signal.setitimer(signal.ITIMER_REAL,0.1)
t=time.time()-t0
print ("\n Pongo: "+str(t)+" Pillo;"+str(pillo)+"\n")
#settimeslice()
#gdb.execute("c")
def main(): def main():
global ocurrencias,t,nosalir,trun global ocurrencias,t,nosalir,trun,pid,t0,pillo,bp
was_hit = False
was_hit = False
#pid=os.getpid()
ocurrencias=0 ocurrencias=0
# Initialize GDB to run the appset pagination off # Initialize GDB to run the appset pagination off
gdb.execute('catch signal SIGALRM')
gdb.execute("set confirm off") gdb.execute("set confirm off")
gdb.execute("set pagination off") gdb.execute("set pagination off")
gdb.execute("set target-async off") gdb.execute("set target-async off")
gdb.execute("set non-stop off") gdb.execute("set non-stop off")
setalarm()
settimeslice()
# Connecting to a exit handler event # Connecting to a exit handler event
gdb.events.exited.connect(exit_handler) gdb.events.exited.connect(exit_handler)
# Connecting to a stop signal event # Connecting to a stop signal event
gdb.events.stop.connect(set_event) gdb.events.stop.connect(set_event)
#gdb.events.cont.connect(set_event_cont)
#gdb.execute("file ~/rodinia_3.1/cuda/lud/cuda/lud_cuda") #gdb.execute("file ~/rodinia_3.1/cuda/lud/cuda/lud_cuda")
#gdb.execute("set arg -s 10000") #gdb.execute("set arg -s 10000")
#gdb.execute("break lud_cuda") #gdb.execute("break lud_cuda")
t0=time.time()
print (t0)
pillo=t0
gdb.execute("file codes/mmElem/matrixMul") gdb.execute("file codes/mmElem/matrixMul")
gdb.execute("set arg -wA=16384 -hA=16384 -hB=16384 -wB=16384") gdb.execute("set arg -wA=16384 -hA=16384 -hB=16384 -wB=16384")
gdb.execute("set cuda break_on_launch application") #gdb.execute("set cuda break_on_launch application")
# bp=gdb.Breakpoint('matrixMulCUDA')
#gdb.execute('handle SIGALRM stop')
#gdb.execute('handle SIGALRM ignore')
#gdb.execute('handle SIGALRM')
gdb.execute('catch signal SIGALRM')
gdb.execute('r') gdb.execute('r')
selectrd() #selectrd()
nosalir=True print ("1")
while nosalir: gdb.execute("c")
gdb.execute("finish") print ("1")
gdb.execute("c")
gdb.execute("c")
gdb.execute("c")
pausealarm()
gdb.execute("c")
gdb.execute("c") gdb.execute("c")
#nosalir=True
# while nosalir:
# gdb.execute("finish")
# gdb.execute("c")"
print (" Ocurrencias "+str(ocurrencias)+" Tiempo acumulado de ejecucciones "+ str(trun)) print (" Ocurrencias "+str(ocurrencias)+" Tiempo acumulado de ejecucciones "+ str(trun))
f=open("tmpxxx_return_profiler.conf","w") f=open("tmpxxx_return_profiler.conf","w")
f.write("Ocurrencias ="+str(ocurrencias)+"\n Tiempo "+str(trun)+"\n") f.write("Ocurrencias ="+str(ocurrencias)+"\n Tiempo "+str(trun)+"\n")
......
...@@ -6,7 +6,7 @@ set -e ...@@ -6,7 +6,7 @@ set -e
#set -x #set -x
#DIR_RODINIA=$HOME/rodinia_3.1/cuda #DIR_RODINIA=$HOME/rodinia_3.1/cuda
DIR_RODINIA=codes DIR_RODINIA=codes
FAULTS=100 FAULTS=1000
#CONFFILE=codes/matrixMul/matrixmul_16K.conf #CONFFILE=codes/matrixMul/matrixmul_16K.conf
#CONFFILE=codes/mmElem/matrixmul_16K.conf #CONFFILE=codes/mmElem/matrixmul_16K.conf
......
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