doe300 / VC4CL

OpenCL implementation running on the VideoCore IV GPU of the Raspberry Pi models
MIT License
729 stars 81 forks source link

Errors with VC4C. How to use CPU also? Is LD_LIBRARY_PATH=/usr/local/lib/ required before programs? #45

Open gntook opened 6 years ago

gntook commented 6 years ago

Hi.

Thank you for creating VC4VL. I am very eager to implement it on several machines. On a RPi, I have compiled and installed VC4C and VC4CL including tools, but not test. I do not yet have VC4VL functional. Details of three problems follow.

(1) In VC4C ./build/test/TestVC4C gave an enormity of errors! I mean page after page. I issued this command, as root, after cmake, make, and make install of both VC4CLStdLib and VC4C (but not VC4CL). After about 45min, and two and a half pages of "64-bit operations are not supported by the VideoCore IV architecture, further compilation may fail!" the program stopped. Another shell showed cpu usage at 100%, so after 15min, I killed the program. Is this behavior normal?

(2) When I issue "cmake" in the directory named "test" I see, cmake ../test -- The C compiler identification is GNU 6.3.0 -- The CXX compiler identification is GNU 6.3.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at CMakeLists.txt:10 (ExternalProject_Get_Property): Unknown CMake command "ExternalProject_Get_Property".

CMake Warning (dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as

cmake_minimum_required(VERSION 3.7)

should be added at the top of the file. The version specified may be lower if you wish to support older CMake versions for this project. For more information run "cmake --help-policy CMP0000". This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred! See also "/home/VC4C/VC4CL/test/CMakeFiles/CMakeOutput.log".

(3) clinfo shows Device 0 when mesa-opencl-icd is installed, which I presume means it is a superfluous. Please, correct me if I am wrong. I removed mesa-opencl-icd and Device 0 disappeared. I want to do a comparison of efficacy between the GPU's and the CPU's use of OpenCL. How may I implement OpenCL support for the RPi's CPU? The full output of clinfo is below. Note, I had to use the prefix for clinfo to work.

LD_LIBRARY_PATH=/usr/local/lib/ clinfo

Number of platforms 1 Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Platform Vendor doe300 Platform Version OpenCL 1.2 VC4CL 0.4 Platform Profile EMBEDDED_PROFILE Platform Extensions cl_khr_il_program cl_khr_spir cl_altera_device_temperature cl_altera_live_object_tracking cl_khr_icd cl_vc4cl_performance_counters Platform Extensions function suffix VC4CL

Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Number of devices 1 Device Name VideoCore IV GPU Device Vendor Broadcom Device Vendor ID 0xa5c Device Version OpenCL 1.2 VC4CL 0.4 Driver Version 0.4 Device OpenCL C Version OpenCL C 1.2 Device Type GPU Device Profile EMBEDDED_PROFILE Max compute units 1 Max clock frequency 300MHz Device Partition (core) Max number of sub-devices 0 Supported partition types None Max work item dimensions 3 Max work item sizes 12x12x12 Max work group size 12 Preferred work group size multiple 1 Preferred / native vector sizes
char 16 / 16
short 16 / 16
int 16 / 16
long 0 / 0
half 0 / 0 (n/a) float 16 / 16
double 0 / 0 (n/a) Half-precision Floating-point support (n/a) Single-precision Floating-point support (core) Denormals No Infinity and NANs No Round to nearest No Round to zero Yes Round to infinity No IEEE754-2008 fused multiply-add No Support is emulated in software No Correctly-rounded divide and sqrt operations No Double-precision Floating-point support (n/a) Address bits 32, Little-Endian Global memory size 67108864 (64MiB) Error Correction support No Max memory allocation 67108864 (64MiB) Unified memory for Host and Device Yes Minimum alignment for any data type 64 bytes Alignment of base address 512 bits (64 bytes) Global Memory cache type Read/Write Global Memory cache size <printDeviceInfo:89: get CL_DEVICE_GLOBAL_MEM_CACHE_SIZE : error -30> Global Memory cache line 64 bytes Image support No Local memory type Global Local memory size 67108864 (64MiB) Max constant buffer size 67108864 (64MiB) Max number of constant args 64 Max size of kernel argument 256 Queue properties
Out-of-order execution No Profiling Yes Prefer user sync for interop Yes Profiling timer resolution 1ns Execution capabilities
Run OpenCL kernels Yes Run native kernels No printf() buffer size 0 Built-in kernels
Device Available Yes Compiler Available Yes Linker Available Yes Device Extensions cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_nv_pragma_unroll cl_arm_core_id cl_ext_atomic_counters_32 cl_khr_initialize_memory cl_arm_integer_dot_product_int8 cl_arm_integer_dot_product_accumulate_int8 cl_arm_integer_dot_product_accumulate_int16

NULL platform behavior clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...) OpenCL for the Raspberry Pi VideoCore IV GPU clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...) Success [VC4CL] clCreateContext(NULL, ...) [default] Success [VC4CL] clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU) No devices found in platform clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU) Success (1) Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Device Name VideoCore IV GPU clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR) No devices found in platform clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM) No devices found in platform clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL) Success (1) Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Device Name VideoCore IV GPU

