Example #1
0
 def __init__(self, args=DefaultArgTemplate):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     #
     self.function = sollya.parse(args.function)
     self.interval = sollya.parse(args.interval)
     self.epsilon = 2**(-sollya.parse(str(args.epsilon)))
Example #2
0
    def __init__(self,
                 arg_template,
                 precision=ML_Binary32,
                 abs_accuracy=S2**-24,
                 libm_compliant=True,
                 debug_flag=False,
                 fuse_fma=True,
                 fast_path_extract=True,
                 target=FixedPointBackend(),
                 output_file="ut_static_vectorization.c",
                 function_name="ut_static_vectorization"):
        # precision argument extraction
        precision = ArgDefault.select_value(
            [arg_template.precision, precision])
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="ut_static_vectorization",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  processor=target,
                                  fuse_fma=fuse_fma,
                                  fast_path_extract=fast_path_extract,
                                  debug_flag=debug_flag,
                                  arg_template=arg_template)

        self.precision = precision
Example #3
0
    def __init__(self,
                 precision=ML_Binary32,
                 abs_accuracy=S2**-24,
                 libm_compliant=True,
                 debug_flag=False,
                 fuse_fma=True,
                 fast_path_extract=True,
                 target=FixedPointBackend(),
                 output_file="ut_opencl_code.c",
                 function_name="ut_opencl_code",
                 vector_size=2,
                 language=C_Code):
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="ut_opencl_code",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  processor=target,
                                  fuse_fma=fuse_fma,
                                  fast_path_extract=fast_path_extract,
                                  debug_flag=debug_flag,
                                  vector_size=vector_size,
                                  language=language)

        self.precision = precision
Example #4
0
  def __init__(self, args=DefaultArgTemplate):
    # initializing base class
    ML_FunctionBasis.__init__(self, args)
    # function specific arguments
    self.cgpe_index = args.cgpe_index
    self.tbl_index_size = args.tbl_index_size
    self.no_subnormal = args.no_subnormal
    self.no_fma = args.no_fma
    self.no_rcp = args.no_rcp
    self.log_radix = {
        "e": EXP_1,
        "2": S2,
        "10": S10
    }[args.log_radix]
    self.force_division = args.force_division

    # TODO: beware dict indexing is reliying on python matching numerical values
    #       to keys which may have different construction methods (you try to make
    #       sure every value is constructed through sollya.parse, but this is
    #       not really safe): to be IMPROVED
    LOG_EMUL_FCT_MAP = {
        S2: sollya.log2,
        EXP_1: sollya.log,
        S10: sollya.log10
    }
    if self.log_radix in LOG_EMUL_FCT_MAP:
        Log.report(Log.Info, "radix {} is part of standard radices", self.log_radix)
        self.log_emulation_function = LOG_EMUL_FCT_MAP[self.log_radix]
    else:
        Log.report(Log.Info, "radix {} is not part of standard radices {{2, e, 10}}", self.log_radix)
        self.log_emulation_function = lambda v: sollya.log(v) / sollya.log(self.log_radix)
    # .. update output and function name
    self.function_name = "LOG{}".format(args.log_radix)
    self.output_file = "{}.c".format(self.function_name)
Example #5
0
    def __init__(self,
                 arg_template=DefaultArgTemplate,
                 precision=ML_Binary32,
                 accuracy=ML_Faithful,
                 libm_compliant=True,
                 debug_flag=False,
                 fuse_fma=True,
                 fast_path_extract=True,
                 target=GenericProcessor(),
                 output_file="my_empty.c",
                 function_name="my_empty",
                 language=C_Code,
                 vector_size=1):
        # initializing I/O precision
        precision = ArgDefault.select_value(
            [arg_template.precision, precision])
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="empty",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  processor=target,
                                  fuse_fma=fuse_fma,
                                  fast_path_extract=fast_path_extract,
                                  debug_flag=debug_flag,
                                  language=language,
                                  vector_size=vector_size,
                                  arg_template=arg_template)

        self.precision = precision
Example #6
0
  def __init__(self, 
             precision = ML_Binary32, 
             abs_accuracy = S2**-24, 
             libm_compliant = True, 
             debug_flag = False, 
             fuse_fma = True, 
             fast_path_extract = True,
             target = GenericProcessor(), 
             output_file = None, 
             function_name = None):

    io_precisions = [precision] * 2

    # initializing base class
    ML_FunctionBasis.__init__(self, 
      base_name = "acos",
      function_name = function_name,
      output_file = output_file,

      io_precisions = io_precisions,
      abs_accuracy = None,
      libm_compliant = libm_compliant,

      processor = target,
      fuse_fma = fuse_fma,
      fast_path_extract = fast_path_extract,

      debug_flag = debug_flag
    )

    self.precision = precision
Example #7
0
    def __init__(self,
                 precision=ML_Binary32,
                 accuracy=ML_Faithful,
                 libm_compliant=True,
                 debug_flag=False,
                 fuse_fma=True,
                 fast_path_extract=True,
                 processor=GenericProcessor(),
                 output_file="cosf.c",
                 function_name="cosf",
                 input_interval=Interval(0, 1),
                 result_precision=ML_Binary32,
                 table_size_log=8,
                 cos_output=True):
        # initializing I/O precision
        io_precisions = [result_precision, precision]

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="cos",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  processor=processor,
                                  fuse_fma=fuse_fma,
                                  fast_path_extract=fast_path_extract,
                                  debug_flag=debug_flag)
        self.precision = precision
        self.cos_output = cos_output
        self.accuracy = accuracy
        self.input_interval = input_interval
        self.table_size_log = table_size_log
Example #8
0
    def __init__(self,
                 precision=ML_Binary32,
                 abs_accuracy=S2**-24,
                 libm_compliant=True,
                 debug_flag=False,
                 fuse_fma=True,
                 fast_path_extract=True,
                 target=FixedPointBackend(),
                 output_file="ut_call_externalization.c",
                 function_name="ut_call_externalization"):
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="ut_call_externalization",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  processor=target,
                                  fuse_fma=fuse_fma,
                                  fast_path_extract=fast_path_extract,
                                  debug_flag=debug_flag)

        self.precision = precision
Example #9
0
    def __init__(self,
                 arg_template,
                 precision=ML_Binary32,
                 abs_accuracy=S2**-24,
                 libm_compliant=True,
                 debug_flag=False,
                 fuse_fma=True,
                 fast_path_extract=True,
                 target=MPFRProcessor(),
                 output_file="ut_auto_test.c",
                 function_name="ut_auto_test",
                 auto_test=False):
        # extracting precision argument from command line
        precision = ArgDefault.select_value(
            [arg_template.precision, precision])
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="ut_auto_test",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  processor=target,
                                  fuse_fma=fuse_fma,
                                  fast_path_extract=fast_path_extract,
                                  auto_test=auto_test,
                                  debug_flag=debug_flag,
                                  arg_template=arg_template)

        self.precision = precision
    def __init__(self, args):
        """ Initialize """
        # initializing base class
        ML_FunctionBasis.__init__(self, args=args)

        self.accuracy = args.accuracy
        self.precision = args.precision
Example #11
0
 def __init__(self, args):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     self.function_expr_str = args.function_expr_str[0]
     self.arity = count_expr_arity(self.function_expr_str)
     self.function_expr = None
     self.var_mapping = None
     self.expand_div = args.expand_div
Example #12
0
 def __init__(self, args=DefaultArgTemplate):
     #arity = len(arg_template.input_precisions)
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     # initializing specific properties
     self.headers = args.headers
     self.libraries = args.libraries
     self.bench_function_name = args.bench_function_name
     self.emulate = args.emulate
Example #13
0
    def __init__(
        self,
        arg_template,
    ):
        #precision = ArgDefault.select_value([arg_template.precision, precision])
        #io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self, arg_template=arg_template)
Example #14
0
    def __init__(self,arg_template = DefaultArgTemplate):
        # initializing I/O precision
        precision = ArgDefault.select_value([arg_template.precision, precision])
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
          arg_template=arg_template
        )

        self.precision = precision
Example #15
0
 def __init__(self, args=DefaultMultiAryArgTemplate):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     # initializing specific properties
     self.headers = args.headers
     self.libraries = args.libraries
     self.extra_src_files = args.extra_src_files
     self.bench_function_name = args.bench_function_name
     self.emulate = args.emulate
     self.arity = args.arity
     if len(self.auto_test_range) != self.arity:
         self.auto_test_range = [self.auto_test_range[0]] * self.arity
     if len(self.bench_test_range) != self.arity:
         self.bench_test_range = [self.bench_test_range[0]] * self.arity
