/// Send human-readable representation of CUresult to the output stream. inline std::ostream& operator<<(std::ostream &os, cusparseStatus_t rc) { os << "CUSPARSE Error ("; #define VEXCL_CUDA_ERR2TXT(e) case e: os << static_cast<int>(e) << " - " << #e; break switch(rc) { VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_SUCCESS); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_NOT_INITIALIZED); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_ALLOC_FAILED); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_INVALID_VALUE); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_ARCH_MISMATCH); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_MAPPING_ERROR); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_EXECUTION_FAILED); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_INTERNAL_ERROR); VEXCL_CUDA_ERR2TXT(CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED); default: os << "Unknown error"; } #undef VEXCL_CUDA_ERR2TXT return os << ")"; }
/// Send human-readable representation of CUresult to the output stream. inline std::ostream& operator<<(std::ostream &os, CUresult rc) { os << "CUDA Driver API Error ("; #define VEXCL_CUDA_ERR2TXT(e) case e: os << static_cast<int>(e) << " - " << #e; break switch(rc) { VEXCL_CUDA_ERR2TXT(CUDA_SUCCESS); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_INVALID_VALUE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_OUT_OF_MEMORY); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_INITIALIZED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_DEINITIALIZED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PROFILER_DISABLED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PROFILER_NOT_INITIALIZED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PROFILER_ALREADY_STARTED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PROFILER_ALREADY_STOPPED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NO_DEVICE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_INVALID_DEVICE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_INVALID_IMAGE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_INVALID_CONTEXT); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_CONTEXT_ALREADY_CURRENT); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_MAP_FAILED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_UNMAP_FAILED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_ARRAY_IS_MAPPED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_ALREADY_MAPPED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NO_BINARY_FOR_GPU); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_ALREADY_ACQUIRED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_MAPPED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_MAPPED_AS_ARRAY); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_MAPPED_AS_POINTER); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_ECC_UNCORRECTABLE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_UNSUPPORTED_LIMIT); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_CONTEXT_ALREADY_IN_USE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PEER_ACCESS_UNSUPPORTED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_INVALID_SOURCE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_FILE_NOT_FOUND); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_SHARED_OBJECT_INIT_FAILED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_OPERATING_SYSTEM); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_INVALID_HANDLE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_FOUND); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_READY); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_LAUNCH_FAILED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_LAUNCH_TIMEOUT); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PEER_ACCESS_NOT_ENABLED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_CONTEXT_IS_DESTROYED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_ASSERT); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_TOO_MANY_PEERS); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_PERMITTED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_NOT_SUPPORTED); VEXCL_CUDA_ERR2TXT(CUDA_ERROR_UNKNOWN); default: os << "Unknown error"; } #undef VEXCL_CUDA_ERR2TXT return os << ")"; }