mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2025-07-17 16:19:46 +00:00
ggml-cpu: add fp16->fp32 nnpa first
Signed-off-by: Aaron Teo <aaron.teo1@ibm.com>
This commit is contained in:
@ -62,11 +62,17 @@ struct ggml_compute_params {
|
|||||||
#if defined(__s390x__) && defined(__VEC__)
|
#if defined(__s390x__) && defined(__VEC__)
|
||||||
#ifndef __VXE__
|
#ifndef __VXE__
|
||||||
#define __VXE__
|
#define __VXE__
|
||||||
#endif
|
#endif // __VXE__
|
||||||
#ifndef __VXE2__
|
#ifndef __VXE2__
|
||||||
#define __VXE2__
|
#define __VXE2__
|
||||||
#endif
|
#endif // __VXE2__
|
||||||
#endif
|
#endif // __s390x__ && __VEC__
|
||||||
|
|
||||||
|
#if defined(__s390x__) && defined(GGML_NNPA)
|
||||||
|
#ifndef __NNPA__
|
||||||
|
#define __NNPA__
|
||||||
|
#endif // __NNPA__
|
||||||
|
#endif // __s390x__ && GGML_NNPA
|
||||||
|
|
||||||
#if defined(__ARM_FEATURE_SVE)
|
#if defined(__ARM_FEATURE_SVE)
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
|
@ -962,7 +962,12 @@ static inline void __lsx_f16x4_store(ggml_fp16_t * x, __m128 y) {
|
|||||||
#define GGML_F16_STEP GGML_F32_STEP
|
#define GGML_F16_STEP GGML_F32_STEP
|
||||||
#define GGML_F16_EPR GGML_F32_EPR
|
#define GGML_F16_EPR GGML_F32_EPR
|
||||||
|
|
||||||
static inline __vector float __lzs_f16cx4_load(const ggml_fp16_t * x) {
|
static inline float32x4_t __lzs_f16cx4_load(const ggml_fp16_t * x) {
|
||||||
|
#ifdef __NNPA__
|
||||||
|
uint16x8_t tmp = vec_xl(0, (const ggml_fp16_t *)x);
|
||||||
|
uint16x8_t nnpa = vec_convert_from_fp16(tmp, 0);
|
||||||
|
return vec_extend_to_fp32_hi(nnpa, 0);
|
||||||
|
#else
|
||||||
float tmp[4];
|
float tmp[4];
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
@ -972,6 +977,7 @@ static inline __vector float __lzs_f16cx4_load(const ggml_fp16_t * x) {
|
|||||||
// note: keep type-cast here to prevent compiler bugs
|
// note: keep type-cast here to prevent compiler bugs
|
||||||
// see: https://github.com/ggml-org/llama.cpp/issues/12846
|
// see: https://github.com/ggml-org/llama.cpp/issues/12846
|
||||||
return vec_xl(0, (const float *)(tmp));
|
return vec_xl(0, (const float *)(tmp));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void __lzs_f16cx4_store(ggml_fp16_t * x, __vector float y) {
|
static inline void __lzs_f16cx4_store(ggml_fp16_t * x, __vector float y) {
|
||||||
|
Reference in New Issue
Block a user