Example #16
0
  def __init__(self, 
               arg_template = DefaultArgTemplate,
               precision = ML_Binary32, 
               accuracy = ML_CorrectlyRounded, 
               libm_compliant = True, 
               debug_flag = False, 
               fuse_fma = True, 
               num_iter = 3,
               fast_path_extract = True,
               target = GenericProcessor(), 
               output_file = "sqrtf.c", 
               function_name = "sqrtf",
               dot_product_enabled = False, 
               vector_size = 1, 
               language = C_Code):
    # initializing I/O precision
    precision = ArgDefault.select_value([arg_template.precision, precision])
    num_iter  = ArgDefault.select_value([arg_template.num_iter, num_iter])
    io_precisions = [precision] * 2

    # initializing base class
    ML_FunctionBasis.__init__(self, 
      base_name = "exp",
      function_name = function_name,
      output_file = output_file,

      io_precisions = io_precisions,
      abs_accuracy = None,
      libm_compliant = libm_compliant,

      processor = target,
      fuse_fma = fuse_fma,
      fast_path_extract = fast_path_extract,

      debug_flag = debug_flag,
      vector_size = vector_size,
      language = language,
      arg_template = arg_template
    )

    self.accuracy  = accuracy
    self.precision = precision
    self.integer_precision = {ML_Binary32: ML_Int32, ML_Binary64: ML_Int64}[self.precision]
    self.num_iter = num_iter
Example #17
0
    def __init__(
        self,
        args=DefaultArgTemplate,
    ):

        # initializing base class
        ML_FunctionBasis.__init__(self, args=args)
        # function to be approximated
        self.function = args.function
        # interval on which the approximation must be valid
        self.interval = args.interval

        self.disable_sub_testing = args.disable_sub_testing
        self.disable_sv_testing = args.disable_sv_testing

        self.alpha = args.alpha
        self.beta = args.beta
        self.gamma = args.gamma
        self.guard_bits = args.guard_bits
Example #18
0
    def __init__(
        self,
        arg_template=DefaultArgTemplate,
        output_file="bench.c",
        function_name="main",
    ):
        arity = 0

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="bench",
                                  function_name=function_name,
                                  output_file=output_file,
                                  arity=arity,
                                  arg_template=arg_template)
        # number of basic iteration
        self.test_num = arg_template.test_num
        self.unroll_factor = arg_template.unroll_factor
        # dict of operations to be benched
        self.operation_map = arg_template.operation_map
Example #19
0
    def __init__(self,
                 arg_template,
                 precision=ML_Int32,
                 libm_compliant=True,
                 debug_flag=False,
                 output_file="ut_arithmetic_right_shift.c",
                 function_name="ut_arithmetic_right_shift"):
        # precision argument extraction
        precision = ArgDefault.select_value(
            [arg_template.precision, precision])
        io_precisions = [precision] * 2

        # initializing base class
        ML_FunctionBasis.__init__(self,
                                  base_name="ut_arithmetic_right_shift",
                                  function_name=function_name,
                                  output_file=output_file,
                                  io_precisions=io_precisions,
                                  abs_accuracy=None,
                                  libm_compliant=libm_compliant,
                                  debug_flag=debug_flag,
                                  arg_template=arg_template)

        self.precision = precision
Example #20
0
 def __init__(self, args=DefaultArgTemplate):
     ML_FunctionBasis.__init__(self, args)
Example #21
0
 def __init__(self, args):
   # initializing base class
   ML_FunctionBasis.__init__(self, args)
Example #22
0
 def __init__(self, args):
   # initializing base class
   ML_FunctionBasis.__init__(self, args)
   self.accuracy  = args.accuracy
Example #23
0
 def __init__(self, args=DefaultMultiAryArgTemplate):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     self.arity = args.arity
Example #24
0
 def __init__(self, args=DefaultArgTemplate):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     self.accuracy = args.accuracy
     self.num_iter = args.num_iter
Example #25
0
 def __init__(self, args):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     self.num_iter = args.num_iter
Example #26
0
 def __init__(self, args=DefaultArgTemplate):
     # initializing class specific arguments (required by ML_FunctionBasis init)
     self.mode = remquo_mode_parser(args.mode)
     self.quotient_size = args.quotient_size
     # initializing base class
     ML_FunctionBasis.__init__(self, args=args)
Example #27
0
 def __init__(self, args):
     ML_FunctionBasis.__init__(self, args)
Example #28
0
 def __init__(self, args=DefaultArgTemplate):
     # initializing base class
     ML_FunctionBasis.__init__(self, args)
     # initializing accuracy property
     self.accuracy = args.accuracy
Example #29
0
 def __init__(self, args=DefaultArgTemplate): 
   # initializing base class
   ML_FunctionBasis.__init__(self, args) 
Example #30
0
 def __init__(self, args=DefaultArrayFunctionArgTemplate):
     ML_FunctionBasis.__init__(self, args)
     self.test_index_range = args.test_index_range