diff --git a/src/layer/batchnorm.cpp b/src/layer/batchnorm.cpp index 64bb7f1ed..c927d3c32 100644 --- a/src/layer/batchnorm.cpp +++ b/src/layer/batchnorm.cpp @@ -147,9 +147,11 @@ int BatchNorm::upload_model(VkTransfer& cmd) // pack4 if (channels % 4 == 0) { + Mat a_data_pack4; convert_packing(a_data, a_data_pack4, 4); cmd.record_upload(a_data_pack4, a_data_gpu_pack4); + Mat b_data_pack4; convert_packing(b_data, b_data_pack4, 4); cmd.record_upload(b_data_pack4, b_data_gpu_pack4); } diff --git a/src/layer/batchnorm.h b/src/layer/batchnorm.h index f3cf63cbe..200643a0e 100644 --- a/src/layer/batchnorm.h +++ b/src/layer/batchnorm.h @@ -56,11 +56,8 @@ public: #if NCNN_VULKAN VkMat a_data_gpu; VkMat b_data_gpu; - Pipeline* pipeline_batchnorm; - Mat a_data_pack4; - Mat b_data_pack4; VkMat a_data_gpu_pack4; VkMat b_data_gpu_pack4; Pipeline* pipeline_batchnorm_pack4; diff --git a/src/layer/convolution.cpp b/src/layer/convolution.cpp index 27b46a1e5..b1c199f48 100644 --- a/src/layer/convolution.cpp +++ b/src/layer/convolution.cpp @@ -446,10 +446,11 @@ int Convolution::upload_model(VkTransfer& cmd) { // src = kw-kh-inch-outch // dst = 4a-4b-kw-kh-inch/4a-outch/4b + Mat weight_data_pack4; { Mat weight_data_r2 = weight_data.reshape(maxk, num_input, num_output); - weight_data_pack4 = Mat(16*maxk, num_input/4, num_output/4); + weight_data_pack4.create(16*maxk, num_input/4, num_output/4); for (int q=0; q+3