Coder Social home page Coder Social logo

Comments (6)

ArchieMeng avatar ArchieMeng commented on July 22, 2024 1

Great! It works, and it is super fast on my Intel GPU.

from waifu2x-ncnn-vulkan.

nihui avatar nihui commented on July 22, 2024

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.

ArchieMeng avatar ArchieMeng commented on July 22, 2024

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.

nihui avatar nihui commented on July 22, 2024

you have build ncnn library with NCNN_VULKAN option ON in order to use GPU capability

from waifu2x-ncnn-vulkan.

ArchieMeng avatar ArchieMeng commented on July 22, 2024

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.

nihui avatar nihui commented on July 22, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.