|
|
|
@@ -349,8 +349,9 @@ static void ggml_cpy_f32_q8_0_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK8_0 == 0);
|
|
|
|
|
const int num_blocks = ne / QK8_0;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK8_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f32_q8_0, QK8_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03,
|
|
|
|
|
ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -361,8 +362,10 @@ static void ggml_cpy_q8_0_f32_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
GGML_ASSERT(ne % QK8_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK8_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_q_f32<cpy_blck_q8_0_f32, QK8_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03,
|
|
|
|
|
ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -373,9 +376,11 @@ static void ggml_cpy_q2_0_f32_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
GGML_ASSERT(ne % QK2_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK2_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]] {
|
|
|
|
|
cpy_q_f32<cpy_blck_q2_0_f32, QK2_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03, ne10, ne11,
|
|
|
|
|
ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -387,8 +392,9 @@ static void ggml_cpy_f32_q4_0_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK4_0 == 0);
|
|
|
|
|
const int num_blocks = ne / QK4_0;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f32_q4_0, QK4_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03,
|
|
|
|
|
ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -399,9 +405,11 @@ static void ggml_cpy_q4_0_f32_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
GGML_ASSERT(ne % QK4_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_q_f32<cpy_blck_q_f32<dequantize_q4_0, QK4_0>, QK4_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02,
|
|
|
|
|
nb03, ne10, ne11, ne12, nb10, nb11, nb12, nb13,
|
|
|
|
@@ -414,8 +422,9 @@ static void ggml_cpy_f32_q4_1_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK4_1 == 0);
|
|
|
|
|
const int num_blocks = ne / QK4_1;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f32_q4_1, QK4_1>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03,
|
|
|
|
|
ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -426,9 +435,11 @@ static void ggml_cpy_q4_1_f32_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
GGML_ASSERT(ne % QK4_1 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_q_f32<cpy_blck_q_f32<dequantize_q4_1, QK4_1>, QK4_1>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02,
|
|
|
|
|
nb03, ne10, ne11, ne12, nb10, nb11, nb12, nb13,
|
|
|
|
@@ -441,8 +452,9 @@ static void ggml_cpy_f32_q5_0_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK5_0 == 0);
|
|
|
|
|
const int num_blocks = ne / QK5_0;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]] {
|
|
|
|
|
cpy_f32_q<cpy_blck_f32_q5_0, QK5_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03,
|
|
|
|
|
ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -453,9 +465,11 @@ static void ggml_cpy_q5_0_f32_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
GGML_ASSERT(ne % QK5_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_q_f32<cpy_blck_q_f32<dequantize_q5_0, QK5_0>, QK5_0>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02,
|
|
|
|
|
nb03, ne10, ne11, ne12, nb10, nb11, nb12, nb13,
|
|
|
|
@@ -468,8 +482,9 @@ static void ggml_cpy_f32_q5_1_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK5_1 == 0);
|
|
|
|
|
const int num_blocks = ne / QK5_1;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f32_q5_1, QK5_1>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03,
|
|
|
|
|
ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -480,9 +495,11 @@ static void ggml_cpy_q5_1_f32_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
GGML_ASSERT(ne % QK5_1 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_q_f32<cpy_blck_q_f32<dequantize_q5_1, QK5_1>, QK5_1>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02,
|
|
|
|
|
nb03, ne10, ne11, ne12, nb10, nb11, nb12, nb13,
|
|
|
|
@@ -494,9 +511,11 @@ static void ggml_cpy_mxfp4_f32_sycl(const char * cx, char * cdst, const int ne,
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ne;
|
|
|
|
|
GGML_ASSERT(ne % QK_MXFP4 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_MXFP4, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]] {
|
|
|
|
|
cpy_q_f32<cpy_blck_q_f32<dequantize_mxfp4, QK_MXFP4>, QK_MXFP4>(cx, cdst, ne, ne00, ne01, ne02, nb00,
|
|
|
|
|
nb01, nb02, nb03, ne10, ne11, ne12,
|
|
|
|
@@ -509,9 +528,10 @@ static void ggml_cpy_f32_iq4_nl_sycl(const char * cx, char * cdst, const int ne,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK4_NL == 0);
|
|
|
|
|
const int num_blocks = ne / QK4_NL;
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_NL, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]] {
|
|
|
|
|
cpy_f32_q<cpy_blck_f32_iq4_nl, QK4_NL>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03, ne10, ne11,
|
|
|
|
|
ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -556,8 +576,9 @@ static void ggml_cpy_f16_q4_0_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK4_0 == 0);
|
|
|
|
|
const int num_blocks = ne / QK4_0;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f16_q4_0, QK4_0>(cx, cdst, ne, ne00, ne01, ne02,
|
|
|
|
|
nb00, nb01, nb02, nb03,
|
|
|
|
@@ -570,8 +591,9 @@ static void ggml_cpy_f16_q4_1_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK4_1 == 0);
|
|
|
|
|
const int num_blocks = ne / QK4_1;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f16_q4_1, QK4_1>(cx, cdst, ne, ne00, ne01, ne02,
|
|
|
|
|
nb00, nb01, nb02, nb03,
|
|
|
|
@@ -584,8 +606,9 @@ static void ggml_cpy_f16_q5_0_sycl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
GGML_ASSERT(ne % QK5_0 == 0);
|
|
|
|
|
const int num_blocks = ne / QK5_0;
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks), sycl::range<3>(1, 1, 1)),
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_f32_q<cpy_blck_f16_q5_0, QK5_0>(cx, cdst, ne, ne00, ne01, ne02,
|
|
|
|
|
nb00, nb01, nb02, nb03,
|
|
|
|
@@ -849,7 +872,8 @@ static void ggml_cpy_q8_0_q8_0(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK8_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK8_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
@@ -863,7 +887,8 @@ static void ggml_cpy_q5_0_q5_0(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK5_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
|
sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
@@ -877,7 +902,8 @@ static void ggml_cpy_q5_1_q5_1(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK5_1 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK5_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE),
|
|
|
|
@@ -892,7 +918,8 @@ static void ggml_cpy_q4_0_q4_0(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK4_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -906,8 +933,9 @@ static void ggml_cpy_q4_1_q4_1(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
GGML_ASSERT(ne % QK4_1 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_1, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|
cpy_q_q<block_q4_1, QK4_1>(cx, cdst, ne, ne00, ne01, ne02, nb00, nb01, nb02, nb03, ne10, ne11, ne12, nb10, nb11, nb12, nb13, item_ct1);
|
|
|
|
@@ -918,7 +946,8 @@ static void ggml_cpy_q1_0_q1_0(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK1_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK1_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]] {
|
|
|
|
@@ -930,7 +959,8 @@ static void ggml_cpy_q2_0_q2_0(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK2_0 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK2_0, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -942,7 +972,8 @@ static void ggml_cpy_mxfp4_mxfp4(const char * cx, char * cdst, const int ne, con
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_MXFP4 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_MXFP4, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]] {
|
|
|
|
@@ -954,7 +985,8 @@ static void ggml_cpy_nvfp4_nvfp4(const char * cx, char * cdst, const int ne, con
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_NVFP4 == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_NVFP4, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -966,7 +998,8 @@ static void ggml_cpy_q2_K_q2_K(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -978,7 +1011,8 @@ static void ggml_cpy_q3_K_q3_K(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -990,7 +1024,8 @@ static void ggml_cpy_q4_K_q4_K(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1002,7 +1037,8 @@ static void ggml_cpy_q5_K_q5_K(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1014,7 +1050,8 @@ static void ggml_cpy_q6_K_q6_K(const char * cx, char * cdst, const int ne, const
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1026,7 +1063,8 @@ static void ggml_cpy_iq2_xxs_iq2_xxs(const char * cx, char * cdst, const int ne,
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1038,7 +1076,8 @@ static void ggml_cpy_iq2_xs_iq2_xs(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1050,7 +1089,8 @@ static void ggml_cpy_iq2_s_iq2_s(const char * cx, char * cdst, const int ne, con
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1062,7 +1102,8 @@ static void ggml_cpy_iq3_xxs_iq3_xxs(const char * cx, char * cdst, const int ne,
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1074,7 +1115,8 @@ static void ggml_cpy_iq1_s_iq1_s(const char * cx, char * cdst, const int ne, con
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1086,7 +1128,8 @@ static void ggml_cpy_iq1_m_iq1_m(const char * cx, char * cdst, const int ne, con
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1098,7 +1141,8 @@ static void ggml_cpy_iq4_nl_iq4_nl(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK4_NL == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK4_NL, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1110,7 +1154,8 @@ static void ggml_cpy_iq3_s_iq3_s(const char * cx, char * cdst, const int ne, con
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
@@ -1122,7 +1167,8 @@ static void ggml_cpy_iq4_xs_iq4_xs(const char * cx, char * cdst, const int ne, c
|
|
|
|
|
const int ne02, const int nb00, const int nb01, const int nb02, const int nb03,
|
|
|
|
|
const int ne10, const int ne11, const int ne12, const int nb10, const int nb11,
|
|
|
|
|
const int nb12, const int nb13, queue_ptr stream) {
|
|
|
|
|
const int num_blocks = ceil_div(ne, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
GGML_ASSERT(ne % QK_K == 0);
|
|
|
|
|
const int num_blocks = ceil_div(ne / QK_K, SYCL_CPY_BLOCK_SIZE);
|
|
|
|
|
stream->parallel_for(
|
|
|
|
|
sycl::nd_range<3>(sycl::range<3>(1, 1, num_blocks) * sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE), sycl::range<3>(1, 1, SYCL_CPY_BLOCK_SIZE)),
|
|
|
|
|
[=](sycl::nd_item<3> item_ct1) [[sycl::reqd_sub_group_size(WARP_SIZE)]]{
|
|
|
|
|