Commit 9405d54e authored by Pan Zezhong's avatar Pan Zezhong
Browse files

feat: 修改ascend结构体命名,调整格式

parent 0bf217c1
...@@ -16,3 +16,6 @@ __pycache__/ ...@@ -16,3 +16,6 @@ __pycache__/
# Cache # Cache
cache/ cache/
# JSON
*.json
#include "common_ascend.h" #include "common_ascend.h"
infiniopStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr, int device_id) { infiniopStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr,
int device_id) {
uint32_t device_count; uint32_t device_count;
aclrtGetDeviceCount(&device_count); aclrtGetDeviceCount(&device_count);
if (device_id >= static_cast<int>(device_count)) { if (device_id >= static_cast<int>(device_count)) {
...@@ -16,8 +17,7 @@ infiniopStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr, int devi ...@@ -16,8 +17,7 @@ infiniopStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr, int devi
return INFINIOP_STATUS_SUCCESS; return INFINIOP_STATUS_SUCCESS;
} }
infiniopStatus_t deleteAscendHandle(infiniopAscendHandle_t handle_ptr) { infiniopStatus_t destroyAscendHandle(infiniopAscendHandle_t handle_ptr) {
delete handle_ptr; delete handle_ptr;
return INFINIOP_STATUS_SUCCESS; return INFINIOP_STATUS_SUCCESS;
} }
#ifndef __INFINIOP_ASCEND_HANDLE_H__ #ifndef __INFINIOP_ASCEND_HANDLE_H__
#define __INFINIOP_ASCEND_HANDLE_H__ #define __INFINIOP_ASCEND_HANDLE_H__
#include "infinicore.h" #include "infinicore.h"
#include "infiniop/handle.h" #include "infiniop/handle.h"
struct InfiniopAscendHandle; struct InfiniopAscendHandle;
typedef struct InfiniopAscendHandle *infiniopAscendHandle_t; typedef struct InfiniopAscendHandle *infiniopAscendHandle_t;
infiniopStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr, int device_id); infiniopStatus_t createAscendHandle(infiniopAscendHandle_t *handle_ptr,
int device_id);
infiniopStatus_t deleteAscendHandle(infiniopAscendHandle_t handle_ptr); infiniopStatus_t destroyAscendHandle(infiniopAscendHandle_t handle_ptr);
#endif #endif
#include "../pool.h"
#include "common_bang.h" #include "common_bang.h"
#include <memory> #include <memory>
#include "../pool.h"
infiniopStatus_t createBangHandle(infiniopBangHandle_t *handle_ptr, int device_id) { infiniopStatus_t createBangHandle(infiniopBangHandle_t *handle_ptr,
int device_id) {
unsigned int device_count; unsigned int device_count;
cnrtGetDeviceCount(&device_count); cnrtGetDeviceCount(&device_count);
if (device_id >= static_cast<int>(device_count)) { if (device_id >= static_cast<int>(device_count)) {
...@@ -10,19 +11,20 @@ infiniopStatus_t createBangHandle(infiniopBangHandle_t *handle_ptr, int device_i ...@@ -10,19 +11,20 @@ infiniopStatus_t createBangHandle(infiniopBangHandle_t *handle_ptr, int device_i
} }
auto pool = std::make_shared<Pool<cnnlHandle_t>>(); auto pool = std::make_shared<Pool<cnnlHandle_t>>();
if (cnrtSetDevice(device_id) != cnrtSuccess){ if (cnrtSetDevice(device_id) != cnrtSuccess) {
return INFINIOP_STATUS_BAD_DEVICE; return INFINIOP_STATUS_BAD_DEVICE;
} }
cnnlHandle_t handle; cnnlHandle_t handle;
cnnlCreate(&handle); cnnlCreate(&handle);
pool->push(std::move(handle)); pool->push(std::move(handle));
*handle_ptr = new InfiniopBangHandle{INFINI_DEVICE_CAMBRICON, device_id, std::move(pool)}; *handle_ptr = new InfiniopBangHandle{INFINI_DEVICE_CAMBRICON, device_id,
std::move(pool)};
return INFINIOP_STATUS_SUCCESS; return INFINIOP_STATUS_SUCCESS;
} }
infiniopStatus_t deleteBangHandle(infiniopBangHandle_t handle){ infiniopStatus_t destroyBangHandle(infiniopBangHandle_t handle) {
delete handle; delete handle;
return INFINIOP_STATUS_SUCCESS; return INFINIOP_STATUS_SUCCESS;
} }
...@@ -8,5 +8,6 @@ typedef struct InfiniopBangHandle *infiniopBangHandle_t; ...@@ -8,5 +8,6 @@ typedef struct InfiniopBangHandle *infiniopBangHandle_t;
infiniopStatus_t createBangHandle(infiniopBangHandle_t *handle_ptr, infiniopStatus_t createBangHandle(infiniopBangHandle_t *handle_ptr,
int device_id); int device_id);
infiniopStatus_t deleteBangHandle(infiniopBangHandle_t handle); infiniopStatus_t destroyBangHandle(infiniopBangHandle_t handle);
#endif #endif
#include "./cpu_handle.h" #include "./cpu_handle.h"
infiniopStatus_t createCpuHandle(infiniopCpuHandle_t* handle_ptr){ infiniopStatus_t createCpuHandle(infiniopCpuHandle_t *handle_ptr) {
*handle_ptr = new InfiniopHandle{INFINI_DEVICE_CPU, 0}; *handle_ptr = new InfiniopHandle{INFINI_DEVICE_CPU, 0};
return INFINIOP_STATUS_SUCCESS; return INFINIOP_STATUS_SUCCESS;
} }
infiniopStatus_t destroyCpuHandle(infiniopCpuHandle_t handle) {
delete handle;
return INFINIOP_STATUS_SUCCESS;
}
...@@ -7,4 +7,6 @@ typedef infiniopHandle_t infiniopCpuHandle_t; ...@@ -7,4 +7,6 @@ typedef infiniopHandle_t infiniopCpuHandle_t;
infiniopStatus_t createCpuHandle(infiniopCpuHandle_t *handle_ptr); infiniopStatus_t createCpuHandle(infiniopCpuHandle_t *handle_ptr);
infiniopStatus_t destroyCpuHandle(infiniopCpuHandle_t handle);
#endif #endif
...@@ -12,8 +12,9 @@ ...@@ -12,8 +12,9 @@
#include "./ascend/ascend_handle.h" #include "./ascend/ascend_handle.h"
#endif #endif
__C infiniopStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr,
__C infiniopStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr, infiniDevice_t device, int device_id) { infiniDevice_t device,
int device_id) {
if (handle_ptr == nullptr) { if (handle_ptr == nullptr) {
return INFINIOP_STATUS_NULL_POINTER; return INFINIOP_STATUS_NULL_POINTER;
} }
...@@ -23,50 +24,50 @@ __C infiniopStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr, infiniDe ...@@ -23,50 +24,50 @@ __C infiniopStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr, infiniDe
switch (device) { switch (device) {
#ifdef ENABLE_CPU_API #ifdef ENABLE_CPU_API
case INFINI_DEVICE_CPU: case INFINI_DEVICE_CPU:
return createCpuHandle((infiniopCpuHandle_t *) handle_ptr); return createCpuHandle((infiniopCpuHandle_t *)handle_ptr);
#endif #endif
#ifdef ENABLE_CUDA_API #ifdef ENABLE_CUDA_API
case INFINI_DEVICE_NVIDIA: { case INFINI_DEVICE_NVIDIA: {
return createCudaHandle((infiniopCudaHandle_t *) handle_ptr, device_id, device); return createCudaHandle((infiniopCudaHandle_t *)handle_ptr, device_id,
} device);
}
#endif #endif
#ifdef ENABLE_CAMBRICON_API #ifdef ENABLE_CAMBRICON_API
case INFINI_DEVICE_CAMBRICON: { case INFINI_DEVICE_CAMBRICON: {
return createBangHandle((infiniopBangHandle_t *) handle_ptr, device_id); return createBangHandle((infiniopBangHandle_t *)handle_ptr, device_id);
} }
#endif #endif
#ifdef ENABLE_ASCEND_API #ifdef ENABLE_ASCEND_API
case INFINI_DEVICE_ASCEND: { case INFINI_DEVICE_ASCEND: {
return createAscendHandle((infiniopAscendHandle_t *) handle_ptr, device_id); return createAscendHandle((infiniopAscendHandle_t *)handle_ptr,
} device_id);
}
#endif #endif
} }
return INFINIOP_STATUS_DEVICE_TYPE_NOT_SUPPORTED; return INFINIOP_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
} }
__C infiniopStatus_t infiniopDestroyHandle(infiniopHandle_t handle) { __C infiniopStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
switch (handle->device) { switch (handle->device) {
#ifdef ENABLE_CPU_API #ifdef ENABLE_CPU_API
case INFINI_DEVICE_CPU: case INFINI_DEVICE_CPU:
delete handle; return destroyCpuHandle((infiniopCpuHandle_t)handle);
return INFINIOP_STATUS_SUCCESS;
#endif #endif
#ifdef ENABLE_CUDA_API #ifdef ENABLE_CUDA_API
case INFINI_DEVICE_NVIDIA: { case INFINI_DEVICE_NVIDIA: {
return deleteCudaHandle((infiniopCudaHandle_t) handle); return deleteCudaHandle((infiniopCudaHandle_t)handle);
} }
#endif #endif
#ifdef ENABLE_CAMBRICON_API #ifdef ENABLE_CAMBRICON_API
case INFINI_DEVICE_CAMBRICON: { case INFINI_DEVICE_CAMBRICON: {
return deleteBangHandle((infiniopBangHandle_t) handle); return destroyBangHandle((infiniopBangHandle_t)handle);
} }
#endif #endif
#ifdef ENABLE_ASCEND_API #ifdef ENABLE_ASCEND_API
case INFINI_DEVICE_ASCEND: { case INFINI_DEVICE_ASCEND: {
return deleteAscendHandle((infiniopAscendHandle_t) handle); return destroyAscendHandle((infiniopAscendHandle_t)handle);
} }
#endif #endif
} }
return INFINIOP_STATUS_DEVICE_TYPE_NOT_SUPPORTED; return INFINIOP_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
......
#include "matmul_aclnn.h" #include "matmul_aclnn.h"
MatmulAclnnDescriptor::MatmulAclnnDescriptor(infiniDevice_t _device) { InfiniopMatmulAclnnDescriptor::InfiniopMatmulAclnnDescriptor(
infiniDevice_t _device) {
device = _device; device = _device;
device_id = 0; device_id = 0;
executor = nullptr; executor = nullptr;
...@@ -23,7 +24,7 @@ infiniopStatus_t aclnnCreateMatmulDescriptor(infiniopAscendHandle_t handle, ...@@ -23,7 +24,7 @@ infiniopStatus_t aclnnCreateMatmulDescriptor(infiniopAscendHandle_t handle,
return INFINIOP_STATUS_BAD_TENSOR_DTYPE; return INFINIOP_STATUS_BAD_TENSOR_DTYPE;
} }
*desc_ptr = new MatmulAclnnDescriptor(handle->device); *desc_ptr = new InfiniopMatmulAclnnDescriptor(handle->device);
(*desc_ptr)->device_id = handle->device_id; (*desc_ptr)->device_id = handle->device_id;
(*desc_ptr)->dtype = dtype; (*desc_ptr)->dtype = dtype;
(*desc_ptr)->mt = mt; (*desc_ptr)->mt = mt;
......
...@@ -4,25 +4,26 @@ ...@@ -4,25 +4,26 @@
#include "../../../devices/ascend/tensor_aclnn.h" #include "../../../devices/ascend/tensor_aclnn.h"
#include "../../utils.h" #include "../../utils.h"
#include "../blas.h" #include "../blas.h"
#include "matmul_aclnn_api.h"
#include <acl/acl_base.h> #include <acl/acl_base.h>
#include <aclnn/acl_meta.h> #include <aclnn/acl_meta.h>
#include <aclnnop/level2/aclnn_gemm.h>
#include <aclnnop/aclnn_matmul.h> #include <aclnnop/aclnn_matmul.h>
#include "matmul_aclnn_api.h" #include <aclnnop/level2/aclnn_gemm.h>
struct MatmulAclnnDescriptor { struct InfiniopMatmulAclnnDescriptor {
infiniDevice_t device; infiniDevice_t device;
int device_id; int device_id;
aclOpExecutor* executor; aclOpExecutor *executor;
MatmulInfo* info; MatmulInfo *info;
infiniDtype_t dtype; infiniDtype_t dtype;
aclnnTensorDescriptor_t cDesc, aDesc, bDesc; aclnnTensorDescriptor_t cDesc, aDesc, bDesc;
// cubeMathType // cubeMathType
// see doc: https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha002/apiref/appdevgapi/context/aclnnBatchMatMul.md // see doc:
// https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha002/apiref/appdevgapi/context/aclnnBatchMatMul.md
int8_t mt; int8_t mt;
size_t workspaceSize; size_t workspaceSize;
MatmulAclnnDescriptor(infiniDevice_t _device); InfiniopMatmulAclnnDescriptor(infiniDevice_t _device);
}; };
#endif #endif
...@@ -3,28 +3,23 @@ ...@@ -3,28 +3,23 @@
#include "../../../devices/ascend/ascend_handle.h" #include "../../../devices/ascend/ascend_handle.h"
#include "infiniop/operator.h" #include "infiniop/operator.h"
struct MatmulAclnnDescriptor; struct InfiniopMatmulAclnnDescriptor;
typedef struct MatmulAclnnDescriptor *MatmulAclnnDescriptor_t; typedef struct InfiniopMatmulAclnnDescriptor *MatmulAclnnDescriptor_t;
infiniopStatus_t aclnnCreateMatmulDescriptor(infiniopAscendHandle_t handle, infiniopStatus_t aclnnCreateMatmulDescriptor(infiniopAscendHandle_t handle,
MatmulAclnnDescriptor_t *desc_ptr, MatmulAclnnDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c_desc, infiniopTensorDescriptor_t c_desc,
infiniopTensorDescriptor_t a_desc, infiniopTensorDescriptor_t a_desc,
infiniopTensorDescriptor_t b_desc, infiniopTensorDescriptor_t b_desc,
int8_t cubeMathType); int8_t cubeMathType);
infiniopStatus_t aclnnGetMatmulWorkspaceSize(MatmulAclnnDescriptor_t desc, infiniopStatus_t aclnnGetMatmulWorkspaceSize(MatmulAclnnDescriptor_t desc,
size_t *size); size_t *size);
infiniopStatus_t aclnnMatmul(MatmulAclnnDescriptor_t desc, infiniopStatus_t aclnnMatmul(MatmulAclnnDescriptor_t desc, void *workspace,
void *workspace, size_t workspace_size, void *c, const void *a,
size_t workspace_size, const void *b, float alpha, float beta,
void *c, void *stream);
const void *a,
const void *b,
float alpha,
float beta,
void *stream);
infiniopStatus_t aclnnDestroyMatmulDescriptor(MatmulAclnnDescriptor_t desc); infiniopStatus_t aclnnDestroyMatmulDescriptor(MatmulAclnnDescriptor_t desc);
#endif // __INFINIOP_MATMUL_ACLNN_API_H__ #endif // __INFINIOP_MATMUL_ACLNN_API_H__
#ifndef __INFINIOP_MATMUL_CPU_H__ #ifndef __INFINIOP_MATMUL_CPU_H__
#define __INFINIOP_MATMUL_CPU_H__ #define __INFINIOP_MATMUL_CPU_H__
#include "../../../devices/cpu/cpu_handle.h"
#include "../blas.h" #include "../blas.h"
#include "infiniop/operator.h" #include "./matmul_cpu_api.h"
typedef struct MatmulCpuDescriptor { typedef struct MatmulCpuDescriptor {
infiniDevice_t device; infiniDevice_t device;
...@@ -11,20 +10,4 @@ typedef struct MatmulCpuDescriptor { ...@@ -11,20 +10,4 @@ typedef struct MatmulCpuDescriptor {
MatmulInfo info; MatmulInfo info;
} MatmulCpuDescriptor; } MatmulCpuDescriptor;
typedef struct MatmulCpuDescriptor *infiniopMatmulCpuDescriptor_t;
infiniopStatus_t cpuCreateMatmulDescriptor(
infiniopCpuHandle_t handle, infiniopMatmulCpuDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c_desc, infiniopTensorDescriptor_t a_desc,
infiniopTensorDescriptor_t b_desc);
infiniopStatus_t cpuGetMatmulWorkspaceSize(infiniopMatmulCpuDescriptor_t desc,
uint64_t *size);
infiniopStatus_t cpuMatmul(infiniopMatmulCpuDescriptor_t desc, void *workspace,
uint64_t workspace_size, void *c, void const *a,
void const *b, float alpha, float beta);
infiniopStatus_t cpuDestroyMatmulDescriptor(infiniopMatmulCpuDescriptor_t desc);
#endif // __INFINIOP_MATMUL_CPU_H__ #endif // __INFINIOP_MATMUL_CPU_H__
#ifndef __INFINIOP_MATMUL_CPU_API_H__
#define __INFINIOP_MATMUL_CPU_API_H__
#include "../../../devices/cpu/cpu_handle.h"
#include "infiniop/operator.h"
struct MatmulCpuDescriptor;
typedef struct MatmulCpuDescriptor *infiniopMatmulCpuDescriptor_t;
infiniopStatus_t cpuCreateMatmulDescriptor(
infiniopCpuHandle_t handle, infiniopMatmulCpuDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c_desc, infiniopTensorDescriptor_t a_desc,
infiniopTensorDescriptor_t b_desc);
infiniopStatus_t cpuGetMatmulWorkspaceSize(infiniopMatmulCpuDescriptor_t desc,
uint64_t *size);
infiniopStatus_t cpuMatmul(infiniopMatmulCpuDescriptor_t desc, void *workspace,
uint64_t workspace_size, void *c, void const *a,
void const *b, float alpha, float beta);
infiniopStatus_t cpuDestroyMatmulDescriptor(infiniopMatmulCpuDescriptor_t desc);
#endif // __INFINIOP_MATMUL_CPU_API_H__
#include "infiniop/ops/matmul.h" #include "infiniop/ops/matmul.h"
#ifdef ENABLE_CPU_API #ifdef ENABLE_CPU_API
#include "cpu/matmul_cpu.h" #include "cpu/matmul_cpu_api.h"
#endif #endif
#ifdef ENABLE_CUDA_API #ifdef ENABLE_CUDA_API
#include "cuda/matmul_cuda_api.h" #include "cuda/matmul_cuda_api.h"
......
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