ICD loader properties ICD loader Name OpenCL ICD Loader ICD loader Vendor OCL Icd free software ICD loader Version 2.2.11 ICD loader Profile OpenCL 2.1

How may I bring up the CPU as a second (and/or alternative) device?

My summary questions are as follows.

(1) How may I run clinfo (and other programs) without LD_LIBRARY_PATH=/usr/local/lib/ preceding a command short of making symlinks to /usr/lib/? (2) How may I bring up the CPU as a second (and/or alternative) device? (3) The device in clinfo's output is not usable owing to errors such as vc4c::CompilationError::CompilationError,vc4c::precompilation::compileOpenCLWithDefaultHeader, etc. I need to know how to diagnose the underlying cause. Is ./build/test/TestVC4C supposed to give multiple pages of errors and then freeze? If so, where else can I look?

I would be very grateful for any assistance with these problems.

doe300 commented 6 years ago

For (1): Yes, it does give a lot of errors (and runs for a long while), because it does not only contain regression tests, but it basically tests for every OpenCL C source code example I could find, where a lot of them do not compile yet. It should not hang, but it does take a long time.

For (2): If you build the top-level CMakeLists.txt, the test directory will automatically be built, if you enable the -DBUILD_TESTING=ON cmake flag.

For (3):

clinfo shows Device 0 when mesa-opencl-icd is installed, which I presume means it is a superfluous. Please, correct me if I am wrong. I removed mesa-opencl-icd and Device 0 disappeared.

So you have a device 0 when mesa is installed and it disappears when mesa is uninstalled?

How may I implement OpenCL support for the RPi's CPU?

Looks like the OpenCL support for the CPU (via mesa) is already there (if you install mesa again).

(1) How may I run clinfo (and other programs) without LD_LIBRARY_PATH=/usr/local/lib/ preceding a command short of making symlinks to /usr/lib/?

This is a common problem for some Raspbian installations. You will need to add /usr/local/lib to your library path, see here.

(2) How may I bring up the CPU as a second (and/or alternative) device?

See above, mesa is the implementation running on the CPU.

(3) The device in clinfo's output is not usable owing to errors such as vc4c::CompilationError::CompilationError,vc4c::precompilation::compileOpenCLWithDefaultHeader, etc

Where do you get these error messages? What are you trying to compile while you get them?

gntook commented 6 years ago

Thank you for the quick and thorough response.

My follow-up is in two parts.

(A) In answer to, "So you have a device 0 when mesa is installed and it disappears when mesa is uninstalled?" and "Looks like the OpenCL support for the CPU (via mesa) is already there (if you install mesa again)." My statement was misleadingly phrased and implied that I had a device. With mesa-opencl-icd, I have "devices 0" which sugggest to me that I have yet to tell OpenCL where the device (which I want to be the CPU) is. I have re-installed mesa-opencl-icd to show simply the facts. I show further details in part (B). clinfo Number of platforms 2 Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Platform Vendor doe300 Platform Version OpenCL 1.2 VC4CL 0.4 Platform Profile EMBEDDED_PROFILE Platform Extensions cl_khr_il_program cl_khr_spir cl_altera_device_temperature cl_altera_live_object_tracking cl_khr_icd cl_vc4cl_performance_counters Platform Extensions function suffix VC4CL

