Commit 05188f30 authored by PanZezhong's avatar PanZezhong
Browse files

issue/78 错误信息改用通用代码

parent e1caa4f5
......@@ -2,9 +2,7 @@
infiniStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr) {
int device_id = 0;
auto ret = aclrtGetDevice(&device_id);
CHECK_RET(ret == ACL_SUCCESS,
return INFINI_STATUS_DEVICE_NOT_INITIALIZED);
CHECK_ACL(aclrtGetDevice(&device_id));
*handle_ptr = new InfiniopAscendHandle{INFINI_DEVICE_ASCEND, device_id};
......
......@@ -11,21 +11,15 @@ int64_t numElements(const int64_t *shape, int64_t num) {
infiniStatus_t mallocWorkspace(void **workspaceAddr, size_t workspaceSize) {
*workspaceAddr = nullptr;
if (workspaceSize > 0) {
auto ret = aclrtMalloc(workspaceAddr, workspaceSize,
ACL_MEM_MALLOC_HUGE_FIRST);
CHECK_RET(ret == ACL_SUCCESS,
LOG_PRINT("aclrtMalloc failed. ERROR: %d\n", ret);
return INFINI_STATUS_INTERNAL_ERROR);
CHECK_ACL(aclrtMalloc(workspaceAddr, workspaceSize,
ACL_MEM_MALLOC_HUGE_FIRST));
}
return INFINI_STATUS_SUCCESS;
}
infiniStatus_t freeWorkspace(void *workspaceAddr) {
if (workspaceAddr != nullptr) {
auto ret = aclrtFree(workspaceAddr);
CHECK_RET(ret == ACL_SUCCESS,
LOG_PRINT("aclrtFree failed, ERROR: %d\n", ret);
return INFINI_STATUS_INTERNAL_ERROR);
CHECK_ACL(aclrtFree(workspaceAddr));
}
return INFINI_STATUS_SUCCESS;
}
......
#ifndef __INFINIOP_COMMON_ASCEND_H__
#define __INFINIOP_COMMON_ASCEND_H__
#include "../../utils.h"
#include "ascend_handle.h"
#include <acl/acl.h>
#include <acl/acl_base.h>
......@@ -15,25 +16,7 @@
#ifdef __cplusplus
extern "C" {
#endif
#define CHECK_RET(cond, return_expr) \
do { \
if (!(cond)) { \
return_expr; \
} \
} while (0)
#define LOG_PRINT(message, ...) \
do { \
printf(message, ##__VA_ARGS__); \
} while (0)
#define LOG_ERROR(message, ...) \
do { \
printf(message, ##__VA_ARGS__); \
return INFINI_STATUS_INTERNAL_ERROR; \
} while (0)
#define CHECK_ACL(API) CHECK_INTERNAL(API, ACL_SUCCESS)
#ifdef __cplusplus
};
#endif
......
......@@ -70,10 +70,7 @@ infiniStatus_t aclnnTensorDescriptor::createTensor(void *data) {
}
infiniStatus_t aclnnTensorDescriptor::destroyTensor() {
auto ret = aclDestroyTensor(this->t);
CHECK_RET(ret == ACL_SUCCESS,
LOG_PRINT("aclDesctroyTensor failed, ERROR: %d\n", ret);
return INFINI_STATUS_INTERNAL_ERROR);
CHECK_ACL(aclDestroyTensor(this->t));
t = nullptr;
return INFINI_STATUS_SUCCESS;
......
......@@ -5,29 +5,14 @@
#define MAX_WARP_PER_BLOCK 32
#define WARP_SIZE 32
#include "../../utils.h"
#include <iostream>
#define CHECK_CUDA_OR_RETURN(call, errorCode) \
do { \
if (auto status = call; status != cudaSuccess) { \
std::cerr << "CUDA error: " << cudaGetErrorString(status) \
<< " in file " << __FILE__ << ", function " << __func__ \
<< ", line " << __LINE__ << std::endl; \
return errorCode; \
} \
} while (0)
#define CHECK_CUDA_OR_RETURN(API, ERROR) CHECK_API_OR(API, cudaSuccess, return ERROR)
#define CHECK_CUDA(call) CHECK_CUDA_OR_RETURN(call, INFINI_STATUS_INTERNAL_ERROR)
#define CHECK_CUDA(API) CHECK_INTERNAL(API, cudaSuccess)
#define CHECK_CUDNN(call) \
do { \
if (auto status = call; status != CUDNN_STATUS_SUCCESS) { \
std::cerr << "CUDNN error: " << cudnnGetErrorString(status) \
<< " in file " << __FILE__ << ", function " << __func__ \
<< ", line " << __LINE__ << std::endl; \
return INFINI_STATUS_INTERNAL_ERROR; \
} \
} while (0)
#define CHECK_CUDNN(API) CHECK_INTERNAL(API, CUDNN_STATUS_SUCCESS)
#include "../pool.h"
#include "cuda_handle.h"
......
......@@ -88,10 +88,7 @@ infiniStatus_t Descriptor::create(
// use alpha = 0.5, beta = 0.5 temporarily
int8_t mt = 1;
auto ret = aclnnGemmGetWorkspaceSize(ta, tb, tc, .5, .5, 0, 0, tc, mt, &workspace_size, &executor);
CHECK_RET(ret == ACL_SUCCESS,
LOG_PRINT("aclnnGemmGetWorkspaceSize failed. ERROR: %d\n", ret);
return INFINI_STATUS_INTERNAL_ERROR);
CHECK_ACL(aclnnGemmGetWorkspaceSize(ta, tb, tc, .5, .5, 0, 0, tc, mt, &workspace_size, &executor));
aclSetAclOpExecutorRepeatable(executor);
*desc_ptr = new Descriptor(
......@@ -122,12 +119,9 @@ infiniStatus_t Descriptor::calculate(
tb = _opaque->b->t;
size_t workspace_size;
auto ret = aclnnGemmGetWorkspaceSize(
CHECK_ACL(aclnnGemmGetWorkspaceSize(
ta, tb, tc, alpha, beta, 0, 0, tc, _opaque->mt,
&workspace_size, &(_opaque->executor));
CHECK_RET(ret == ACL_SUCCESS,
LOG_PRINT("aclnnGemmGetWorkspaceSize failed. ERROR: %d\n", ret);
return INFINI_STATUS_INTERNAL_ERROR);
&workspace_size, &(_opaque->executor)));
if (workspaceSize_ < workspace_size) {
return INFINI_STATUS_INSUFFICIENT_WORKSPACE;
}
......@@ -139,10 +133,7 @@ infiniStatus_t Descriptor::calculate(
AclSetTensorAddr(_opaque->executor, 1, tb, ((char *)b) + i * _info.b_matrix.stride * unit);
AclSetTensorAddr(_opaque->executor, 2, tc, ((char *)c) + i * _info.c_matrix.stride * unit);
AclSetTensorAddr(_opaque->executor, 3, tc, ((char *)c) + i * _info.c_matrix.stride * unit);
ret = aclnnGemm(workspace, workspace_size, _opaque->executor, stream);
CHECK_RET(ret == ACL_SUCCESS,
LOG_PRINT("aclnnGemm failed. ERROR: %d\n", ret);
return INFINI_STATUS_INTERNAL_ERROR);
CHECK_ACL(aclnnGemm(workspace, workspace_size, _opaque->executor, stream));
}
return INFINI_STATUS_SUCCESS;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment