Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
composable_kernel
Commits
41fb383f
"...git@developer.sourcefind.cn:OpenDAS/mmdetection3d.git" did not exist on "23071a560eda671f8324337c6688a74d9896c47e"
Commit
41fb383f
authored
Jan 07, 2022
by
Jing Zhang
Browse files
add int8 buildins
parent
46abeca3
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
13 deletions
+23
-13
composable_kernel/include/utility/amd_xdlops.hpp
composable_kernel/include/utility/amd_xdlops.hpp
+12
-12
composable_kernel/include/utility/dynamic_buffer.hpp
composable_kernel/include/utility/dynamic_buffer.hpp
+10
-0
host/driver_offline/src/gemm_driver_offline.cpp
host/driver_offline/src/gemm_driver_offline.cpp
+1
-1
No files found.
composable_kernel/include/utility/amd_xdlops.hpp
View file @
41fb383f
...
@@ -307,12 +307,12 @@ struct intrin_mfma_i32_32x32x8i8<32, 32>
...
@@ -307,12 +307,12 @@ struct intrin_mfma_i32_32x32x8i8<32, 32>
__device__
static
void
Run
(
const
int8x4_t
&
reg_a
,
const
int8x4_t
&
reg_b
,
FloatC
&
reg_c
)
__device__
static
void
Run
(
const
int8x4_t
&
reg_a
,
const
int8x4_t
&
reg_b
,
FloatC
&
reg_c
)
{
{
reg_c
.
template
AsType
<
int32x16_t
>()(
Number
<
0
>
{})
=
reg_c
.
template
AsType
<
int32x16_t
>()(
Number
<
0
>
{})
=
llvm_intr
in_amdgcn_mfma_i32_32x32x8i8
(
bit_cast
<
int
>
(
reg_a
),
__built
in_amdgcn_mfma_i32_32x32x8i8
(
bit_cast
<
int
>
(
reg_a
),
bit_cast
<
int
>
(
reg_b
),
bit_cast
<
int
>
(
reg_b
),
reg_c
.
template
AsType
<
int32x16_t
>()[
Number
<
0
>
{}],
reg_c
.
template
AsType
<
int32x16_t
>()[
Number
<
0
>
{}],
0
,
0
,
0
,
0
,
0
);
0
);
}
}
};
};
...
@@ -326,12 +326,12 @@ struct intrin_mfma_i32_16x16x16i8<16, 16>
...
@@ -326,12 +326,12 @@ struct intrin_mfma_i32_16x16x16i8<16, 16>
__device__
static
void
Run
(
const
int8x4_t
&
reg_a
,
const
int8x4_t
&
reg_b
,
FloatC
&
reg_c
)
__device__
static
void
Run
(
const
int8x4_t
&
reg_a
,
const
int8x4_t
&
reg_b
,
FloatC
&
reg_c
)
{
{
reg_c
.
template
AsType
<
int32x4_t
>()(
Number
<
0
>
{})
=
reg_c
.
template
AsType
<
int32x4_t
>()(
Number
<
0
>
{})
=
llvm_intr
in_amdgcn_mfma_i32_16x16x16i8
(
bit_cast
<
int
>
(
reg_a
),
__built
in_amdgcn_mfma_i32_16x16x16i8
(
bit_cast
<
int
>
(
reg_a
),
bit_cast
<
int
>
(
reg_b
),
bit_cast
<
int
>
(
reg_b
),
reg_c
.
template
AsType
<
int32x4_t
>()[
Number
<
0
>
{}],
reg_c
.
template
AsType
<
int32x4_t
>()[
Number
<
0
>
{}],
0
,
0
,
0
,
0
,
0
);
0
);
}
}
};
};
...
...
composable_kernel/include/utility/dynamic_buffer.hpp
View file @
41fb383f
...
@@ -169,6 +169,8 @@ struct DynamicBuffer
...
@@ -169,6 +169,8 @@ struct DynamicBuffer
is_same
<
remove_cvref_t
<
X
>
,
int8x2_t
>::
value
)
||
is_same
<
remove_cvref_t
<
X
>
,
int8x2_t
>::
value
)
||
(
is_same
<
remove_cvref_t
<
T
>
,
int8_t
>::
value
&&
(
is_same
<
remove_cvref_t
<
T
>
,
int8_t
>::
value
&&
is_same
<
remove_cvref_t
<
X
>
,
int8x4_t
>::
value
)
||
is_same
<
remove_cvref_t
<
X
>
,
int8x4_t
>::
value
)
||
(
is_same
<
remove_cvref_t
<
T
>
,
int8_t
>::
value
&&
is_same
<
remove_cvref_t
<
X
>
,
int8x8_t
>::
value
)
||
(
is_same
<
remove_cvref_t
<
T
>
,
int8x4_t
>::
value
&&
(
is_same
<
remove_cvref_t
<
T
>
,
int8x4_t
>::
value
&&
is_same
<
remove_cvref_t
<
X
>
,
int8x4_t
>::
value
)
||
is_same
<
remove_cvref_t
<
X
>
,
int8x4_t
>::
value
)
||
(
is_same
<
remove_cvref_t
<
T
>
,
int8x8_t
>::
value
&&
(
is_same
<
remove_cvref_t
<
T
>
,
int8x8_t
>::
value
&&
...
@@ -202,6 +204,14 @@ struct DynamicBuffer
...
@@ -202,6 +204,14 @@ struct DynamicBuffer
*
c_style_pointer_cast
<
int32_t
*>
(
&
p_data_
[
i
])
=
*
c_style_pointer_cast
<
int32_t
*>
(
&
p_data_
[
i
])
=
*
c_style_pointer_cast
<
const
int32_t
*>
(
&
x
);
*
c_style_pointer_cast
<
const
int32_t
*>
(
&
x
);
}
}
else
if
constexpr
(
is_same
<
remove_cvref_t
<
T
>
,
int8_t
>::
value
&&
is_same
<
remove_cvref_t
<
X
>
,
int8x8_t
>::
value
)
{
// HACK: cast pointer of x is bad
// TODO: remove this after compiler fix
*
c_style_pointer_cast
<
int32x2_t
*>
(
&
p_data_
[
i
])
=
*
c_style_pointer_cast
<
const
int32x2_t
*>
(
&
x
);
}
else
if
constexpr
(
is_same
<
remove_cvref_t
<
T
>
,
int8x4_t
>::
value
&&
else
if
constexpr
(
is_same
<
remove_cvref_t
<
T
>
,
int8x4_t
>::
value
&&
is_same
<
remove_cvref_t
<
X
>
,
int8x4_t
>::
value
)
is_same
<
remove_cvref_t
<
X
>
,
int8x4_t
>::
value
)
{
{
...
...
host/driver_offline/src/gemm_driver_offline.cpp
View file @
41fb383f
...
@@ -239,7 +239,7 @@ int main(int argc, char* argv[])
...
@@ -239,7 +239,7 @@ int main(int argc, char* argv[])
using ab_data_t = float;
using ab_data_t = float;
using acc_data_t = float;
using acc_data_t = float;
using c_data_t = float;
using c_data_t = float;
#elif
1
#elif
0
using
ab_data_t
=
half_t
;
using
ab_data_t
=
half_t
;
using
acc_data_t
=
float
;
using
acc_data_t
=
float
;
using
c_data_t
=
half_t
;
using
c_data_t
=
half_t
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment