mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-04 09:32:00 +00:00 
			
		
		
		
	vulkan : fix rope with partial rotation and non-cont src (#14582)
This commit is contained in:
		@@ -14,21 +14,19 @@ void main() {
 | 
			
		||||
 | 
			
		||||
    const uint row_dst = gl_GlobalInvocationID.x;
 | 
			
		||||
 | 
			
		||||
    if (i0 >= p.n_dims) {
 | 
			
		||||
        const uint i = row_dst*ne0 + i0;
 | 
			
		||||
 | 
			
		||||
        data_d[i + 0] = data_a[i + 0];
 | 
			
		||||
        data_d[i + 1] = data_a[i + 1];
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const uint row_x     = row_dst % ne1;
 | 
			
		||||
    const uint channel_x = row_dst / ne1;
 | 
			
		||||
 | 
			
		||||
    const uint idst = row_dst*ne0 + i0/2;
 | 
			
		||||
    const uint ix   = channel_x*p.s2 + row_x*p.s1 + i0/2;
 | 
			
		||||
 | 
			
		||||
    if (i0 >= p.n_dims) {
 | 
			
		||||
        data_d[idst + i0/2 + 0] = data_a[ix + i0/2 + 0];
 | 
			
		||||
        data_d[idst + i0/2 + 1] = data_a[ix + i0/2 + 1];
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const int sect_dims = p.sections[0] + p.sections[1] + p.sections[2] + p.sections[3];
 | 
			
		||||
    const int sec_w = p.sections[1] + p.sections[0];
 | 
			
		||||
    const uint sector = (i0 / 2) % sect_dims;
 | 
			
		||||
 
 | 
			
		||||
@@ -13,21 +13,19 @@ void main() {
 | 
			
		||||
 | 
			
		||||
    const uint row_dst = gl_GlobalInvocationID.x;
 | 
			
		||||
 | 
			
		||||
    if (i0 >= p.n_dims) {
 | 
			
		||||
        const uint i = row_dst*ne0 + i0;
 | 
			
		||||
 | 
			
		||||
        data_d[i + 0] = data_a[i + 0];
 | 
			
		||||
        data_d[i + 1] = data_a[i + 1];
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const uint row_x     = row_dst % ne1;
 | 
			
		||||
    const uint channel_x = row_dst / ne1;
 | 
			
		||||
 | 
			
		||||
    const uint idst = row_dst*ne0 + i0/2;
 | 
			
		||||
    const uint ix   = channel_x*p.s2 + row_x*p.s1 + i0/2;
 | 
			
		||||
 | 
			
		||||
    if (i0 >= p.n_dims) {
 | 
			
		||||
        data_d[idst + i0/2 + 0] = data_a[ix + i0/2 + 0];
 | 
			
		||||
        data_d[idst + i0/2 + 1] = data_a[ix + i0/2 + 1];
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const float theta_base = data_pos[channel_x] * pow(p.theta_scale, i0/2.0f);
 | 
			
		||||
 | 
			
		||||
    const float freq_factor = p.has_ff != 0 ? data_ff[i0/2] : 1.0f;
 | 
			
		||||
 
 | 
			
		||||
@@ -13,21 +13,19 @@ void main() {
 | 
			
		||||
 | 
			
		||||
    const uint row_dst = gl_GlobalInvocationID.x;
 | 
			
		||||
 | 
			
		||||
    if (i0 >= p.n_dims) {
 | 
			
		||||
        const uint i = row_dst*ne0 + i0;
 | 
			
		||||
 | 
			
		||||
        data_d[i + 0] = data_a[i + 0];
 | 
			
		||||
        data_d[i + 1] = data_a[i + 1];
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const uint row_x     = row_dst % ne1;
 | 
			
		||||
    const uint channel_x = row_dst / ne1;
 | 
			
		||||
 | 
			
		||||
    const uint idst = row_dst*ne0 + i0;
 | 
			
		||||
    const uint ix   = channel_x*p.s2 + row_x*p.s1 + i0;
 | 
			
		||||
 | 
			
		||||
    if (i0 >= p.n_dims) {
 | 
			
		||||
        data_d[idst + 0] = data_a[ix + 0];
 | 
			
		||||
        data_d[idst + 1] = data_a[ix + 1];
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const float theta_base = data_pos[channel_x] * pow(p.theta_scale, i0/2.0f);
 | 
			
		||||
 | 
			
		||||
    const float freq_factor = p.has_ff != 0 ? data_ff[i0/2] : 1.0f;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user