Exemplo n.º 1
0
def make_backend_call_frame(function):

    manager = Manager.get(pytest.config.getoption('backend'))
    external = manager.compile(function)
    backend = manager.allocate_backend()
    cf = backend.make_call_frame(external)

    return backend, cf
Exemplo n.º 2
0
    def build_callframe(self):
        """
        Initialize Ngraph backend. Build and initialize Ngraph callframe from Function.
        """
        self.manager = Manager.get(self.transformer.ngraph_backend)
        self.external = self.manager.compile(self.function)
        self.backend = self.manager.allocate_backend()
        self.cf = self.backend.make_call_frame(self.external)

        # create the primary_tensor_view for result's using the ngraph++ initilized backend
        for node in self.neon_return_list:
            org_node = node
            if isinstance(node.tensor, AssignOp):
                node = node.args[1]
            shape = list(node.tensor.axes.lengths)
            self.result_primary_tensor_view_list.append(
                self.backend.make_primary_tensor_view(
                    self.element_type, Shape(shape)))
            # Allocate return buffer
            # TODO - need to define dtype of numpy array's for results based on result.dtype
            result_arr = np.zeros(shape, dtype=np.float32)
            self.neon_return_buffer[org_node] = result_arr

        # prepare tensor_views for placeholders
        for node in self.computation_op.parameters:
            shape = list(node.axes.lengths)
            self.param_primary_tensor_view_list.append(
                self.backend.make_primary_tensor_view(
                    self.element_type, Shape(shape)))

        # prepare tensor_views for input variables
        for node in self.neon_variable_list:
            if node not in self.computation_op.parameters:
                shape = list(node.axes.lengths)
                self.variable_primary_tensor_view_list.append(
                    self.backend.make_primary_tensor_view(
                        self.element_type, Shape(shape)))

        # prepare tensor_views for input variables
        for node in self.neon_randomvariable_list:
            shape = list(node.axes.lengths)
            self.randomvariable_primary_tensor_view_list.append(
                self.backend.make_primary_tensor_view(
                    self.element_type, Shape(shape)))

        # prepare tensor_views for weights
        for node in self.neon_update_list:
            shape = list(node.axes.lengths)
            self.update_primary_tensor_view_list.append(
                self.backend.make_primary_tensor_view(
                    self.element_type, Shape(shape)))
Exemplo n.º 3
0
 def __init__(self, manager_name):  # type: (str) -> None
     self.manager_name = manager_name
     self.manager = Manager.get(manager_name)
     self.backend = self.manager.allocate_backend()