     const size_t num_iterations = 500;
 
     for(size_t i = 0; i < num_iterations; i++)
-        A.multiply(x, y);
+        cusp::multiply(A, x, y);
 
     float time = t.seconds_elapsed() / num_iterations;
     float GFLOPs = (time == 0) ? 0 : (2 * A.num_entries / time) / 1e9;

    cusp::array1d<ValueType,cusp::device_memory> y(A.num_rows, 0);
    
    // warm up
    A.multiply(x, y);

    // benchmark SpMV
    timer t;

        std::cout << "\n----------- benchmarking CG -----------\n";
        // compute residual
        cusp::array1d<ValueType, cusp::host_memory> r(A.num_rows,0);
        cusp::multiply(A, x, r);
        cusp::blas::axpy(b, r, ValueType(-1.0));

        ValueType residual_norm = cusp::blas::nrm2(r);
