Browse Source

reuse vkallocator in test

tags/20200413
nihuini 6 years ago
parent
commit
648ef3fdee
1 changed files with 22 additions and 14 deletions
  1. +22
    -14
      tests/testutil.h

+ 22
- 14
tests/testutil.h View File

@@ -218,12 +218,12 @@ int test_layer(int typeindex, const ncnn::ParamDict& pd, const std::vector<ncnn:
ncnn::VkWeightBufferAllocator g_weight_vkallocator(vkdev);
ncnn::VkWeightStagingBufferAllocator g_weight_staging_vkallocator(vkdev);

ncnn::VkBlobBufferAllocator g_blob_vkallocator(vkdev);
ncnn::VkStagingBufferAllocator g_staging_vkallocator(vkdev);
ncnn::VkAllocator* blob_vkallocator = vkdev->acquire_blob_allocator();
ncnn::VkAllocator* staging_vkallocator = vkdev->acquire_staging_allocator();

opt.blob_vkallocator = &g_blob_vkallocator;
opt.workspace_vkallocator = &g_blob_vkallocator;
opt.staging_vkallocator = &g_staging_vkallocator;
opt.blob_vkallocator = blob_vkallocator;
opt.workspace_vkallocator = blob_vkallocator;
opt.staging_vkallocator = staging_vkallocator;

if (!vkdev->info.support_fp16_storage) opt.use_fp16_storage = false;
if (!vkdev->info.support_fp16_packed) opt.use_fp16_packed = false;
@@ -346,7 +346,7 @@ int test_layer(int typeindex, const ncnn::ParamDict& pd, const std::vector<ncnn:
std::vector<ncnn::VkMat> a4_fp16_gpu(a4_fp16.size());
for (size_t i=0; i<a4_fp16.size(); i++)
{
a4_fp16_gpu[i].create_like(a4_fp16[i], &g_blob_vkallocator, &g_staging_vkallocator);
a4_fp16_gpu[i].create_like(a4_fp16[i], opt.blob_vkallocator, opt.staging_vkallocator);
a4_fp16_gpu[i].prepare_staging_buffer();
a4_fp16_gpu[i].upload(a4_fp16[i]);
}
@@ -400,6 +400,13 @@ int test_layer(int typeindex, const ncnn::ParamDict& pd, const std::vector<ncnn:

delete op;

#if NCNN_VULKAN
vkdev->reclaim_blob_allocator(blob_vkallocator);
vkdev->reclaim_staging_allocator(staging_vkallocator);
g_weight_vkallocator.clear();
g_weight_staging_vkallocator.clear();
#endif // NCNN_VULKAN

if (CompareMat(b, c, epsilon) != 0)
{
fprintf(stderr, "test_layer failed cpu\n");
@@ -439,12 +446,12 @@ int test_layer(int typeindex, const ncnn::ParamDict& pd, const std::vector<ncnn:
ncnn::VkWeightBufferAllocator g_weight_vkallocator(vkdev);
ncnn::VkWeightStagingBufferAllocator g_weight_staging_vkallocator(vkdev);

ncnn::VkBlobBufferAllocator g_blob_vkallocator(vkdev);
ncnn::VkStagingBufferAllocator g_staging_vkallocator(vkdev);
ncnn::VkAllocator* blob_vkallocator = vkdev->acquire_blob_allocator();
ncnn::VkAllocator* staging_vkallocator = vkdev->acquire_staging_allocator();

opt.blob_vkallocator = &g_blob_vkallocator;
opt.workspace_vkallocator = &g_blob_vkallocator;
opt.staging_vkallocator = &g_staging_vkallocator;
opt.blob_vkallocator = blob_vkallocator;
opt.workspace_vkallocator = blob_vkallocator;
opt.staging_vkallocator = staging_vkallocator;

if (!vkdev->info.support_fp16_storage) opt.use_fp16_storage = false;
if (!vkdev->info.support_fp16_packed) opt.use_fp16_packed = false;
@@ -545,7 +552,7 @@ int test_layer(int typeindex, const ncnn::ParamDict& pd, const std::vector<ncnn:

// upload
ncnn::VkMat a4_fp16_gpu;
a4_fp16_gpu.create_like(a4_fp16, &g_blob_vkallocator, &g_staging_vkallocator);
a4_fp16_gpu.create_like(a4_fp16, opt.blob_vkallocator, opt.staging_vkallocator);
a4_fp16_gpu.prepare_staging_buffer();
a4_fp16_gpu.upload(a4_fp16);

@@ -583,9 +590,10 @@ int test_layer(int typeindex, const ncnn::ParamDict& pd, const std::vector<ncnn:
delete op;

#if NCNN_VULKAN
g_blob_vkallocator.clear();
g_staging_vkallocator.clear();
vkdev->reclaim_blob_allocator(blob_vkallocator);
vkdev->reclaim_staging_allocator(staging_vkallocator);
g_weight_vkallocator.clear();
g_weight_staging_vkallocator.clear();
#endif // NCNN_VULKAN

if (CompareMat(b, c, epsilon) != 0)


Loading…
Cancel
Save