char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
1a7718b4c
char/aliceai-t5-moe
1void main () { 2const uint i = gl_GlobalInvocationID .z * 262144 + gl_GlobalInvocationID .y * 512 + gl_GlobalInvocationID .x ; 3 4if (i >=p .N ) { 5return ; 6 } 7 8const uint i23 = fastdiv (i ,p .ne2_012mp ,p .ne2_012L ); 9const uint i23_offset = i23 * p .ne22 * p .ne21 * p .ne20 ; 10const uint i22 = fastdiv (i - i23_offset ,p .ne2_01mp ,p .ne2_01L ); 11const uint i22_offset = i22 * p .ne21 * p .ne20 ; 12const uint i21 = fastdiv (i - i23_offset - i22_offset ,p .ne2_0mp ,p .ne2_0L ); 13const uint i20 = i - i23_offset - i22_offset - i21 * p .ne20 ; 14 15const uint src_idx_a = get_aoffset ()+ i23 * p .nb03 + i22 * p .nb02 + i21 * p .nb01 + i20 * p .nb00 ; 16const uint src_idx_b = get_boffset ()+ i23 * p .nb13 + i22 * p .nb12 + i21 * p .nb11 + i20 * p .nb10 ; 17const uint dst_idx = get_doffset ()+ i23 * p .nb23 + i22 * p .nb22 + i21 * p .nb21 + i20 * p .nb20 ; 18 19if (p .mode == 0 ) { 20// Default 21const uint offset = (p .ne00 /2 )* p .nb00 ; 22const uint idx = src_idx_a ; 23 24data_d [dst_idx ]= D_TYPE (op (float (data_a [idx ]),float (data_a [idx + offset ]))); 25 }else if (p .mode == 1 ) { 26// Swapped 27const uint offset = (p .ne00 /2 )* p .nb00 ; 28const uint idx = src_idx_a ; 29 30data_d [dst_idx ]= D_TYPE (op (float (data_a [idx + offset ]),float (data_a [idx ]))); 31 }else { 32// Split 33data_d [dst_idx ]= D_TYPE (op (float (data_a [src_idx_a ]),float (data_b [src_idx_b ]))); 34 } 35}