示例#1
0
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")
示例#2
0
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)
示例#3
0
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))
示例#4
0
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):