clvk icon indicating copy to clipboard operation
clvk copied to clipboard

rpi5 supported?

Open void-512 opened this issue 6 months ago • 4 comments

Configured with default options, successfully compiled but failed to run either geekbench5 or OpenCL-Benchmark Geekbench5:

[0616/091851:ERROR:src/interface/console/consolemain.cpp(818)] Geekbench encountered an internal error and cannot continue. Please contact [email protected] for assistance.

Internal error message: std::bad_cast.

OpenCL-Benchmark:

/usr/bin/ld: skipping incompatible ./src/OpenCL/lib/libOpenCL.so when searching for -lOpenCL
.-----------------------------------------------------------------------------.
|----------------.------------------------------------------------------------|
| Device ID    0 | V3D 7.1.10.2                                               |
| Device ID    1 | llvmpipe (LLVM 15.0.6, 128 bits)                           |
|----------------'------------------------------------------------------------|
|----------------.------------------------------------------------------------|
| Device ID      | 0                                                          |
| Device Name    | V3D 7.1.10.2                                               |
| Device Vendor  | Unknown vendor                                             |
| Device Driver  | 3.0 CLVK on Vulkan v1.2.289 driver 100671496 (Linux)       |
| OpenCL Version | OpenCL C 3.0                                               |
| Compute Units  | 1 at 0 MHz (1 cores, 0.000 TFLOPs/s)                       |
| Memory, Cache  | 4096 MB RAM, 0 KB global / 16 KB local                     |
| Buffer Limits  | 1024 MB global, 64 KB constant                             |
|----------------'------------------------------------------------------------|
error: 1273: Expected input to have different bit width from Result Type: SConvert
  %1148 = OpSConvert %uint %1147

| Warning:                                                                    |
| Error: OpenCL C code compilation failed with error code -11. Make sure      |
|        there are no errors in kernel.cpp.                                   |
'-----------------------------------------------------------------------------'

void-512 avatar Jun 16 '25 13:06 void-512

Got some tests failed with api_tests

api_tests.log

Hope that might help

void-512 avatar Jun 17 '25 03:06 void-512

Thanks for reporting this! It seems, after a quick skim of your log, that the api_tests issues are unrelated to the failure with Geekbench. The latter is caused by incorrect code generated by clspv. It would really help us solve this if you could capture a reproducer. To do so you can run with CLVK_KEEP_TEMPORARIES=1 CLVK_LOG=4 CLVK_LOG_DEST=file:clvk.log in the environment, archive all the generated clvk-XXXXX folders and clvk.log, and attach the archive to this issue. Thanks!

kpet avatar Jun 17 '25 22:06 kpet

clvk.zip

Will the geekbench problem also be solved later?

void-512 avatar Jun 18 '25 01:06 void-512

Hello, currently Geekbench 6 is still not working with clvk

OpenCL
  Running Background Blur
error: 2446: Expected input to have the same dimension as Result Type: ConvertUToF
  %1761 = OpConvertUToF %v4float %1759

[1020/170918:ERROR:consolemain.cpp(993)] Geekbench encountered an internal error and cannot continue. Please contact [email protected] for assistance.

Internal error message: clBuildProgram() failed: clvk-JwpORG/source.cl:11:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   11 |   int x = get_global_id(0);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:12:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   12 |   int y = get_global_id(1);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:28:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   28 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:37:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   37 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:43:9: warning: mixing declarations and code is incompatible with standards before C99
   43 |   float value = input[idx];
      |         ^
clvk-JwpORG/source.cl:56:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   56 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:66:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   66 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:76:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
   76 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:84:5: warning: no previous prototype for function 'round_power_of_2'
   84 | int round_power_of_2(int x)
      |     ^
clvk-JwpORG/source.cl:84:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   84 | int round_power_of_2(int x)
      | ^
      | static
