rpi5 supported?
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. |
'-----------------------------------------------------------------------------'
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!
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;
| ^
.