/// <summary>
        ///
        /// </summary>
        public void CooGet(out CudaDeviceVariable <indexT> cooRowInd,
                           out CudaDeviceVariable <indexT> cooColInd,
                           out CudaDeviceVariable <dataT> cooValues)
        {
            CUdeviceptr ptrRowIdx = new CUdeviceptr();
            CUdeviceptr ptrColIdx = new CUdeviceptr();
            CUdeviceptr ptrValues = new CUdeviceptr();

            res = CudaSparseNativeMethods.cusparseCooGet(descr, ref rows, ref cols, ref nnz, ref ptrRowIdx,
                                                         ref ptrColIdx, ref ptrValues, ref typeIndices, ref idxBase, ref typeData);
            Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cusparseCooGet", res));

            if (res != cusparseStatus.Success)
            {
                throw new CudaSparseException(res);
            }

            cooRowInd = new CudaDeviceVariable <indexT>(ptrRowIdx);
            cooColInd = new CudaDeviceVariable <indexT>(ptrColIdx);
            cooValues = new CudaDeviceVariable <dataT>(ptrValues);
        }