fix linux gcc and clang compilation - #62
Merged
Merged
Conversation
- std::hash is not visible when compiling with clang 10.0.0
- std::out_of_range is not visible on both clang 10.0.0 and gcc 10.1.0
- template specilization must be placed in namespace where template is
defined (gcc with -fpermissive)
error: explicit specialization of ‘template<class TT> struct das::typeName’ outside its namespace must use a nested-name-specifier [-fpermissive]
33 | struct typeName<ObjectArray> {
aleksisch
pushed a commit
to aleksisch/daScript
that referenced
this pull request
Dec 9, 2025
…er-error-report Feature/better error report
borisbat
added a commit
that referenced
this pull request
Aug 31, 2026
…V, tg 0.95x The last tier for the format. Blob: an "iq3ss" arm mirroring the iq4xs 20->18 split verbatim over t.iq3ss (identical strip/d addressing, so kq_scales_of is the iq4xs arm with the plane swapped), quants at sb0*104, the % 512 off gate joining the split-scale row. Kernels ride the previous commit's MSL constant tables: iq3s_gw() carries the 512-word grid, MetalKqGemvIq3s stages it as a float4[512] MAGNITUDE slab (signs applied by select) at 4 rows per simdgroup (llama.cpp's N_R0_IQ3_S), MetalKqMvIq3sT B2/B4 + MetalKqMvB8Iq3s are the iq4xs shells over the per-32-block lane map with the grid read direct, and MetalKqMulMmK45T grows an IQ3S arm (threadgroup grid under @template_gate; the chain re-nested - `} else static_if` is a parse error). Ladders, prefill gates, and the seven-format test cells follow the iq4xs rows; fixtures at fmt 33 reuse the split-form scale fill with kq_row_ref through dequant_iq3s_plane_superblock_at. The decode GEMV got a full race before shipping: eight forms at n=2048 d=8192 (gather placement x3, gather deleted, signs deleted, llama.cpp's exact geometry, row width, f4 slab) all land in 127-141 GB/s against k4's 204 and k6's 287 in the same harness - the 9-bit-index + per-nibble-sign compose is format-intrinsic on M1, and the f4 slab is the best form and ships. HOW_TO gains the race table and QUIRK 22 (judge Metal kernel levers with the kernel probe, not tg128 e2e - +-8 t/s of e2e noise swallowed the +9% winner twice). Gates on the M1 Max: test_metal_gemv_kernels 2/2, test_metal_gemm_kernels 2/2 (108s corpus), e2e decodes the coherent story at gen 227 t/s. Rows vs llama.cpp b10660 Metal (same-run, IQ3_M): pp512 3237.6 / 3344.3 (0.97x), tg128 199.4 / 209.0 (0.95x, up from 0.82x at the first cut); M1 CPU pp512 886.2 / 433.6 (2.04x), tg128 57.4 / 66.6 (0.86x - the ledgered tg tail class, followup #61/#62). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
borisbat
added a commit
that referenced
this pull request
Sep 1, 2026
…V, tg 0.95x The last tier for the format. Blob: an "iq3ss" arm mirroring the iq4xs 20->18 split verbatim over t.iq3ss (identical strip/d addressing, so kq_scales_of is the iq4xs arm with the plane swapped), quants at sb0*104, the % 512 off gate joining the split-scale row. Kernels ride the previous commit's MSL constant tables: iq3s_gw() carries the 512-word grid, MetalKqGemvIq3s stages it as a float4[512] MAGNITUDE slab (signs applied by select) at 4 rows per simdgroup (llama.cpp's N_R0_IQ3_S), MetalKqMvIq3sT B2/B4 + MetalKqMvB8Iq3s are the iq4xs shells over the per-32-block lane map with the grid read direct, and MetalKqMulMmK45T grows an IQ3S arm (threadgroup grid under @template_gate; the chain re-nested - `} else static_if` is a parse error). Ladders, prefill gates, and the seven-format test cells follow the iq4xs rows; fixtures at fmt 33 reuse the split-form scale fill with kq_row_ref through dequant_iq3s_plane_superblock_at. The decode GEMV got a full race before shipping: eight forms at n=2048 d=8192 (gather placement x3, gather deleted, signs deleted, llama.cpp's exact geometry, row width, f4 slab) all land in 127-141 GB/s against k4's 204 and k6's 287 in the same harness - the 9-bit-index + per-nibble-sign compose is format-intrinsic on M1, and the f4 slab is the best form and ships. HOW_TO gains the race table and QUIRK 22 (judge Metal kernel levers with the kernel probe, not tg128 e2e - +-8 t/s of e2e noise swallowed the +9% winner twice). Gates on the M1 Max: test_metal_gemv_kernels 2/2, test_metal_gemm_kernels 2/2 (108s corpus), e2e decodes the coherent story at gen 227 t/s. Rows vs llama.cpp b10660 Metal (same-run, IQ3_M): pp512 3237.6 / 3344.3 (0.97x), tg128 199.4 / 209.0 (0.95x, up from 0.82x at the first cut); M1 CPU pp512 886.2 / 433.6 (2.04x), tg128 57.4 / 66.6 (0.86x - the ledgered tg tail class, followup #61/#62). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
borisbat
added a commit
that referenced
this pull request
Sep 1, 2026
…V, tg 0.95x The last tier for the format. Blob: an "iq3ss" arm mirroring the iq4xs 20->18 split verbatim over t.iq3ss (identical strip/d addressing, so kq_scales_of is the iq4xs arm with the plane swapped), quants at sb0*104, the % 512 off gate joining the split-scale row. Kernels ride the previous commit's MSL constant tables: iq3s_gw() carries the 512-word grid, MetalKqGemvIq3s stages it as a float4[512] MAGNITUDE slab (signs applied by select) at 4 rows per simdgroup (llama.cpp's N_R0_IQ3_S), MetalKqMvIq3sT B2/B4 + MetalKqMvB8Iq3s are the iq4xs shells over the per-32-block lane map with the grid read direct, and MetalKqMulMmK45T grows an IQ3S arm (threadgroup grid under @template_gate; the chain re-nested - `} else static_if` is a parse error). Ladders, prefill gates, and the seven-format test cells follow the iq4xs rows; fixtures at fmt 33 reuse the split-form scale fill with kq_row_ref through dequant_iq3s_plane_superblock_at. The decode GEMV got a full race before shipping: eight forms at n=2048 d=8192 (gather placement x3, gather deleted, signs deleted, llama.cpp's exact geometry, row width, f4 slab) all land in 127-141 GB/s against k4's 204 and k6's 287 in the same harness - the 9-bit-index + per-nibble-sign compose is format-intrinsic on M1, and the f4 slab is the best form and ships. HOW_TO gains the race table and QUIRK 22 (judge Metal kernel levers with the kernel probe, not tg128 e2e - +-8 t/s of e2e noise swallowed the +9% winner twice). Gates on the M1 Max: test_metal_gemv_kernels 2/2, test_metal_gemm_kernels 2/2 (108s corpus), e2e decodes the coherent story at gen 227 t/s. Rows vs llama.cpp b10660 Metal (same-run, IQ3_M): pp512 3237.6 / 3344.3 (0.97x), tg128 199.4 / 209.0 (0.95x, up from 0.82x at the first cut); M1 CPU pp512 886.2 / 433.6 (2.04x), tg128 57.4 / 66.6 (0.86x - the ledgered tg tail class, followup `#61`/`#62`). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
defined (gcc with -fpermissive)
error: explicit specialization of ‘template struct das::typeName’ outside its namespace must use a nested-name-specifier [-fpermissive]
33 | struct typeName {