Skip to content

fix linux gcc and clang compilation - #62

Merged
borisbat merged 1 commit into
GaijinEntertainment:masterfrom
szvyagin-gj:master
Jun 24, 2020
Merged

fix linux gcc and clang compilation#62
borisbat merged 1 commit into
GaijinEntertainment:masterfrom
szvyagin-gj:master

Conversation

@szvyagin-gj

Copy link
Copy Markdown
Contributor
  • 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 struct das::typeName’ outside its namespace must use a nested-name-specifier [-fpermissive]
33 | struct typeName {

- 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> {
@borisbat
borisbat merged commit cfb24dd into GaijinEntertainment:master Jun 24, 2020
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants