CUDA: replace GGML_CUDA_F16 with CUDA arch checks #15433
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR removes
GGML_CUDA_F16and replaces it with runtime checks, simplifying the code. For the vector dot products FP16 instructions are used if available. For the dequantization FP32 is used unconditionally since it's going to be severely I/O bound anyways. I benchmarked the performance changes withGGML_CUDA_FORCE_CUBLASandGGML_CUDA_F16to get the maximum possible impact, even then on the hardware I've tested it's negligible.I also updated the description of
GGML_CUDA_FORCE_CUBLASto make it clear that it can cause numerical issues.Performance changes