             d_column_indices(NULL),
             d_column_offsets(NULL),
             d_row_indices(NULL),
+            d_out_degrees(NULL),
+            d_in_degrees(NULL),
+            d_degrees(NULL),
             nodes(0),
             edges(0),
             stream(stream)

                        cudaMemcpyHostToDevice),
                        "ProblemBase cudaMemcpy d_column_indices failed", __FILE__, __LINE__)) break;

                    if (h_column_offsets != NULL) {
                        // Allocate and initialize d_column_offsets
                        if (retval = util::GRError(cudaMalloc(

                                        graph_slices[0]->edges * sizeof(VertexId),
                                        cudaMemcpyHostToDevice),
                                    "ProblemBase cudaMemcpy d_row_indices failed", __FILE__, __LINE__)) break;
                        
                        if (retval = util::GRError(cudaMalloc(
                        (void**)&graph_slices[0]->d_in_degrees,
                        (graph_slices[0]->nodes) * sizeof(SizeT)),
                        "ProblemBase cudaMalloc d_in_degrees failed", __FILE__, __LINE__)) break;

                        // count number of in-going degrees for each node
                        util::MemsetMadVectorKernel<<<128, 128>>>(
                                data_slices[0]->d_in_degrees,
                                graph_slices[0]->d_column_offsets,
                                &graph_slices[0]->d_column_offsets[1], -1, nodes);
                    }

                } //end if(stream_from_host)
