Error Handling

Error handling in oneCCL is implemented differently in C and C++ versions of API. C version of API uses error codes that are returned by every exposed function, while C++ API uses exceptions.

C version of oneCCL API:

typedef enum
{
    ccl_status_success               = 0,
    ccl_status_out_of_resource       = 1,
    ccl_status_invalid_arguments     = 2,
    ccl_status_unimplemented         = 3,
    ccl_status_runtime_error         = 4,
    ccl_status_blocked_due_to_resize = 5,

    ccl_status_last_value
} ccl_status_t;

C++ version of oneCCL API:

class ccl_error : public std::runtime_error