              plan.total_neurons,
              d_layer_outputs,
              num_examples_per_invocation,
-             num_feature_vectors /* total num examples */);
+             num_feature_vectors /* total num examples */,
+             plan.max_width);
 
         //cerr << "launched" << endl;
     }


        d_bias_updates.init(&bias_updates_vec[0], plan.num_layers);

        num_examples_per_invocation = 4;

        int grid_size = rudiv(num_feature_vectors, num_examples_per_invocation);

        // Get the scratch space
        d_layer_outputs.init(plan.total_neurons * grid_size);
        
        // Our grid size is one per example
        grid = dim3(grid_size);

                      int total_neurons,
                      float * layer_outputs,  // scratch space[total neurons]
                      int examples_per_block,
                      int total_num_examples,
                      int max_width)
{
    const unsigned block_num  = blockIdx.x;
    