clvk-JwpORG/source.cl:100:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  100 |   int idx = get_local_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:101:20: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  101 |   int local_size = get_local_size(0);
      |       ~~~~~~~~~~   ^~~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:104:44: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  104 |   for (int global_offset = get_group_id(0) * stride; global_offset < elements; global_offset += get_num_groups(0) * stride) {
      |            ~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~~^~~~~~~~
clvk-JwpORG/source.cl:104:46: warning: implicit conversion changes signedness: 'int' to '__size_t' (aka 'unsigned int')
  104 |   for (int global_offset = get_group_id(0) * stride; global_offset < elements; global_offset += get_num_groups(0) * stride) {
      |                                            ~ ^~~~~~
clvk-JwpORG/source.cl:104:117: warning: implicit conversion changes signedness: 'int' to '__size_t' (aka 'unsigned int')
  104 |   for (int global_offset = get_group_id(0) * stride; global_offset < elements; global_offset += get_num_groups(0) * stride) {
      |                                                                                                                   ~ ^~~~~~
clvk-JwpORG/source.cl:123:9: warning: mixing declarations and code is incompatible with standards before C99
  123 |     int offset = buf_size / 2;
      |         ^
clvk-JwpORG/source.cl:184:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  184 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:190:10: warning: mixing declarations and code is incompatible with standards before C99
  190 |   float2 values = input[idx];
      |          ^
clvk-JwpORG/source.cl:202:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  202 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:216:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  216 |   int x = get_global_id(0);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:217:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  217 |   int y = get_global_id(1);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:224:7: warning: mixing declarations and code is incompatible with standards before C99
  224 |   int kernel_count_x = (input_width / channels - kernel_width / channels) / stride_width + 1;
      |       ^
clvk-JwpORG/source.cl:211:48: warning: unused parameter 'input_height'
  211 |                           int input_width, int input_height,
      |                                                ^
clvk-JwpORG/source.cl:212:49: warning: unused parameter 'kernel_height'
  212 |                           int kernel_width, int kernel_height,
      |                                                 ^
clvk-JwpORG/source.cl:246:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  246 |   int x = get_global_id(0);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:247:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  247 |   int y = get_global_id(1);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:254:7: warning: mixing declarations and code is incompatible with standards before C99
  254 |   int padded_width = input_width + border_width * channels;
      |       ^
clvk-JwpORG/source.cl:242:49: warning: unused parameter 'kernel_height'
  242 |                           int kernel_width, int kernel_height,
      |                                                 ^
clvk-JwpORG/source.cl:315:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  315 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:321:7: warning: mixing declarations and code is incompatible with standards before C99
  321 |   int c = idx % channels;
      |       ^
clvk-JwpORG/source.cl:353:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  353 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:353:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  353 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:379:11: warning: mixing declarations and code is incompatible with standards before C99
  379 |       int input_idx = iy * input_width * channels + ix * channels + channel;
      |           ^
clvk-JwpORG/source.cl:359:7: warning: mixing declarations and code is incompatible with standards before C99
  359 |   int channel = gid.x % channels;
      |       ^
clvk-JwpORG/source.cl:397:11: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  397 |   int c = get_global_id(0);
      |       ~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:403:9: warning: mixing declarations and code is incompatible with standards before C99
  403 |   float sum = 0.0f;
      |         ^
clvk-JwpORG/source.cl:415:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  415 |   int idx = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:424:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  424 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:424:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  424 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:430:7: warning: mixing declarations and code is incompatible with standards before C99
  430 |   int channel = gid.x % channels;
      |       ^
clvk-JwpORG/source.cl:460:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  460 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:460:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  460 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:466:7: warning: mixing declarations and code is incompatible with standards before C99
  466 |   int n = gid.y / output_height;
      |       ^
clvk-JwpORG/source.cl:501:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  501 |   int gid = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:512:13: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  512 |   int gid = get_global_id(0);
      |       ~~~   ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:525:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  525 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:525:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  525 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:551:25: warning: cast from function call of type 'float' to non-matching type 'int'
  551 |   int y_high = min((int)ceil(y), output_height - 1);
      |                         ^~~~~~~
clvk-JwpORG/source.cl:559:25: warning: cast from function call of type 'float' to non-matching type 'int'
  559 |   int x_high = min((int)ceil(x), output_width);
      |                         ^~~~~~~
clvk-JwpORG/source.cl:531:9: warning: mixing declarations and code is incompatible with standards before C99
  531 |   float x_ratio = 0.0f;
      |         ^
clvk-JwpORG/source.cl:601:7: warning: implicit conversion changes signedness: 'int' to '__size_t' (aka 'unsigned int')
  601 |   dst[dst_offset + get_global_id(0)] = src[src_offset + get_global_id(0)];
      |       ^~~~~~~~~~ ~
clvk-JwpORG/source.cl:601:44: warning: implicit conversion changes signedness: 'int' to '__size_t' (aka 'unsigned int')
  601 |   dst[dst_offset + get_global_id(0)] = src[src_offset + get_global_id(0)];
      |                                            ^~~~~~~~~~ ~
clvk-JwpORG/source.cl:597:24: warning: comparison of integers of different signs: '__size_t' (aka 'unsigned int') and '__private int'
  597 |   if (get_global_id(0) >= elements) {
      |       ~~~~~~~~~~~~~~~~ ^  ~~~~~~~~
clvk-JwpORG/source.cl:607:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  607 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:607:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  607 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:613:7: warning: mixing declarations and code is incompatible with standards before C99
  613 |   int batch = gid.y / height;
      |       ^
clvk-JwpORG/source.cl:624:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  624 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:624:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  624 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:630:7: warning: mixing declarations and code is incompatible with standards before C99
  630 |   int src_idx = gid.y * width * channels + gid.x;
      |       ^
clvk-JwpORG/source.cl:638:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  638 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:638:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  638 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:644:7: warning: mixing declarations and code is incompatible with standards before C99
  644 |   int x = gid.x / channels;
      |       ^
clvk-JwpORG/source.cl:655:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  655 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:655:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  655 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:665:15: warning: implicit conversion turns floating-point number into integer: 'float' to 'int'
  665 |   int src_x = floor(dst_x * scale_width);
      |       ~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:665:21: warning: implicit conversion from 'int' to 'float' may lose precision
  665 |   int src_x = floor(dst_x * scale_width);
      |                     ^~~~~ ~
clvk-JwpORG/source.cl:666:15: warning: implicit conversion turns floating-point number into integer: 'float' to 'int'
  666 |   int src_y = floor(dst_y * scale_height);
      |       ~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:666:21: warning: implicit conversion from 'int' to 'float' may lose precision
  666 |   int src_y = floor(dst_y * scale_height);
      |                     ^~~~~ ~
clvk-JwpORG/source.cl:661:7: warning: mixing declarations and code is incompatible with standards before C99
  661 |   int dst_x = gid.x / channels;
      |       ^
clvk-JwpORG/source.cl:653:139: warning: unused parameter 'input_height'
  653 | kernel void nearest_neighbor(const global float* input, global float* output, float scale_width, float scale_height, int input_width, int input_height, int output_width, int output_height, int channels)
      |                                                                                                                                           ^
clvk-JwpORG/source.cl:681:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  681 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:681:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  681 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:687:10: warning: mixing declarations and code is incompatible with standards before C99
  687 |   uchar4 px = src[gid.y * src_stride + gid.x];
      |          ^
clvk-JwpORG/source.cl:698:5: warning: no previous prototype for function 'arg_max'
  698 | int arg_max(const global float* data, int length)
      |     ^
clvk-JwpORG/source.cl:698:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
  698 | int arg_max(const global float* data, int length)
      | ^
      | static
clvk-JwpORG/source.cl:720:39: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  720 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~                  ^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:720:21: warning: implicit conversion changes signedness: '__size_t' (aka 'unsigned int') to 'int'
  720 |   int2 gid = (int2)(get_global_id(0), get_global_id(1));
      |                    ~^~~~~~~~~~~~~~~~
clvk-JwpORG/source.cl:726:7: warning: mixing declarations and code is incompatible with standards before C99
  726 |   int offset = (gid.y * width + gid.x) * categories;
      |       ^
.

void-512 avatar Oct 20 '25 21:10 void-512