Пример #1
0
    def run(self, name):
        space = FakeSpace()
        i = self.code_mapping[name]
        codes = self.codes

        def f(i):
            interp = InterpreterState(codes[i])
            interp.run(space)
            if not len(interp.results):
                raise Exception("need results")
            w_res = interp.results[-1]
            if isinstance(w_res, BaseArray):
                concr = w_res.get_concrete_or_scalar()
                sig = concr.find_sig()
                frame = sig.create_frame(concr)
                w_res = sig.eval(frame, concr)
            if isinstance(w_res, interp_boxes.W_Float64Box):
                return w_res.value
            if isinstance(w_res, interp_boxes.W_Int64Box):
                return float(w_res.value)
            elif isinstance(w_res, interp_boxes.W_BoolBox):
                return float(w_res.value)
            raise TypeError(w_res)

        if self.graph is None:
            interp, graph = self.meta_interp(f, [i],
                                             listops=True,
                                             backendopt=True,
                                             graph_and_interp_only=True)
            self.__class__.interp = interp
            self.__class__.graph = graph
        reset_stats()
        pyjitpl._warmrunnerdesc.memory_manager.alive_loops.clear()
        return self.interp.eval_graph(self.graph, [i])
Пример #2
0
    def compile_graph(self):
        if self.graph is not None:
            return
        space = FakeSpace()
        codes = self.codes

        def f(i):
            interp = InterpreterState(codes[i])
            interp.run(space)
            if not len(interp.results):
                raise Exception("need results")
            w_res = interp.results[-1]
            if isinstance(w_res, W_NDimArray):
                i, s = w_res.create_iter()
                w_res = i.getitem(s)
            if isinstance(w_res, boxes.W_Float64Box):
                return w_res.value
            elif isinstance(w_res, boxes.W_Int64Box):
                return float(w_res.value)
            elif isinstance(w_res, boxes.W_LongBox):
                return float(w_res.value)
            elif isinstance(w_res, boxes.W_BoolBox):
                return float(w_res.value)
            raise TypeError(w_res)

        if self.graph is None:
            interp, graph = self.meta_interp(f, [0],
                                             listops=True,
                                             listcomp=True,
                                             backendopt=True,
                                             graph_and_interp_only=True)
            self.__class__.interp = interp
            self.__class__.graph = graph
Пример #3
0
    def setup_class(cls):
        py.test.skip("old")
        from pypy.module.micronumpy.compile import FakeSpace
        from pypy.module.micronumpy.interp_dtype import get_dtype_cache

        cls.space = FakeSpace()
        cls.float64_dtype = get_dtype_cache(cls.space).w_float64dtype
Пример #4
0
 def run(self, code):
     interp = numpy_compile(code)
     space = FakeSpace()
     interp.run(space)
     return interp