Skip to content

Commit edad584

Browse files
committed
initial add mc support for meta
1 parent 82b2a84 commit edad584

File tree

6 files changed

+112
-10
lines changed

6 files changed

+112
-10
lines changed

src/infiniop/devices/metax/metax_common.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
#include "../../../utils.h"
22
#include "../pool.h"
3+
#include "metax_ht2mc.h"
34
#include "metax_handle.h"
4-
#include <hcblas/hcblas.h>
5-
#include <hcdnn/hcdnn.h>
5+
6+
#ifdef ENABLE_METAX_MC_API
7+
#include <mcblas/mcblas.h>
8+
#include <mcdnn/mcdnn.h>
9+
#else
10+
#include <hcblas/hcblas.h>
11+
#include <hcdnn/hcdnn.h>
12+
#endif
613
#include <memory>
714

815
#define CHECK_MCBLAS(API) CHECK_INTERNAL(API, HCBLAS_STATUS_SUCCESS)
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#ifdef ENABLE_METAX_MC_API
2+
#define hcblasHandle_t mcblasHandle_t
3+
#define hcdnnHandle_t mcdnnHandle_t
4+
#define hcStream_t mcStream_t
5+
#define hcdnnDataType_t mcdnnDataType_t
6+
#define hpcc_bfloat16 maca_bfloat16
7+
#define hpcc_bfloat162 maca_bfloat162
8+
#define __hpcc_bfloat16 __maca_bfloat16
9+
#define __hpcc_bfloat16 __maca_bfloat16
10+
#define hcError_t mcError_t
11+
#define hcSuccess mcSuccess
12+
#define hcDeviceProp_t mcDeviceProp_t
13+
#define hcGetDeviceProperties mcGetDeviceProperties
14+
#define HCBLAS_STATUS_SUCCESS MCBLAS_STATUS_SUCCESS
15+
#define HCDNN_STATUS_SUCCESS MCDNN_STATUS_SUCCESS
16+
#define hcblasCreate mcblasCreate
17+
#define hcblasSetStream mcblasSetStream
18+
#define hcGetDeviceCount mcGetDeviceCount
19+
#define hcSetDevice mcSetDevice
20+
#define hcDeviceSynchronize mcDeviceSynchronize
21+
#define hcStreamCreate mcStreamCreate
22+
#define hcStreamDestroy mcStreamDestroy
23+
#define hcStreamSynchronize mcStreamSynchronize
24+
#define hcdnnCreate mcdnnCreate
25+
#define hcdnnSetStream mcdnnSetStream
26+
#define hcEvent_t mcEvent_t
27+
#define hcStreamWaitEvent mcStreamWaitEvent
28+
#define HCDNN_DATA_HALF MCDNN_DATA_HALF
29+
#define HCDNN_DATA_FLOAT MCDNN_DATA_FLOAT
30+
#define HCDNN_DATA_DOUBLE MCDNN_DATA_DOUBLE
31+
#define HCDNN_DATA_BFLOAT16 MCDNN_DATA_BFLOAT16
32+
#define HCDNN_DATA_INT8 MCDNN_DATA_INT8
33+
#define HCDNN_DATA_INT32 MCDNN_DATA_INT32
34+
#define HCDNN_DATA_INT64 MCDNN_DATA_INT64
35+
#define HCDNN_DATA_UINT8 MCDNN_DATA_UINT8
36+
#define hcEventCreate mcEventCreate
37+
#define hcEventRecord mcEventRecord
38+
#define hcEventQuery mcEventQuery
39+
#define hcEventSynchronize mcEventSynchronize
40+
#define hcEventDestroy mcEventDestroy
41+
#define hcMalloc mcMalloc
42+
#define hpccDataType macaDataType
43+
#define hcblasComputeType_t mcblasComputeType_t
44+
#define hcMallocHost mcMallocHost
45+
#define hcFree mcFree
46+
#define hcFreeHost mcFreeHost
47+
#define hcMemcpyKind mcMemcpyKind
48+
#define hcMemcpyHostToDevice mcMemcpyHostToDevice
49+
#define hcMemcpyDeviceToHost mcMemcpyDeviceToHost
50+
#define hcMemcpyDeviceToDevice mcMemcpyDeviceToDevice
51+
#define hcMemcpyHostToHost mcMemcpyHostToHost
52+
#define hcMemcpyDefault mcMemcpyDefault
53+
#define hcMemcpy mcMemcpy
54+
#define hcMemcpyAsync mcMemcpyAsync
55+
#define hcMallocAsync mcMallocAsync
56+
#define hcFreeAsync mcFreeAsync
57+
#define HPCC_R_16F MACA_R_16F
58+
#define HPCC_R_16BF MACA_R_16BF
59+
#define HPCC_R_32F MACA_R_32F
60+
#define HCBLAS_COMPUTE_32F MCBLAS_COMPUTE_32F
61+
#define HCBLAS_COMPUTE_32F_FAST_TF32 MCBLAS_COMPUTE_32F_FAST_TF32
62+
#define HCBLAS_OP_N MCBLAS_OP_N
63+
#define HCBLAS_OP_T MCBLAS_OP_T
64+
#define HCBLAS_GEMM_DEFAULT_TENSOR_OP MCBLAS_GEMM_DEFAULT_TENSOR_OP
65+
#define hcblasGemmStridedBatchedEx mcblasGemmStridedBatchedEx
66+
#define hcLaunchKernel mcLaunchKernel
67+
#endif

src/infinirt/metax/infinirt_metax.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
#include "infinirt_metax.h"
22
#include "../../utils.h"
3-
#include <hcr/hc_runtime.h>
4-
#include <hcr/hc_runtime_api.h>
3+
#ifdef ENABLE_METAX_MC_API
4+
#include <mcr/mc_runtime.h>
5+
#include <mcr/mc_runtime_api.h>
6+
#else
7+
#include <hcr/hc_runtime.h>
8+
#include <hcr/hc_runtime_api.h>
9+
#endif
510

611
#define CHECK_MACART(RT_API) CHECK_INTERNAL(RT_API, hcSuccess)
712

src/infinirt/metax/infinirt_metax.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#ifndef __INFINIRT_MACA_H__
22
#define __INFINIRT_MACA_H__
3+
#include "../../infiniop/devices/metax/metax_ht2mc.h"
34
#include "../infinirt_impl.h"
45

56
namespace infinirt::metax {

xmake.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,17 @@ option("metax-gpu")
107107
set_description("Whether to compile implementations for MetaX GPU")
108108
option_end()
109109

110+
option("use_mc")
111+
set_default(false)
112+
set_showmenu(true)
113+
set_description("Use MC version")
114+
option_end()
115+
110116
if has_config("metax-gpu") then
111117
add_defines("ENABLE_METAX_API")
118+
if has_config("use_mc") then
119+
add_defines("ENABLE_METAX_MC_API")
120+
end
112121
includes("xmake/metax.lua")
113122
end
114123

xmake/metax.lua

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
local MACA_ROOT = os.getenv("MACA_PATH") or os.getenv("MACA_HOME") or os.getenv("MACA_ROOT")
33
add_includedirs(MACA_ROOT .. "/include")
44
add_linkdirs(MACA_ROOT .. "/lib")
5-
add_links("hcdnn", "hcblas", "hcruntime")
5+
if has_config("use_mc") then
6+
add_links("mcdnn", "mcblas", "mcruntime")
7+
else
8+
add_links("hcdnn", "hcblas", "hcruntime")
9+
end
610

711
rule("maca")
812
set_extensions(".maca")
@@ -14,11 +18,16 @@ rule("maca")
1418
on_build_file(function (target, sourcefile)
1519
local objectfile = target:objectfile(sourcefile)
1620
os.mkdir(path.directory(objectfile))
17-
local htcc = path.join(MACA_ROOT, "htgpu_llvm/bin/htcc")
21+
local args
22+
local htcc
23+
if has_config("use_mc") then
24+
htcc = path.join(MACA_ROOT, "mxgpu_llvm/bin/mxcc")
25+
args = { "-x", "maca", "-c", sourcefile, "-o", objectfile, "-I" .. MACA_ROOT .. "/include", "-O3", "-fPIC", "-Werror", "-std=c++17"}
26+
else
27+
htcc = path.join(MACA_ROOT, "htgpu_llvm/bin/htcc")
28+
args = { "-x", "hpcc", "-c", sourcefile, "-o", objectfile, "-I" .. MACA_ROOT .. "/include", "-O3", "-fPIC", "-Werror", "-std=c++17"}
29+
end
1830
local includedirs = table.concat(target:get("includedirs"), " ")
19-
20-
local args = { "-x", "hpcc", "-c", sourcefile, "-o", objectfile, "-I" .. MACA_ROOT .. "/include", "-O3", "-fPIC", "-Werror", "-std=c++17"}
21-
2231
for _, includedir in ipairs(target:get("includedirs")) do
2332
table.insert(args, "-I" .. includedir)
2433
end
@@ -66,7 +75,11 @@ target("infiniccl-metax")
6675
add_cxflags("-fPIC")
6776
end
6877
if has_config("ccl") then
69-
add_links("libhccl.so")
78+
if has_config("use_mc") then
79+
add_links("libmccl.so")
80+
else
81+
add_links("libhccl.so")
82+
end
7083
add_files("../src/infiniccl/metax/*.cc")
7184
end
7285
set_languages("cxx17")

0 commit comments

Comments
 (0)