Platform Name Clover Platform Vendor Mesa Platform Version OpenCL 1.1 Mesa 13.0.6 Platform Profile FULL_PROFILE Platform Extensions cl_khr_icd Platform Extensions function suffix MESA

Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Number of devices 1 Device Name VideoCore IV GPU Device Vendor Broadcom Device Vendor ID 0xa5c Device Version OpenCL 1.2 VC4CL 0.4 Driver Version 0.4 Device OpenCL C Version OpenCL C 1.2 Device Type GPU Device Profile EMBEDDED_PROFILE Max compute units 1 Max clock frequency 300MHz Device Partition (core) Max number of sub-devices 0 Supported partition types None Max work item dimensions 3 Max work item sizes 12x12x12 Max work group size 12 Preferred work group size multiple 1 Preferred / native vector sizes
char 16 / 16
short 16 / 16
int 16 / 16
long 0 / 0
half 0 / 0 (n/a) float 16 / 16
double 0 / 0 (n/a) Half-precision Floating-point support (n/a) Single-precision Floating-point support (core) Denormals No Infinity and NANs No Round to nearest No Round to zero Yes Round to infinity No IEEE754-2008 fused multiply-add No Support is emulated in software No Correctly-rounded divide and sqrt operations No Double-precision Floating-point support (n/a) Address bits 32, Little-Endian Global memory size 67108864 (64MiB) Error Correction support No Max memory allocation 67108864 (64MiB) Unified memory for Host and Device Yes Minimum alignment for any data type 64 bytes Alignment of base address 512 bits (64 bytes) Global Memory cache type Read/Write Global Memory cache size <printDeviceInfo:89: get CL_DEVICE_GLOBAL_MEM_CACHE_SIZE : error -30> Global Memory cache line 64 bytes Image support No Local memory type Global Local memory size 67108864 (64MiB) Max constant buffer size 67108864 (64MiB) Max number of constant args 64 Max size of kernel argument 256 Queue properties
Out-of-order execution No Profiling Yes Prefer user sync for interop Yes Profiling timer resolution 1ns Execution capabilities
Run OpenCL kernels Yes Run native kernels No printf() buffer size 0 Built-in kernels
Device Available Yes Compiler Available Yes Linker Available Yes Device Extensions cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_nv_pragma_unroll cl_arm_core_id cl_ext_atomic_counters_32 cl_khr_initialize_memory cl_arm_integer_dot_product_int8 cl_arm_integer_dot_product_accumulate_int8 cl_arm_integer_dot_product_accumulate_int16

Platform Name Clover Number of devices 0

NULL platform behavior clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...) OpenCL for the Raspberry Pi VideoCore IV GPU clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...) Success [VC4CL] clCreateContext(NULL, ...) [default] Success [VC4CL] clCreateContext(NULL, ...) [other] clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU) No devices found in platform clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU) Success (1) Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Device Name VideoCore IV GPU clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR) No devices found in platform clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM) No devices found in platform clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL) Success (1) Platform Name OpenCL for the Raspberry Pi VideoCore IV GPU Device Name VideoCore IV GPU

ICD loader properties ICD loader Name OpenCL ICD Loader ICD loader Vendor OCL Icd free software ICD loader Version 2.2.11 ICD loader Profile OpenCL 2.1

(B) Reponding to "Where do you get these error messages? What are you trying to compile while you get them?" I see those error messages when a run "hashcat --benchmark". First (i-iii), I show how hashcat responds to mesa-opencl-icd. (It does not allow hashcat to see/use the cpu). Then (v), I follow with the errors.

(i) The output from "hashcat -I" without mesa-opencl-icd. hashcat -I hashcat (v4.2.1) starting...

OpenCL Info:

Platform ID #1 Vendor : doe300 Name : OpenCL for the Raspberry Pi VideoCore IV GPU Version : OpenCL 1.2 VC4CL 0.4

Device ID #1 Type : GPU Vendor ID : 2147483648 Vendor : Broadcom Name : VideoCore IV GPU Version : OpenCL 1.2 VC4CL 0.4 Processor(s) : 1 Clock : 300 Memory : 64/64 MB allocatable OpenCL Version : OpenCL C 1.2 Driver Version : 0.4

(ii) The output from "hashcat -I" with mesa-opencl-icd. hashcat -I hashcat (v4.2.1) starting...

clGetDeviceIDs(): CL_DEVICE_NOT_FOUND

OpenCL Info:

Platform ID #1 Vendor : doe300 Name : OpenCL for the Raspberry Pi VideoCore IV GPU Version : OpenCL 1.2 VC4CL 0.4

Device ID #1 Type : GPU Vendor ID : 2147483648 Vendor : Broadcom Name : VideoCore IV GPU Version : OpenCL 1.2 VC4CL 0.4 Processor(s) : 1 Clock : 300 Memory : 64/64 MB allocatable OpenCL Version : OpenCL C 1.2 Driver Version : 0.4

Platform ID #2 Vendor : Mesa Name : Clover Version : OpenCL 1.1 Mesa 13.0.6

(iii) With mesa-opencl-icd installed, the output of "hashmark --benchmark" up to the line prior to the errors. Note, "CL_DEVICE_NOT_FOUND" does not appear when mesa-opencl-icd is not installed (shown below). hashcat --benchmark hashcat (v4.2.1) starting in benchmark mode...

Benchmarking uses hand-optimized kernel code by default. You can use it in your cracking session by setting the -O option. Note: Using optimized kernel code limits the maximum supported password length. To disable the optimized kernel code in benchmark mode, use the -w option.

clGetDeviceIDs(): CL_DEVICE_NOT_FOUND

clGetDeviceIDs(): CL_DEVICE_NOT_FOUND

OpenCL Platform #1: doe300

OpenCL Platform #2: Mesa, skipped or no OpenCL compatible devices found.

Benchmark relevant options:

Hashmode: 0 - MD5

clBuildProgram(): CL_COMPILE_PROGRAM_FAILURE

(iv) Without mesa-opencl-icd installed (i.e. I just did "apt-get purge mesa-opencl-icd), the full output of "hashmark --benchmark". hashcat --benchmark hashcat (v4.2.1) starting in benchmark mode...

Benchmarking uses hand-optimized kernel code by default. You can use it in your cracking session by setting the -O option. Note: Using optimized kernel code limits the maximum supported password length. To disable the optimized kernel code in benchmark mode, use the -w option.

OpenCL Platform #1: doe300

Benchmark relevant options:

Hashmode: 0 - MD5

clBuildProgram(): CL_COMPILE_PROGRAM_FAILURE

[E] Mon Oct 8 21:01:22 2018: (1) /usr/local/lib/libVC4CC.so.1.2 : vc4c::CompilationError::CompilationError(vc4c::CompilationStep, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)+0xf4 [0x6fd560cc] [E] Mon Oct 8 21:01:22 2018: (2) /usr/local/lib/libVC4CC.so.1.2 : +0x4e7b54 [0x6fd87b54] [E] Mon Oct 8 21:01:22 2018: (3) /usr/local/lib/libVC4CC.so.1.2 : vc4c::runProcess(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::istream, std::ostream, std::ostream*)+0x3b4 [0x6fd887e4] [E] Mon Oct 8 21:01:22 2018: (4) /usr/local/lib/libVC4CC.so.1.2 : +0x76ae74 [0x7000ae74] [E] Mon Oct 8 21:01:22 2018: (5) /usr/local/lib/libVC4CC.so.1.2 : +0x76b3d8 [0x7000b3d8] [E] Mon Oct 8 21:01:22 2018: (6) /usr/local/lib/libVC4CC.so.1.2 : vc4c::precompilation::compileOpenCLWithDefaultHeader(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)+0x64 [0x7000b79c] [E] Mon Oct 8 21:01:22 2018: (7) /usr/local/lib/libVC4CC.so.1.2 : std::_Function_handler<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&), void (*)(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)>::_M_invoke(std::_Any_data const&, vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)+0x60 [0x7000ed5c] [E] Mon Oct 8 21:01:22 2018: (8) /usr/local/lib/libVC4CC.so.1.2 : std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)>::operator()(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&) const+0x78 [0x7000dd00] [E] Mon Oct 8 21:01:22 2018: (9) /usr/local/lib/libVC4CC.so.1.2 : std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)> vc4c::precompilation::chainSteps<(vc4c::SourceType)3, (vc4c::SourceType)1, (vc4c::SourceType)3>(std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)> const&, std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)3>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)> const&)::{lambda(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)#1}::operator()(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&) const+0xa0 [0x7000ce6c] [E] Mon Oct 8 21:01:22 2018: (10) /usr/local/lib/libVC4CC.so.1.2 : std::_Function_handler<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&), std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)> vc4c::precompilation::chainSteps<(vc4c::SourceType)3, (vc4c::SourceType)1, (vc4c::SourceType)3>(std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)> const&, std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)3>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)> const&)::{lambda(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)#1}>::_M_invoke(std::_Any_data const&, vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)+0x5c [0x7000f130] [E] Mon Oct 8 21:01:22 2018: (11) /usr/local/lib/libVC4CC.so.1.2 : std::function<void (vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&)>::operator()(vc4c::precompilation::PrecompilationSource<(vc4c::SourceType)1>&&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::precompilation::PrecompilationResult<(vc4c::SourceType)3>&) const+0x78 [0x7000dd00] [E] Mon Oct 8 21:01:22 2018: (12) /usr/local/lib/libVC4CC.so.1.2 : vc4c::Precompiler::run(std::unique_ptr<std::istream, std::default_delete >&, vc4c::SourceType, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::Optional<std::cxx11::basic_string<char, std::char_traits, std::allocator > >)+0x5e4 [0x70013cac] [E] Mon Oct 8 21:01:22 2018: (13) /usr/local/lib/libVC4CC.so.1.2 : vc4c::Precompiler::precompile(std::istream&, std::unique_ptr<std::istream, std::default_delete >&, vc4c::Configuration, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, vc4c::Optional<std::cxx11::basic_string<char, std::char_traits, std::allocator > > const&, vc4c::Optional<std::cxx11::basic_string<char, std::char_traits, std::allocator > >)+0x164 [0x70011ad8] [E] Mon Oct 8 21:01:22 2018: (14) /usr/local/lib/libVC4CL.so : +0x571ac [0x701541ac] [E] Mon Oct 8 21:01:22 2018: (15) /usr/local/lib/libVC4CL.so : vc4cl::Program::compile(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::unordered_map<std::cxx11::basic_string<char, std::char_traits, std::allocator >, vc4cl::object_wrapper, std::hash<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::equal_to<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, vc4cl::object_wrapper > > > const&, void ()(_cl_program, void), void)+0xd8 [0x70154c48] [E] Mon Oct 8 21:01:22 2018: (16) /usr/local/lib/libVC4CL.so : VC4CL_clBuildProgram+0x1d4 [0x7015a644]

Started: Mon Oct 8 21:01:16 2018 Stopped: Mon Oct 8 21:01:22 2018 terminate called without an active exception Aborted

I welcome your thoughts on fixing the issue with the use of the GPU and having OpenCL recognize the CPU.

doe300 commented 6 years ago

Okay, so why the Mesa implementation has no devices, I don't know.

As to the compilation errors in hashcat: It looks like some error occurs in the precompilation (CLang trying to compile the OpenCL C code). I don't know why the actual error message is not printed though...

gntook commented 6 years ago
When running TestVC4CL I have results similar to the first output here, "TestVC4C & TestVC4CL Error #33" - https://github.com/doe300/VC4CL/issues/33

./build/test/TestVC4CL Test 'TestExecutions::testSFU()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 205 Failure: Got -50, expected 0 Test 'TestExecutions::testSFU()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 212 Failure: Got -52, expected 0 Test 'TestExecutions::testSFU()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 213 Failure: Assertion 'event != nullptr' failed Test 'TestExecutions::testSFU()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 215 Failure: Got -58, expected 0 Test 'TestExecutions::testSFU()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 232 Failure: Got -58, expected 0 Test 'TestExecutions::testWorkItems()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 325 Failure: Got -50, expected 0 Test 'TestExecutions::testWorkItems()' failed! Suite: TestExecutions File: TestExecutions.cpp Line: 330 Failure: Got -52, expected 0 ..."Line" increases by 1 each time up to "Line: 455" ending with, Suite 'TestExecutions' finished, 12/15 successful (80%) in 23737809 microseconds (23737.8 ms).

How do I run the latter tests on the link? Or am I misinterpreting what I see?

Also, could you tell me what I can/should do to compile CLang (instead of using the Raspian package) such that it gives debug information? I would prefer to create the custom .deb(s) from the edited source .deb(s), rather than the tarball, but I suppose either would do.