import sys, os import numpy as np import bitstring from pdb import * from chainer.functions.connection.linear import linear from chainer.functions import convolution_2d from userfunc_var import VAR, GenFP var = VAR() # Change fault bit in float32 import ctypes class __f2i_union(ctypes.Union): _fields_ = [('float', ctypes.c_float), ('uint', ctypes.c_uint)] def bitChange(v, bit, sa01): f2i_union = __f2i_union(v) normal = __f2i_union(v) normal1s = bin(normal.uint).count("1") if sa01 == 1: faultValue = f2i_union.uint | (0x01 << bit) fault1s = bin(faultValue).count("1") if (normal1s) != (fault1s) and (normal1s) != (fault1s - 1): print("***** sa1>>>internal error bit operation {}-{}".format( normal1s, fault1s)) elif sa01 == 0: faultValue = f2i_union.uint & ~(0x01 << bit) fault1s = bin(faultValue).count("1")
from pdb import set_trace import numpy as np from userfunc_var import VAR from random import random # for sharing Class variables var = VAR() # Set PI layer name # if var.pi is None then nothing to do about PI # # For MNIST FC Task var.pi = 'lx1_Linear' # layer = 0 var.pi = 'ly2_Linear' # layer = 1 var.pi = 'lz3_Linear' # layer = 2 # For MNIST CNN Task var.pi = 'conv1_Convolution2D' # layer = 0 var.pi = 'conv2_Convolution2D' # layer = 1 var.pi = 'l1_Linear' # layer = 2 var.pi = 'l2_Linear' # layer = 3 # var.pi = None # pi_generator() # User Test Pattern Genenator for var.pi layer # Set up sending data to chainer hook def pi_generator(data): shape = data.shape ones = np.ones(shape,dtype=np.float32) # zeros= np.zeros(shape,dtype=np.float32) # rndV = np.asarray([random() for i in range(np.prod(data.shape))],dtype=np.float32).reshape(shape)
import cupy # For GPU import chainer import numpy as np import chainer.computational_graph as c import sys, os, argparse from chainer import serializers from userhook import UserHook import chainer.functions as F from train import * from distutils.dir_util import copy_tree from pdb import * from userfunc_var import VAR var = VAR() model = NeuralNet(50, 10) serializers.load_npz('mnist.npz', model) _, test = chainer.datasets.get_mnist() txs, tts = test._datasets def infer(inp, model, txs, tts): print("*** infer ***") # inp=0 a = txs[:inp] print(":inp=:", inp) print("gt:input number =", tts[:inp]) x = txs[:inp].reshape((-1, 28, 28, 1))
from distutils.dir_util import copy_tree from shutil import rmtree import os, sys, argparse #import subprocess #from replace_sample import replace_sample # from replace_userfunc import replace_userfunc import sample2 from userfunc_var import VAR var = VAR() args = argparse.ArgumentParser() args.add_argument('-i', '--images', type=int, default=20) args.add_argument('-f', '--faults', type=int, default=784, dest='faults') args.add_argument('-F', '--Faults', type=int, nargs='+') args = args.parse_args() faultNo_list = args.Faults if args.Faults is not None else range(args.faults) data_P = args.images print("Run on Faults as", faultNo_list) from mylist_block import mylist d = mylist() #print(d) #for k in range(784): # k:fault pattern No. for k in faultNo_list: var.n = k # if(k!=0):