coaster
coaster copied to clipboard
OpenCL memory allocation fails at least in test
https://ci.spearow.io/teams/spearow/pipelines/juice/jobs/test-coaster/builds/69
# RUST_BACKTRACE=1 cargo t --verbose -- --nocapture backend_spec::opencl
Fresh rustc-serialize v0.3.24
Fresh num-traits v0.1.40
Fresh libc v0.2.31
Fresh lazy_static v0.1.16
Fresh bitflags v0.3.3
Fresh utf8-ranges v1.0.0
Fresh byteorder v0.4.2
Fresh regex-syntax v0.4.1
Fresh lazy_static v0.2.8
Fresh void v1.0.2
Fresh enum_primitive v0.1.1
Fresh num-integer v0.1.35
Fresh num-complex v0.1.40
Fresh rand v0.3.16
Fresh memchr v1.0.1
Fresh unreachable v1.0.0
Fresh num-iter v0.1.34
Fresh num-bigint v0.1.40
Fresh aho-corasick v0.6.3
Fresh thread_local v0.3.4
Fresh num-rational v0.1.39
Fresh regex v0.2.2
Fresh num v0.1.40
Fresh coaster v0.1.0 (file:///tmp/build/74b91f0c/coaster)
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `/tmp/build/74b91f0c/coaster/target/debug/deps/coaster-4378b988abc30558 --nocapture 'backend_spec::opencl'`
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running `/tmp/build/74b91f0c/coaster/target/debug/deps/backend_specs-d18603f981e40185 --nocapture 'backend_spec::opencl'`
running 2 tests
error: process didn't exit successfully: `/tmp/build/74b91f0c/coaster/target/debug/deps/backend_specs-d18603f981e40185 --nocapture backend_spec::opencl` (signal: 11, SIGSEGV: invalid memory reference)
Backend::<OpenCL>::default()
fails and thus it_can_create_default_backend
fails. it_can_manually_create_default_backend
works.
It works because it is missing the assert!
statement.
Err(Framework(OpenCL(InvalidDevice("devices contains an invalid device."))))
is the core issue, OpenCL return code -33
.
It seems that at least intel
beignet
opencl
implementation can not handle multiple devices
from different platforms all at once. using just the first works fine. Removing pocl
for possible interference.
There is also amdgpu-pro opencl missing in the containers...
Result:
- without
pocl
things work again, but... - there is only one
cl_platform
left, which - requires AMDGPU-PRO to install the OpenCL part on root and in the container to verify if this is a red hering or not
clContextCreate
does not state any constraints regarding the list of devices allowed to be passed.
Actually POCL is the CPU implementation, so that should be fine.