| 1551 | } |
| 1552 | |
| 1553 | void model::forward_prop(execution_mode mode) |
| 1554 | { |
| 1555 | LBANN_CALIPER_MARK_FUNCTION; |
| 1556 | do_model_forward_prop_begin_cbs(mode); |
| 1557 | |
| 1558 | // Clear activations in reference counter |
| 1559 | m_activation_refcnt.clear(); |
| 1560 | |
| 1561 | for (El::Int i = 0; i < get_num_layers(); ++i) { |
| 1562 | auto& l = get_layer(i); |
| 1563 | |
| 1564 | if (this->is_subgraph_parallelism_enabled()) { |
| 1565 | if (l.get_run_layer_in_subgraph() || l.get_name() == "layer1") { |
| 1566 | do_layer_forward_prop_begin_cbs(mode, &l); |
| 1567 | l.forward_prop(); |
| 1568 | do_layer_forward_prop_end_cbs(mode, &l); |
| 1569 | } |
| 1570 | else { |
| 1571 | // To Do: Fix last batch problem in sub-graph parallelism |
| 1572 | // experimental code to fix last batch problem in subgraph parallelism |
| 1573 | } |
| 1574 | } |
| 1575 | else { |
| 1576 | do_layer_forward_prop_begin_cbs(mode, &l); |
| 1577 | l.forward_prop(); |
| 1578 | do_layer_forward_prop_end_cbs(mode, &l); |
| 1579 | } |
| 1580 | } |
| 1581 | do_model_forward_prop_end_cbs(mode); |
| 1582 | } |
| 1583 | |
| 1584 | void model::backward_prop(bool compute_weight_grads_only) |
| 1585 | { |
no test coverage detected