Comments (6)
Great! It works, and it is super fast on my Intel GPU.
from waifu2x-ncnn-vulkan.
Some header files are generated during compilation. Follow the wiki docs in ncnn project.
It is fine to copy source codes as long as you follow the opensource license
BSD-3 for ncnn
MIT for waifu2x-ncnn-vulkan
from waifu2x-ncnn-vulkan.
Still cannot build it on Linux. Neither Ubuntu nor Arch built it successfully.
I am sure that I have compiled and installed ncnn in my system. But it appeared to be another god damn problem.
Compile output:
waifu2x.cpp:73:11: error: ‘create_gpu_instance’ is not a member of ‘ncnn’
ncnn::create_gpu_instance();
^~~~~~~~~~~~~~~~~~~
waifu2x.cpp:75:11: error: ‘VulkanDevice’ is not a member of ‘ncnn’
ncnn::VulkanDevice* vkdev = new ncnn::VulkanDevice;
^~~~~~~~~~~~
waifu2x.cpp:75:25: error: ‘vkdev’ was not declared in this scope
ncnn::VulkanDevice* vkdev = new ncnn::VulkanDevice;
^~~~~
waifu2x.cpp:75:43: error: ‘VulkanDevice’ in namespace ‘ncnn’ does not name a type
ncnn::VulkanDevice* vkdev = new ncnn::VulkanDevice;
^~~~~~~~~~~~
waifu2x.cpp:81:17: error: ‘class ncnn::Net’ has no member named ‘set_vulkan_device’; did you mean ‘use_vulkan_compute’?
waifu2x.set_vulkan_device(vkdev);
^~~~~~~~~~~~~~~~~
use_vulkan_compute
waifu2x.cpp:98:13: error: ‘class ncnn::Option’ has no member named ‘blob_vkallocator’; did you mean ‘blob_allocator’?
opt.blob_vkallocator = vkdev->allocator();
^~~~~~~~~~~~~~~~
blob_allocator
waifu2x.cpp:99:13: error: ‘class ncnn::Option’ has no member named ‘workspace_vkallocator’; did you mean ‘workspace_allocator’?
opt.workspace_vkallocator = vkdev->allocator();
^~~~~~~~~~~~~~~~~~~~~
workspace_allocator
waifu2x.cpp:100:13: error: ‘class ncnn::Option’ has no member named ‘staging_vkallocator’; did you mean ‘blob_allocator’?
opt.staging_vkallocator = vkdev->staging_allocator();
^~~~~~~~~~~~~~~~~~~
blob_allocator
waifu2x.cpp:106:30: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
pre_padding->vkdev = vkdev;
^~~~~
waifu2x.cpp:119:30: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
pre_padding->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:124:28: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
post_crop->vkdev = vkdev;
^~~~~
waifu2x.cpp:134:28: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
post_crop->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:139:28: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
normalize->vkdev = vkdev;
^~~~~
waifu2x.cpp:149:28: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
normalize->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:154:30: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
denormalize->vkdev = vkdev;
^~~~~
waifu2x.cpp:164:30: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
denormalize->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:171:46: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
cast_float32_to_float16->vkdev = vkdev;
^~~~~
waifu2x.cpp:180:46: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
cast_float32_to_float16->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:185:46: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
cast_float16_to_float32->vkdev = vkdev;
^~~~~
waifu2x.cpp:194:46: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
cast_float16_to_float32->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:200:28: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
crop_tile->vkdev = vkdev;
^~~~~
waifu2x.cpp:213:28: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
crop_tile->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:218:31: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
merge_tile_x->vkdev = vkdev;
^~~~~
waifu2x.cpp:226:31: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
merge_tile_x->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:231:31: error: ‘class ncnn::Layer’ has no member named ‘vkdev’
merge_tile_y->vkdev = vkdev;
^~~~~
waifu2x.cpp:239:31: error: ‘class ncnn::Layer’ has no member named ‘create_pipeline’
merge_tile_y->create_pipeline();
^~~~~~~~~~~~~~~
waifu2x.cpp:271:19: error: ‘VkCompute’ is not a member of ‘ncnn’
ncnn::VkCompute cmd(vkdev);
^~~~~~~~~
waifu2x.cpp:274:19: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat in_gpu;
^~~~~
waifu2x.cpp:274:19: note: suggested alternative: ‘Mat’
ncnn::VkMat in_gpu;
^~~~~
Mat
waifu2x.cpp:276:17: error: ‘in_gpu’ was not declared in this scope
in_gpu.create_like(in, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~~
waifu2x.cpp:276:44: error: ‘class ncnn::Option’ has no member named ‘blob_vkallocator’; did you mean ‘blob_allocator’?
in_gpu.create_like(in, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~~~~~~~~~~~~
blob_allocator
waifu2x.cpp:276:66: error: ‘class ncnn::Option’ has no member named ‘staging_vkallocator’; did you mean ‘blob_allocator’?
in_gpu.create_like(in, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~~~~~~~~~~~~~~~
blob_allocator
waifu2x.cpp:281:17: error: ‘cmd’ was not declared in this scope
cmd.record_upload(in_gpu);
^~~
waifu2x.cpp:287:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat in_gpu_fp16;
^~~~~
waifu2x.cpp:287:23: note: suggested alternative: ‘Mat’
ncnn::VkMat in_gpu_fp16;
^~~~~
Mat
waifu2x.cpp:288:50: error: ‘in_gpu’ was not declared in this scope
cast_float32_to_float16->forward(in_gpu, in_gpu_fp16, cmd, opt);
^~~~~~
waifu2x.cpp:288:58: error: ‘in_gpu_fp16’ was not declared in this scope
cast_float32_to_float16->forward(in_gpu, in_gpu_fp16, cmd, opt);
^~~~~~~~~~~
waifu2x.cpp:288:71: error: ‘cmd’ was not declared in this scope
cast_float32_to_float16->forward(in_gpu, in_gpu_fp16, cmd, opt);
^~~
waifu2x.cpp:294:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat in_gpu_normed;
^~~~~
waifu2x.cpp:294:23: note: suggested alternative: ‘Mat’
ncnn::VkMat in_gpu_normed;
^~~~~
Mat
waifu2x.cpp:295:36: error: ‘in_gpu’ was not declared in this scope
normalize->forward(in_gpu, in_gpu_normed, cmd, opt);
^~~~~~
waifu2x.cpp:295:44: error: ‘in_gpu_normed’ was not declared in this scope
normalize->forward(in_gpu, in_gpu_normed, cmd, opt);
^~~~~~~~~~~~~
waifu2x.cpp:295:59: error: ‘cmd’ was not declared in this scope
normalize->forward(in_gpu, in_gpu_normed, cmd, opt);
^~~
waifu2x.cpp:313:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat pre_padding_params(4, (size_t)4u, 1, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~
waifu2x.cpp:313:23: note: suggested alternative: ‘Mat’
ncnn::VkMat pre_padding_params(4, (size_t)4u, 1, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~
Mat
waifu2x.cpp:314:17: error: ‘pre_padding_params’ was not declared in this scope
pre_padding_params.prepare_staging_buffer();
^~~~~~~~~~~~~~~~~~
waifu2x.cpp:314:17: note: suggested alternative: ‘prepadding_right’
pre_padding_params.prepare_staging_buffer();
^~~~~~~~~~~~~~~~~~
prepadding_right
waifu2x.cpp:322:35: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> pre_padding_inputs(2);
^~~~~
waifu2x.cpp:322:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> pre_padding_inputs(2);
^~~~~
Mat
waifu2x.cpp:322:35: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:322:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> pre_padding_inputs(2);
^~~~~
Mat
waifu2x.cpp:322:40: error: template argument 1 is invalid
std::vector<ncnn::VkMat> pre_padding_inputs(2);
^
waifu2x.cpp:322:40: error: template argument 2 is invalid
waifu2x.cpp:323:37: error: invalid types ‘int[int]’ for array subscript
pre_padding_inputs[0] = in_gpu;
^
waifu2x.cpp:323:41: error: ‘in_gpu’ was not declared in this scope
pre_padding_inputs[0] = in_gpu;
^~~~~~
waifu2x.cpp:324:37: error: invalid types ‘int[int]’ for array subscript
pre_padding_inputs[1] = pre_padding_params;
^
waifu2x.cpp:326:35: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> pre_padding_outputs(1);
^~~~~
waifu2x.cpp:326:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> pre_padding_outputs(1);
^~~~~
Mat
waifu2x.cpp:326:35: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:326:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> pre_padding_outputs(1);
^~~~~
Mat
waifu2x.cpp:326:40: error: template argument 1 is invalid
std::vector<ncnn::VkMat> pre_padding_outputs(1);
^
waifu2x.cpp:326:40: error: template argument 2 is invalid
waifu2x.cpp:327:79: error: ‘cmd’ was not declared in this scope
pre_padding->forward(pre_padding_inputs, pre_padding_outputs, cmd, opt);
^~~
waifu2x.cpp:328:47: error: invalid types ‘int[int]’ for array subscript
in_gpu = pre_padding_outputs[0];
^
waifu2x.cpp:331:19: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat out_gpu;
^~~~~
waifu2x.cpp:331:19: note: suggested alternative: ‘Mat’
ncnn::VkMat out_gpu;
^~~~~
Mat
waifu2x.cpp:338:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat crop_tile_params(6, (size_t)4u, 1, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~
waifu2x.cpp:338:23: note: suggested alternative: ‘Mat’
ncnn::VkMat crop_tile_params(6, (size_t)4u, 1, opt.blob_vkallocator, opt.staging_vkallocator);
^~~~~
Mat
waifu2x.cpp:339:17: error: ‘crop_tile_params’ was not declared in this scope
crop_tile_params.prepare_staging_buffer();
^~~~~~~~~~~~~~~~
waifu2x.cpp:339:17: note: suggested alternative: ‘crop_tile’
crop_tile_params.prepare_staging_buffer();
^~~~~~~~~~~~~~~~
crop_tile
waifu2x.cpp:345:35: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> out_tile_y_gpus(ytiles);
^~~~~
waifu2x.cpp:345:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> out_tile_y_gpus(ytiles);
^~~~~
Mat
waifu2x.cpp:345:35: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:345:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> out_tile_y_gpus(ytiles);
^~~~~
Mat
waifu2x.cpp:345:40: error: template argument 1 is invalid
std::vector<ncnn::VkMat> out_tile_y_gpus(ytiles);
^
waifu2x.cpp:345:40: error: template argument 2 is invalid
waifu2x.cpp:348:39: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> out_tile_x_gpus(xtiles);
^~~~~
waifu2x.cpp:348:39: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> out_tile_x_gpus(xtiles);
^~~~~
Mat
waifu2x.cpp:348:39: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:348:39: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> out_tile_x_gpus(xtiles);
^~~~~
Mat
waifu2x.cpp:348:44: error: template argument 1 is invalid
std::vector<ncnn::VkMat> out_tile_x_gpus(xtiles);
^
waifu2x.cpp:348:44: error: template argument 2 is invalid
waifu2x.cpp:364:43: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> crop_tile_inputs(2);
^~~~~
waifu2x.cpp:364:43: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> crop_tile_inputs(2);
^~~~~
Mat
waifu2x.cpp:364:43: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:364:43: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> crop_tile_inputs(2);
^~~~~
Mat
waifu2x.cpp:364:48: error: template argument 1 is invalid
std::vector<ncnn::VkMat> crop_tile_inputs(2);
^
waifu2x.cpp:364:48: error: template argument 2 is invalid
waifu2x.cpp:365:43: error: invalid types ‘int[int]’ for array subscript
crop_tile_inputs[0] = in_gpu;
^
waifu2x.cpp:365:47: error: ‘in_gpu’ was not declared in this scope
crop_tile_inputs[0] = in_gpu;
^~~~~~
waifu2x.cpp:366:43: error: invalid types ‘int[int]’ for array subscript
crop_tile_inputs[1] = crop_tile_params;
^
waifu2x.cpp:368:43: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> crop_tile_outputs(1);
^~~~~
waifu2x.cpp:368:43: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> crop_tile_outputs(1);
^~~~~
Mat
waifu2x.cpp:368:43: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:368:43: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> crop_tile_outputs(1);
^~~~~
Mat
waifu2x.cpp:368:48: error: template argument 1 is invalid
std::vector<ncnn::VkMat> crop_tile_outputs(1);
^
waifu2x.cpp:368:48: error: template argument 2 is invalid
waifu2x.cpp:369:81: error: ‘cmd’ was not declared in this scope
crop_tile->forward(crop_tile_inputs, crop_tile_outputs, cmd, opt);
^~~
waifu2x.cpp:371:31: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat in_tile_gpu = crop_tile_outputs[0];
^~~~~
waifu2x.cpp:371:31: note: suggested alternative: ‘Mat’
ncnn::VkMat in_tile_gpu = crop_tile_outputs[0];
^~~~~
Mat
waifu2x.cpp:376:48: error: ‘in_tile_gpu’ was not declared in this scope
ex.input("Input1", in_tile_gpu);
^~~~~~~~~~~
waifu2x.cpp:378:72: error: invalid types ‘int[int]’ for array subscript
ex.extract("Eltwise4", out_tile_x_gpus[ xi ], cmd);
^
waifu2x.cpp:383:39: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> merge_tile_x_outputs(1);
^~~~~
waifu2x.cpp:383:39: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> merge_tile_x_outputs(1);
^~~~~
Mat
waifu2x.cpp:383:39: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:383:39: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> merge_tile_x_outputs(1);
^~~~~
Mat
waifu2x.cpp:383:44: error: template argument 1 is invalid
std::vector<ncnn::VkMat> merge_tile_x_outputs(1);
^
waifu2x.cpp:383:44: error: template argument 2 is invalid
waifu2x.cpp:384:82: error: ‘cmd’ was not declared in this scope
merge_tile_x->forward(out_tile_x_gpus, merge_tile_x_outputs, cmd, opt);
^~~
waifu2x.cpp:385:41: error: invalid types ‘int[int]’ for array subscript
out_tile_y_gpus[ yi ] = merge_tile_x_outputs[0];
^
waifu2x.cpp:385:67: error: invalid types ‘int[int]’ for array subscript
out_tile_y_gpus[ yi ] = merge_tile_x_outputs[0];
^
waifu2x.cpp:389:35: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> merge_tile_y_outputs(1);
^~~~~
waifu2x.cpp:389:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> merge_tile_y_outputs(1);
^~~~~
Mat
waifu2x.cpp:389:35: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:389:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> merge_tile_y_outputs(1);
^~~~~
Mat
waifu2x.cpp:389:40: error: template argument 1 is invalid
std::vector<ncnn::VkMat> merge_tile_y_outputs(1);
^
waifu2x.cpp:389:40: error: template argument 2 is invalid
waifu2x.cpp:390:78: error: ‘cmd’ was not declared in this scope
merge_tile_y->forward(out_tile_y_gpus, merge_tile_y_outputs, cmd, opt);
^~~
waifu2x.cpp:391:17: error: ‘out_gpu’ was not declared in this scope
out_gpu = merge_tile_y_outputs[0];
^~~~~~~
waifu2x.cpp:391:49: error: invalid types ‘int[int]’ for array subscript
out_gpu = merge_tile_y_outputs[0];
^
waifu2x.cpp:396:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat crop_reference_blob;
^~~~~
waifu2x.cpp:396:23: note: suggested alternative: ‘Mat’
ncnn::VkMat crop_reference_blob;
^~~~~
Mat
waifu2x.cpp:397:17: error: ‘crop_reference_blob’ was not declared in this scope
crop_reference_blob.dims = 2;
^~~~~~~~~~~~~~~~~~~
waifu2x.cpp:401:35: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> post_crop_inputs(2);
^~~~~
waifu2x.cpp:401:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> post_crop_inputs(2);
^~~~~
Mat
waifu2x.cpp:401:35: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:401:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> post_crop_inputs(2);
^~~~~
Mat
waifu2x.cpp:401:40: error: template argument 1 is invalid
std::vector<ncnn::VkMat> post_crop_inputs(2);
^
waifu2x.cpp:401:40: error: template argument 2 is invalid
waifu2x.cpp:402:35: error: invalid types ‘int[int]’ for array subscript
post_crop_inputs[0] = out_gpu;
^
waifu2x.cpp:402:39: error: ‘out_gpu’ was not declared in this scope
post_crop_inputs[0] = out_gpu;
^~~~~~~
waifu2x.cpp:403:35: error: invalid types ‘int[int]’ for array subscript
post_crop_inputs[1] = crop_reference_blob;
^
waifu2x.cpp:405:35: error: ‘VkMat’ is not a member of ‘ncnn’
std::vector<ncnn::VkMat> post_crop_outputs(1);
^~~~~
waifu2x.cpp:405:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> post_crop_outputs(1);
^~~~~
Mat
waifu2x.cpp:405:35: error: ‘VkMat’ is not a member of ‘ncnn’
waifu2x.cpp:405:35: note: suggested alternative: ‘Mat’
std::vector<ncnn::VkMat> post_crop_outputs(1);
^~~~~
Mat
waifu2x.cpp:405:40: error: template argument 1 is invalid
std::vector<ncnn::VkMat> post_crop_outputs(1);
^
waifu2x.cpp:405:40: error: template argument 2 is invalid
waifu2x.cpp:406:73: error: ‘cmd’ was not declared in this scope
post_crop->forward(post_crop_inputs, post_crop_outputs, cmd, opt);
^~~
waifu2x.cpp:407:46: error: invalid types ‘int[int]’ for array subscript
out_gpu = post_crop_outputs[0];
^
waifu2x.cpp:412:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat out_gpu_denormed;
^~~~~
waifu2x.cpp:412:23: note: suggested alternative: ‘Mat’
ncnn::VkMat out_gpu_denormed;
^~~~~
Mat
waifu2x.cpp:413:38: error: ‘out_gpu’ was not declared in this scope
denormalize->forward(out_gpu, out_gpu_denormed, cmd, opt);
^~~~~~~
waifu2x.cpp:413:47: error: ‘out_gpu_denormed’ was not declared in this scope
denormalize->forward(out_gpu, out_gpu_denormed, cmd, opt);
^~~~~~~~~~~~~~~~
waifu2x.cpp:413:65: error: ‘cmd’ was not declared in this scope
denormalize->forward(out_gpu, out_gpu_denormed, cmd, opt);
^~~
waifu2x.cpp:420:23: error: ‘VkMat’ is not a member of ‘ncnn’
ncnn::VkMat out_gpu_fp32;
^~~~~
waifu2x.cpp:420:23: note: suggested alternative: ‘Mat’
ncnn::VkMat out_gpu_fp32;
^~~~~
Mat
waifu2x.cpp:421:50: error: ‘out_gpu’ was not declared in this scope
cast_float16_to_float32->forward(out_gpu, out_gpu_fp32, cmd, opt);
^~~~~~~
waifu2x.cpp:421:59: error: ‘out_gpu_fp32’ was not declared in this scope
cast_float16_to_float32->forward(out_gpu, out_gpu_fp32, cmd, opt);
^~~~~~~~~~~~
waifu2x.cpp:421:73: error: ‘cmd’ was not declared in this scope
cast_float16_to_float32->forward(out_gpu, out_gpu_fp32, cmd, opt);
^~~
waifu2x.cpp:427:17: error: ‘out_gpu’ was not declared in this scope
out_gpu.prepare_staging_buffer();
^~~~~~~
waifu2x.cpp:428:17: error: ‘cmd’ was not declared in this scope
cmd.record_download(out_gpu);
^~~
waifu2x.cpp:431:13: error: ‘cmd’ was not declared in this scope
cmd.submit();
^~~
waifu2x.cpp:436:29: error: ‘out_gpu’ was not declared in this scope
out.create_like(out_gpu, opt.blob_allocator);
^~~~~~~
waifu2x.cpp:459:27: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
merge_tile_x->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:462:27: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
merge_tile_y->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:465:24: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
crop_tile->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:470:42: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
cast_float32_to_float16->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:473:42: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
cast_float16_to_float32->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:477:26: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
pre_padding->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:480:24: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
post_crop->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:483:24: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
normalize->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:486:26: error: ‘class ncnn::Layer’ has no member named ‘destroy_pipeline’
denormalize->destroy_pipeline();
^~~~~~~~~~~~~~~~
waifu2x.cpp:491:12: error: type ‘<type error>’ argument given to ‘delete’, expected pointer
delete vkdev;
^~~~~
waifu2x.cpp:493:11: error: ‘destroy_gpu_instance’ is not a member of ‘ncnn’
ncnn::destroy_gpu_instance();
^~~~~~~~~~~~~~~~~~~~```
from waifu2x-ncnn-vulkan.
you have build ncnn library with NCNN_VULKAN option ON in order to use GPU capability
from waifu2x-ncnn-vulkan.
Still, but with new problems.
With NCNN_VULKAN=ON,
I compiled waifu2x with command g++ -I/root/ncnn/build/install/include -L/root/ncnn/build/install/lib -o waifu2x waifu2x.cpp
.
Even with header files and libncnn.a at where they should be, I received such error messages:
/usr/sbin/ld: /tmp/cckmwDZB.o: in function `main':
waifu2x.cpp:(.text+0x1a53b): undefined reference to `ncnn::create_gpu_instance()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a540): undefined reference to `ncnn::get_default_gpu_index()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a55b): undefined reference to `ncnn::VulkanDevice::VulkanDevice(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a571): undefined reference to `ncnn::Net::Net()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a594): undefined reference to `ncnn::Net::set_vulkan_device(ncnn::VulkanDevice const*)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a5ad): undefined reference to `ncnn::Net::load_param(char const*)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a5c6): undefined reference to `ncnn::Net::load_model(char const*)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a62e): undefined reference to `ncnn::get_default_option()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a689): undefined reference to `ncnn::VulkanDevice::allocator() const'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a69f): undefined reference to `ncnn::VulkanDevice::allocator() const'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a6b5): undefined reference to `ncnn::VulkanDevice::staging_allocator() const'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a6c6): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a6ee): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a707): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a720): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a739): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a752): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a76b): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a783): undefined reference to `ncnn::ParamDict::set(int, float)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a7ea): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a812): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a82b): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a844): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a85d): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a8c4): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a8ec): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a905): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a91e): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a93a): undefined reference to `ncnn::ParamDict::set(int, float)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a9a1): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a9c9): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a9e2): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1a9fb): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1aa17): undefined reference to `ncnn::ParamDict::set(int, float)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1aa94): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1aabc): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1aad5): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1aaee): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ab55): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ab7d): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ab96): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1abaf): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ac16): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ac3e): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ac57): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ac70): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ac89): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1aca2): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1acbb): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: /tmp/cckmwDZB.o:waifu2x.cpp:(.text+0x1acd4): more undefined references to `ncnn::ParamDict::set(int, int)' follow
/usr/sbin/ld: /tmp/cckmwDZB.o: in function `main':
waifu2x.cpp:(.text+0x1ad3b): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ad63): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ad7c): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ade3): undefined reference to `ncnn::create_layer(int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ae0b): undefined reference to `ncnn::ParamDict::ParamDict()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1ae24): undefined reference to `ncnn::ParamDict::set(int, int)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1af1b): undefined reference to `ncnn::Mat::from_pixels(unsigned char const*, int, int, int, ncnn::Allocator*)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1af43): undefined reference to `ncnn::VkCompute::VkCompute(ncnn::VulkanDevice const*)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1afb7): undefined reference to `ncnn::VkCompute::record_upload(ncnn::VkMat const&)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1b78e): undefined reference to `ncnn::Net::create_extractor() const'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1b7ab): undefined reference to `ncnn::Extractor::input(char const*, ncnn::VkMat const&)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1b7ec): undefined reference to `ncnn::Extractor::extract(char const*, ncnn::VkMat&, ncnn::VkCompute&)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1bc72): undefined reference to `ncnn::VkCompute::record_download(ncnn::VkMat const&)'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1bc81): undefined reference to `ncnn::VkCompute::submit()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1bc90): undefined reference to `ncnn::VkCompute::wait()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1bd22): undefined reference to `ncnn::Mat::to_pixels(unsigned char*, int) const'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1be24): undefined reference to `ncnn::VkCompute::~VkCompute()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1c0e3): undefined reference to `ncnn::Net::~Net()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1c0fc): undefined reference to `ncnn::VulkanDevice::~VulkanDevice()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1c10e): undefined reference to `ncnn::destroy_gpu_instance()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1c4c0): undefined reference to `ncnn::VkCompute::~VkCompute()'
/usr/sbin/ld: waifu2x.cpp:(.text+0x1c4e8): undefined reference to `ncnn::Net::~Net()'
collect2: error: ld returned 1 exit status
from waifu2x-ncnn-vulkan.
link with ncnn library, vulkan library and openmp library
in addition, cmake project file has been added, you may try it
from waifu2x-ncnn-vulkan.
Related Issues (20)
- Add a quiet output flag (-q) HOT 1
- AlmaLinux output-file not working?
- Failed to run by CPU on CentOS7 HOT 3
- double free or corruption (out) 134
- llvmpipe error HOT 4
- find_blob_index_by_name Input1 failed HOT 2
- Add support for AVIF format HOT 2
- Allow specifying multiple inputs in inputpath
- [BUG] soft links in directory are ignored
- Not running on Raspberry Pi 4, because armhf is not supported HOT 8
- Feature Request HOT 3
- Feature Request: add support for the swin_unet models
- 能否提供一个iOS或者Android的demo呢? HOT 3
- Not a issue, but there is no other way of sending a message to a coder in github
- Feature Request
- can't seem to download HOT 2
- [Feature Request] Pipe support for input/output
- Not maximizing VRAM
- riscv64移植失败
- Error:build vs2019 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from waifu2x-ncnn-vulkan.