class_docstr: MKL Backend
class_docstr_tok: ["MKL","Backend"]
code: def compound_rnn_unroll_fprop_bibnrnn(
      self,
      ngLayer,
      h_buffer_all,
      h_ff_buffer,
      W_recur_f,
      h_prev_not_used_in_mkl,
      h_ff_f_not_used_in_mkl,
      h_f_not_used_in_mkl,
      b_f,
      W_recur_b,
      h_next_not_used_in_mkl,
      h_ff_b_not_used_in_mkl,
      h_b_not_used_in_mkl,
      b_b,
      nout,
      nsteps,
      nsteps_used,
      activation,
  ):
      self.change_data_store_order(
          h_buffer_all,
          h_buffer_all.shape[0],
          nsteps + 2,
          h_buffer_all.shape[1] // (nsteps + 2),
          b=ngLayer.h_all_contiguous,
      )
      self.change_data_store_order(
          h_ff_buffer,
          h_ff_buffer.shape[0],
          nsteps,
          h_ff_buffer.shape[1] // nsteps,
          b=ngLayer.h_ff_buffer_contiguous,
      )
      self.compound_rnn_unroll_fprop(
          W_recur_f,
          ngLayer.h_prev_contiguous,
          ngLayer.h_ff_f_contiguous,
          ngLayer.h_f_contiguous,
          b_f,
          nout,
          nsteps,
          nsteps_used,
          activation,
          False,
      )
  
      self.compound_rnn_unroll_fprop(
          W_recur_b,
          ngLayer.h_next_contiguous,
          ngLayer.h_ff_b_contiguous,
          ngLayer.h_b_contiguous,
          b_b,
          nout,
          nsteps,
          nsteps_used,
          activation,
          True,
      )
  
      self.change_data_store_order(
          ngLayer.h_all_contiguous,
          nsteps + 2,
          ngLayer.h_all_contiguous.shape[0],
          ngLayer.h_all_contiguous.shape[1] // (nsteps + 2),
          b=h_buffer_all,
      )
      self.change_data_store_order(
          ngLayer.h_ff_buffer_contiguous,
          nsteps,
          ngLayer.h_ff_buffer_contiguous.shape[0],
          ngLayer.h_ff_buffer_contiguous.shape[1] // nsteps,
          b=h_ff_buffer,
      )
  
imports: from __future__ import division
  from builtins import zip
  import logging
  from neon.backends import layer_mkl
  from neon.backends.util.check_mkl import get_mkl_lib
  from neon.backends.nervanacpu import CPUTensor, NervanaCPU, CustomNumpy
  import ctypes
  from cffi import FFI
  from ctypes import c_longlong, c_float, c_double, c_int
  import numpy
  from neon.backends import math_cpu
  from neon.backends.backend import OpTreeNode
  import os
  import sys
label_desc: Use image node_id 40 for calling the NervanaMKL obj's underlying member method code with example usage: obj.compound_rnn_unroll_fprop_bibnrnn(ngLayer, h_buffer_all, h_ff_buffer, W_recur_f, h_prev_not_used_in_mkl, h_ff_f_not_used_in_mkl, h_f_not_used_in_mkl, b_f, W_recur_b, h_next_not_used_in_mkl, h_ff_b_not_used_in_mkl, h_b_not_used_in_mkl, b_b, nout, nsteps, nsteps_used, activation) without return types