"WebGL 2" NxN matrix FP32 multiplication C = A x B (GEMM) demo N = 256.
All A, B elements are random (0 - 1). Error "er1" is calculated as
the sum of |CCPU - CGPU |/(N*N) for all matrix elements.
er2 = max(|CCPU - CGPU |).
See also benchmark.
#version 300 es precision highp float; uniform highp sampler2D samp0; uniform highp sampler2D samp1; out float fragColor; uniform int N; void main(void) { float acc = 0; for(int i=0; i < N; i++) acc += texelFetch(samp0, ivec2(gl_FragCoord.x, i), 0).r * texelFetch(samp1, ivec2(i, gl_FragCoord.y), 0).r; fragColor = acc; }