ik_llama_opt/ggml/include
Kawrakow 8a10467990 Fused soft cap and SIMD-ified GeLU (#9)
* Softcap: WIP

Fuses scale + tanh + scale as used for softcaping in some
models.

Just CPU for now. ~1.4% for PP-512 on Gemma2-9b, no effect on TG.

Somewhat surprisingly the improvement does not increase as I
go to longer contexts. Gemma2 does softcap on K*Q, which grows
quadratically with context length, so I would have thought
the benefit from fusing scale, tanh, scale would increase.
But no, no luck.

* softcap: CUDA

* softcap: CUDA

~1% speedup for Gemma2-9b

* softcap: Metal and NEON

About 1% speedup.

* Simdified gelu

Gives ~1% speedup for Gemma2-9b prompt processing on AVX512/AVX2.
It looks like the gelu operation is memory bound on my CPU's
after SIMD-ifying it. By not using the 128 kb gelu lookup table
we gain a small advantage.
On the M2-Max the lookup table is slightly faster than the SIMD
version, so left the lookup table for ARM_NEON.

* softcap, tanh: avoid NaNs for large arguments (AVX2, AVX512)

Not that I have encountered this in practice, but just to be sure.
This does it for AVX512 and AVX2, still need a guard for ARM_NEON.

* llama-bench: add ability to turn off warmup runs

So we don't need to wait forever on, e.g., benchmarks involving
long contexts.

* softcap, tanh: avoid NaNs for large arguments (NEON)

---------

Co-authored-by: Iwan Kawrakow <iwan.kawrakow@gmail.com>
2024-08-20 17:15:47 +03:00
..
ggml-alloc.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-backend.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-blas.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-cann.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-cuda.h Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
ggml-kompute.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-metal.h Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
ggml-rpc.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-sycl.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml-vulkan.h Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
ggml.h Fused soft cap and SIMD-ified GeLU (#9) 2024-08-20 17:15:47 +03:00