 	{ OPT_KRYLOV,        "--krylov-method",      SO_REQ_CMB },
 	{ OPT_SAFE_FACT,     "--safe-fact",          SO_NONE    },
 	{ OPT_CONST_BAND,    "--const-band",         SO_NONE    },
-	{ OPT_VERBOSE,       "-v",                   SO_NONE    },
-	{ OPT_VERBOSE,       "--verbose",            SO_NONE    },
     { OPT_HELP,          "-?",                   SO_NONE    },
 	{ OPT_HELP,          "-h",                   SO_NONE    },
     { OPT_HELP,          "--help",               SO_NONE    },

	cudaSetDevice(max_idx);
}

// -------------------------------------------------------------------
// GetProblemSpecs()
//
// This function parses the specified program arguments and sets up
// the problem to be solved.
// -------------------------------------------------------------------
bool
GetProblemSpecs(int argc, char** argv, Problem& pb)
{
	// Create the option parser and pass it the arguments from main
	// and the array of valid options.
	CSimpleOptA args(argc, argv, g_options);

	// Loop while there are arguments to be processed.
	while (args.Next()) {
		// Exit immediately if we encounter an invalid argument.
		if (args.LastError() != SO_SUCCESS) {

#include <spike/solver.h>


// -----------------------------------------------------------------------------
// Typedefs
// -----------------------------------------------------------------------------
typedef double REAL;

typedef typename cusp::csr_matrix<int, REAL, cusp::device_memory> Matrix;
typedef typename cusp::array1d<REAL, cusp::device_memory>         Vector;
typedef typename cusp::array1d<REAL, cusp::host_memory>           VectorHost;

typedef typename spike::Solver<Matrix, Vector>       SpikeSolver;
typedef typename spike::SpmvCusp<Matrix, Vector>     SpmvFunctor;


// -----------------------------------------------------------------------------
using std::cout;
using std::cin;
using std::endl;
