Problem statement
dnnl_lstm_backward_primitive_desc_create() can be called with parameter prop_kind=dnnl_forward_training, which is IMO unexpected as for backward primitive there should be used dnnl_backward. I have used by mistake dnnl_forward_training and primitive did not worked and it takes for me a "long time" to found the problem ...
Preferred solution
Check that dnnl_lstm_backward_primitive_desc_create() will not accept dnnl_forward, dnnl_forward_training.
May be there is a reasom for which also backward primitive accepts dnnl_forward* propagation kind I am not aware of ...