https://bugs.archlinux.org/task/53018 When trying to execute opencl hello world from apple site, the following error appears: ./hello Error: Failed to build program executable! <unknown>:0:0: in function square void (float addrspace(1)*, float addrspace(1)*, i32): unsupported call to function get_local_size Additional info: * package version(s) opencl-mesa 17.0.0-1 https://developer.apple.com/library/content/samplecode/OpenCL_Hello_World_Example/Listings/hello_c.html#//apple_ref/doc/uid/DTS40008187-hello_c-DontLinkElementID_4 * config and/or log files etc. Number of platforms 1 Platform Name Clover Platform Vendor Mesa Platform Version OpenCL 1.1 Mesa 17.0.0 Platform Profile FULL_PROFILE Platform Extensions cl_khr_icd Platform Extensions function suffix MESA Platform Name Clover Number of devices 1 Device Name AMD CAPE VERDE (DRM 2.48.0 / 4.9.8-1-ARCH, LLVM 3.9.1) Device Vendor AMD Device Vendor ID 0x1002 Device Version OpenCL 1.1 Mesa 17.0.0 (...)
This function should be provided by libclc. Do you have it installed?
Yes: Nome : libclc Versão : 0.2.0+334+520743b-1 Descrição : Library requirements of the OpenCL C programming language Arquitetura : any URL : http://libclc.llvm.org/ Licenças : MIT Grupos : Nenhum Provê : Nenhum Depende de : Nenhum Depend. opcionais : Nenhum Necessário para : Nenhum Opcional para : Nenhum Conflita com : Nenhum Substitui : Nenhum Tamanho instalado : 35,96 MiB Empacotador : Laurent Carlier <lordheavym@gmail.com> Data da compilação : qui 27 out 2016 08:58:06 BRST Data de instalação : qua 02 nov 2016 16:03:36 BRST Motivo da instalação : Instalado como dependência de outro pacote Script de instalação : Não Validado por : Assinatura
On Fedora 25 with custom-compiled LLVM, libclc, and Mesa: $ gcc -lOpenCL -lm hello.c hello.c: In function ‘main’: hello.c:269:5: warning: ‘clCreateCommandQueue’ is deprecated [-Wdeprecated-declarations] commands = clCreateCommandQueue(context, device_id, 0, &err); ^~~~~~~~ In file included from hello.c:121:0: /usr/include/CL/cl.h:1427:1: note: declared here clCreateCommandQueue(cl_context /* context */, ^~~~~~~~~~~~~~~~~~~~ $ ./hello Computed '1024/1024' correct values! I would say this is a distribution issue.
I've been having the same issue on Gentoo for a while with Mesa and libdrm from git master, and it appears someone's been having the same problem with the Debian-packaged version of Mesa too: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848258 So if it is a distro issue it's one that affects multiple distros. There's a comment on the Debian bug from a Debian developer/AMD employee complaining that it's an upstream bug too.
I'll try with an upstream environment and generate strace output soon
(In reply to Henrique Dante de Almeida from comment #2) > Yes: > > Nome : libclc > Versão : 0.2.0+334+520743b-1 > Descrição : Library requirements of the OpenCL C programming > language > Arquitetura : any > URL : http://libclc.llvm.org/ > Licenças : MIT > Grupos : Nenhum > Provê : Nenhum > Depende de : Nenhum > Depend. opcionais : Nenhum > Necessário para : Nenhum > Opcional para : Nenhum > Conflita com : Nenhum > Substitui : Nenhum > Tamanho instalado : 35,96 MiB > Empacotador : Laurent Carlier <lordheavym@gmail.com> > Data da compilação : qui 27 out 2016 08:58:06 BRST > Data de instalação : qua 02 nov 2016 16:03:36 BRST > Motivo da instalação : Instalado como dependência de outro pacote > Script de instalação : Não > Validado por : Assinatura can you post the list of files installed by this package?
libclc /usr/ libclc /usr/include/ libclc /usr/include/clc/ libclc /usr/include/clc/as_type.h libclc /usr/include/clc/async/ libclc /usr/include/clc/async/async_work_group_copy.h libclc /usr/include/clc/async/async_work_group_copy.inc libclc /usr/include/clc/async/async_work_group_strided_copy.h libclc /usr/include/clc/async/async_work_group_strided_copy.inc libclc /usr/include/clc/async/gentype.inc libclc /usr/include/clc/async/prefetch.h libclc /usr/include/clc/async/prefetch.inc libclc /usr/include/clc/async/wait_group_events.h libclc /usr/include/clc/atomic/ libclc /usr/include/clc/atomic/atomic_add.h libclc /usr/include/clc/atomic/atomic_and.h libclc /usr/include/clc/atomic/atomic_cmpxchg.h libclc /usr/include/clc/atomic/atomic_dec.h libclc /usr/include/clc/atomic/atomic_decl.inc libclc /usr/include/clc/atomic/atomic_inc.h libclc /usr/include/clc/atomic/atomic_max.h libclc /usr/include/clc/atomic/atomic_min.h libclc /usr/include/clc/atomic/atomic_or.h libclc /usr/include/clc/atomic/atomic_sub.h libclc /usr/include/clc/atomic/atomic_xchg.h libclc /usr/include/clc/atomic/atomic_xor.h libclc /usr/include/clc/cl_khr_global_int32_base_atomics/ libclc /usr/include/clc/cl_khr_global_int32_base_atomics/atom_add.h libclc /usr/include/clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h libclc /usr/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h libclc /usr/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h libclc /usr/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h libclc /usr/include/clc/cl_khr_global_int32_base_atomics/atom_xchg.h libclc /usr/include/clc/cl_khr_global_int32_extended_atomics/ libclc /usr/include/clc/cl_khr_global_int32_extended_atomics/atom_and.h libclc /usr/include/clc/cl_khr_global_int32_extended_atomics/atom_max.h libclc /usr/include/clc/cl_khr_global_int32_extended_atomics/atom_min.h libclc /usr/include/clc/cl_khr_global_int32_extended_atomics/atom_or.h libclc /usr/include/clc/cl_khr_global_int32_extended_atomics/atom_xor.h libclc /usr/include/clc/cl_khr_local_int32_base_atomics/ libclc /usr/include/clc/cl_khr_local_int32_base_atomics/atom_add.h libclc /usr/include/clc/cl_khr_local_int32_base_atomics/atom_cmpxchg.h libclc /usr/include/clc/cl_khr_local_int32_base_atomics/atom_dec.h libclc /usr/include/clc/cl_khr_local_int32_base_atomics/atom_inc.h libclc /usr/include/clc/cl_khr_local_int32_base_atomics/atom_sub.h libclc /usr/include/clc/cl_khr_local_int32_base_atomics/atom_xchg.h libclc /usr/include/clc/cl_khr_local_int32_extended_atomics/ libclc /usr/include/clc/cl_khr_local_int32_extended_atomics/atom_and.h libclc /usr/include/clc/cl_khr_local_int32_extended_atomics/atom_max.h libclc /usr/include/clc/cl_khr_local_int32_extended_atomics/atom_min.h libclc /usr/include/clc/cl_khr_local_int32_extended_atomics/atom_or.h libclc /usr/include/clc/cl_khr_local_int32_extended_atomics/atom_xor.h libclc /usr/include/clc/clc.h libclc /usr/include/clc/clcfunc.h libclc /usr/include/clc/clctypes.h libclc /usr/include/clc/clcversion.h libclc /usr/include/clc/common/ libclc /usr/include/clc/common/degrees.h libclc /usr/include/clc/common/degrees.inc libclc /usr/include/clc/common/mix.h libclc /usr/include/clc/common/mix.inc libclc /usr/include/clc/common/radians.h libclc /usr/include/clc/common/radians.inc libclc /usr/include/clc/common/sign.h libclc /usr/include/clc/common/smoothstep.h libclc /usr/include/clc/common/smoothstep.inc libclc /usr/include/clc/common/step.h libclc /usr/include/clc/common/step.inc libclc /usr/include/clc/convert.h libclc /usr/include/clc/float/ libclc /usr/include/clc/float/definitions.h libclc /usr/include/clc/geometric/ libclc /usr/include/clc/geometric/cross.h libclc /usr/include/clc/geometric/distance.h libclc /usr/include/clc/geometric/distance.inc libclc /usr/include/clc/geometric/dot.h libclc /usr/include/clc/geometric/dot.inc libclc /usr/include/clc/geometric/fast_distance.h libclc /usr/include/clc/geometric/fast_distance.inc libclc /usr/include/clc/geometric/fast_length.h libclc /usr/include/clc/geometric/fast_length.inc libclc /usr/include/clc/geometric/fast_normalize.h libclc /usr/include/clc/geometric/fast_normalize.inc libclc /usr/include/clc/geometric/floatn.inc libclc /usr/include/clc/geometric/length.h libclc /usr/include/clc/geometric/length.inc libclc /usr/include/clc/geometric/normalize.h libclc /usr/include/clc/geometric/normalize.inc libclc /usr/include/clc/image/ libclc /usr/include/clc/image/image.h libclc /usr/include/clc/image/image_defines.h libclc /usr/include/clc/integer/ libclc /usr/include/clc/integer/abs.h libclc /usr/include/clc/integer/abs.inc libclc /usr/include/clc/integer/abs_diff.h libclc /usr/include/clc/integer/abs_diff.inc libclc /usr/include/clc/integer/add_sat.h libclc /usr/include/clc/integer/add_sat.inc libclc /usr/include/clc/integer/clz.h libclc /usr/include/clc/integer/clz.inc libclc /usr/include/clc/integer/definitions.h libclc /usr/include/clc/integer/gentype.inc libclc /usr/include/clc/integer/hadd.h libclc /usr/include/clc/integer/hadd.inc libclc /usr/include/clc/integer/integer-gentype.inc libclc /usr/include/clc/integer/mad24.h libclc /usr/include/clc/integer/mad24.inc libclc /usr/include/clc/integer/mad_hi.h libclc /usr/include/clc/integer/mad_sat.h libclc /usr/include/clc/integer/mad_sat.inc libclc /usr/include/clc/integer/mul24.h libclc /usr/include/clc/integer/mul24.inc libclc /usr/include/clc/integer/mul_hi.h libclc /usr/include/clc/integer/mul_hi.inc libclc /usr/include/clc/integer/rhadd.h libclc /usr/include/clc/integer/rhadd.inc libclc /usr/include/clc/integer/rotate.h libclc /usr/include/clc/integer/rotate.inc libclc /usr/include/clc/integer/sub_sat.h libclc /usr/include/clc/integer/sub_sat.inc libclc /usr/include/clc/integer/upsample.h libclc /usr/include/clc/math/ libclc /usr/include/clc/math/acos.h libclc /usr/include/clc/math/acos.inc libclc /usr/include/clc/math/acosh.h libclc /usr/include/clc/math/acosh.inc libclc /usr/include/clc/math/acospi.h libclc /usr/include/clc/math/acospi.inc libclc /usr/include/clc/math/asin.h libclc /usr/include/clc/math/asin.inc libclc /usr/include/clc/math/asinh.h libclc /usr/include/clc/math/asinh.inc libclc /usr/include/clc/math/asinpi.h libclc /usr/include/clc/math/asinpi.inc libclc /usr/include/clc/math/atan.h libclc /usr/include/clc/math/atan.inc libclc /usr/include/clc/math/atan2.h libclc /usr/include/clc/math/atan2.inc libclc /usr/include/clc/math/atan2pi.h libclc /usr/include/clc/math/atan2pi.inc libclc /usr/include/clc/math/atanh.h libclc /usr/include/clc/math/atanh.inc libclc /usr/include/clc/math/atanpi.h libclc /usr/include/clc/math/atanpi.inc libclc /usr/include/clc/math/binary_decl.inc libclc /usr/include/clc/math/binary_intrin.inc libclc /usr/include/clc/math/cbrt.h libclc /usr/include/clc/math/cbrt.inc libclc /usr/include/clc/math/ceil.h libclc /usr/include/clc/math/clc_nextafter.h libclc /usr/include/clc/math/copysign.h libclc /usr/include/clc/math/copysign.inc libclc /usr/include/clc/math/cos.h libclc /usr/include/clc/math/cos.inc libclc /usr/include/clc/math/cosh.h libclc /usr/include/clc/math/cosh.inc libclc /usr/include/clc/math/cospi.h libclc /usr/include/clc/math/cospi.inc libclc /usr/include/clc/math/erf.h libclc /usr/include/clc/math/erfc.h libclc /usr/include/clc/math/exp.h libclc /usr/include/clc/math/exp10.h libclc /usr/include/clc/math/exp2.h libclc /usr/include/clc/math/exp2.inc libclc /usr/include/clc/math/fabs.h libclc /usr/include/clc/math/fdim.h libclc /usr/include/clc/math/fdim.inc libclc /usr/include/clc/math/floor.h libclc /usr/include/clc/math/fma.h libclc /usr/include/clc/math/fmax.h libclc /usr/include/clc/math/fmin.h libclc /usr/include/clc/math/fmod.h libclc /usr/include/clc/math/fmod.inc libclc /usr/include/clc/math/fract.h libclc /usr/include/clc/math/fract.inc libclc /usr/include/clc/math/frexp.h libclc /usr/include/clc/math/frexp.inc libclc /usr/include/clc/math/gentype.inc libclc /usr/include/clc/math/half_rsqrt.h libclc /usr/include/clc/math/half_sqrt.h libclc /usr/include/clc/math/hypot.h libclc /usr/include/clc/math/hypot.inc libclc /usr/include/clc/math/ilogb.h libclc /usr/include/clc/math/ilogb.inc libclc /usr/include/clc/math/ldexp.h libclc /usr/include/clc/math/ldexp.inc libclc /usr/include/clc/math/lgamma.h libclc /usr/include/clc/math/lgamma.inc libclc /usr/include/clc/math/lgamma_r.h libclc /usr/include/clc/math/lgamma_r.inc libclc /usr/include/clc/math/log.h libclc /usr/include/clc/math/log.inc libclc /usr/include/clc/math/log10.h libclc /usr/include/clc/math/log1p.h libclc /usr/include/clc/math/log1p.inc libclc /usr/include/clc/math/log2.h libclc /usr/include/clc/math/log2.inc libclc /usr/include/clc/math/mad.h libclc /usr/include/clc/math/mad.inc libclc /usr/include/clc/math/modf.h libclc /usr/include/clc/math/modf.inc libclc /usr/include/clc/math/native_cos.h libclc /usr/include/clc/math/native_divide.h libclc /usr/include/clc/math/native_exp.h libclc /usr/include/clc/math/native_exp10.h libclc /usr/include/clc/math/native_exp2.h libclc /usr/include/clc/math/native_log.h libclc /usr/include/clc/math/native_log.inc libclc /usr/include/clc/math/native_log2.h libclc /usr/include/clc/math/native_log2.inc libclc /usr/include/clc/math/native_powr.h libclc /usr/include/clc/math/native_sin.h libclc /usr/include/clc/math/native_sqrt.h libclc /usr/include/clc/math/nextafter.h libclc /usr/include/clc/math/pow.h libclc /usr/include/clc/math/pown.h libclc /usr/include/clc/math/rint.h libclc /usr/include/clc/math/round.h libclc /usr/include/clc/math/rsqrt.h libclc /usr/include/clc/math/sin.h libclc /usr/include/clc/math/sin.inc libclc /usr/include/clc/math/sincos.h libclc /usr/include/clc/math/sincos.inc libclc /usr/include/clc/math/sinpi.h libclc /usr/include/clc/math/sinpi.inc libclc /usr/include/clc/math/sqrt.h libclc /usr/include/clc/math/sqrt.inc libclc /usr/include/clc/math/tan.h libclc /usr/include/clc/math/tan.inc libclc /usr/include/clc/math/tanh.h libclc /usr/include/clc/math/tanh.inc libclc /usr/include/clc/math/ternary_intrin.inc libclc /usr/include/clc/math/tgamma.h libclc /usr/include/clc/math/tgamma.inc libclc /usr/include/clc/math/trunc.h libclc /usr/include/clc/math/unary_decl.inc libclc /usr/include/clc/math/unary_intrin.inc libclc /usr/include/clc/relational/ libclc /usr/include/clc/relational/all.h libclc /usr/include/clc/relational/any.h libclc /usr/include/clc/relational/binary_decl.inc libclc /usr/include/clc/relational/bitselect.h libclc /usr/include/clc/relational/bitselect.inc libclc /usr/include/clc/relational/floatn.inc libclc /usr/include/clc/relational/isequal.h libclc /usr/include/clc/relational/isfinite.h libclc /usr/include/clc/relational/isgreater.h libclc /usr/include/clc/relational/isgreaterequal.h libclc /usr/include/clc/relational/isinf.h libclc /usr/include/clc/relational/isless.h libclc /usr/include/clc/relational/islessequal.h libclc /usr/include/clc/relational/islessgreater.h libclc /usr/include/clc/relational/isnan.h libclc /usr/include/clc/relational/isnormal.h libclc /usr/include/clc/relational/isnotequal.h libclc /usr/include/clc/relational/isordered.h libclc /usr/include/clc/relational/isunordered.h libclc /usr/include/clc/relational/select.h libclc /usr/include/clc/relational/signbit.h libclc /usr/include/clc/relational/unary_decl.inc libclc /usr/include/clc/shared/ libclc /usr/include/clc/shared/clamp.h libclc /usr/include/clc/shared/clamp.inc libclc /usr/include/clc/shared/max.h libclc /usr/include/clc/shared/max.inc libclc /usr/include/clc/shared/min.h libclc /usr/include/clc/shared/min.inc libclc /usr/include/clc/shared/vload.h libclc /usr/include/clc/shared/vstore.h libclc /usr/include/clc/synchronization/ libclc /usr/include/clc/synchronization/barrier.h libclc /usr/include/clc/synchronization/cl_mem_fence_flags.h libclc /usr/include/clc/workitem/ libclc /usr/include/clc/workitem/get_global_id.h libclc /usr/include/clc/workitem/get_global_offset.h libclc /usr/include/clc/workitem/get_global_size.h libclc /usr/include/clc/workitem/get_group_id.h libclc /usr/include/clc/workitem/get_local_id.h libclc /usr/include/clc/workitem/get_local_size.h libclc /usr/include/clc/workitem/get_num_groups.h libclc /usr/include/clc/workitem/get_work_dim.h libclc /usr/lib/ libclc /usr/lib/clc/ libclc /usr/lib/clc/amdgcn--amdhsa.bc libclc /usr/lib/clc/aruba-r600--.bc libclc /usr/lib/clc/barts-r600--.bc libclc /usr/lib/clc/bonaire-amdgcn--.bc libclc /usr/lib/clc/bonaire-amdgcn--amdhsa.bc libclc /usr/lib/clc/bonaire-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/caicos-r600--.bc libclc /usr/lib/clc/carrizo-amdgcn--.bc libclc /usr/lib/clc/carrizo-amdgcn--amdhsa.bc libclc /usr/lib/clc/carrizo-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/cayman-r600--.bc libclc /usr/lib/clc/cedar-r600--.bc libclc /usr/lib/clc/cypress-r600--.bc libclc /usr/lib/clc/fiji-amdgcn--.bc libclc /usr/lib/clc/fiji-amdgcn--amdhsa.bc libclc /usr/lib/clc/fiji-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/hainan-amdgcn--.bc libclc /usr/lib/clc/hainan-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/hawaii-amdgcn--.bc libclc /usr/lib/clc/hawaii-amdgcn--amdhsa.bc libclc /usr/lib/clc/hawaii-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/hemlock-r600--.bc libclc /usr/lib/clc/iceland-amdgcn--.bc libclc /usr/lib/clc/iceland-amdgcn--amdhsa.bc libclc /usr/lib/clc/iceland-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/juniper-r600--.bc libclc /usr/lib/clc/kabini-amdgcn--.bc libclc /usr/lib/clc/kabini-amdgcn--amdhsa.bc libclc /usr/lib/clc/kabini-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/kaveri-amdgcn--.bc libclc /usr/lib/clc/kaveri-amdgcn--amdhsa.bc libclc /usr/lib/clc/kaveri-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/mullins-amdgcn--.bc libclc /usr/lib/clc/mullins-amdgcn--amdhsa.bc libclc /usr/lib/clc/mullins-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/nvptx--nvidiacl.bc libclc /usr/lib/clc/nvptx64--nvidiacl.bc libclc /usr/lib/clc/oland-amdgcn--.bc libclc /usr/lib/clc/oland-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/palm-r600--.bc libclc /usr/lib/clc/pitcairn-amdgcn--.bc libclc /usr/lib/clc/pitcairn-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/polaris10-amdgcn--.bc libclc /usr/lib/clc/polaris10-amdgcn--amdhsa.bc libclc /usr/lib/clc/polaris10-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/polaris11-amdgcn--.bc libclc /usr/lib/clc/polaris11-amdgcn--amdhsa.bc libclc /usr/lib/clc/polaris11-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/redwood-r600--.bc libclc /usr/lib/clc/stoney-amdgcn--.bc libclc /usr/lib/clc/stoney-amdgcn--amdhsa.bc libclc /usr/lib/clc/stoney-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/subnormal_disable.bc libclc /usr/lib/clc/subnormal_use_default.bc libclc /usr/lib/clc/sumo-r600--.bc libclc /usr/lib/clc/sumo2-r600--.bc libclc /usr/lib/clc/tahiti-amdgcn--.bc libclc /usr/lib/clc/tahiti-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/tonga-amdgcn--.bc libclc /usr/lib/clc/tonga-amdgcn--amdhsa.bc libclc /usr/lib/clc/tonga-amdgcn-mesa-mesa3d.bc libclc /usr/lib/clc/turks-r600--.bc libclc /usr/lib/clc/verde-amdgcn--.bc libclc /usr/lib/clc/verde-amdgcn-mesa-mesa3d.bc libclc /usr/share/ libclc /usr/share/licenses/ libclc /usr/share/licenses/libclc/ libclc /usr/share/licenses/libclc/LICENSE libclc /usr/share/pkgconfig/ libclc /usr/share/pkgconfig/libclc.pc
Should I have verde-r600-* ? I'm not using amdgpu.
I'm currently unable to use amdgpu with kernel 4.9. I'm getting this when exiting X and unable to shutdown cleanly: fev 25 18:00:44 dragonmount kernel: amdgpu 0000:01:00.0: couldn't schedule ib on ring <sdma0> fev 25 18:00:44 dragonmount kernel: [drm:amdgpu_job_run [amdgpu]] *ERROR* Error scheduling IBs ( fev 25 18:00:44 dragonmount kernel: [drm:amd_sched_main [amdgpu]] *ERROR* Failed to run job! fev 25 18:00:44 dragonmount kernel: amdgpu 0000:01:00.0: couldn't schedule ib on ring <sdma0> fev 25 18:00:44 dragonmount kernel: [drm:amdgpu_job_run [amdgpu]] *ERROR* Error scheduling IBs ( fev 25 18:00:44 dragonmount kernel: [drm:amd_sched_main [amdgpu]] *ERROR* Failed to run job! f https://bbs.archlinux.org/viewtopic.php?id=222476 Can we fix this for the radeon driver for now ?
(In reply to Henrique Dante de Almeida from comment #8) > Should I have verde-r600-* ? I'm not using amdgpu. no. verde-amdgcn- is correct. the Linux kernel driver does not matter. the failure is in gpu-kernel build phase. can you run strace with the failing program (append as attachment, pls). mesa is probably looking for libclc in wrong place. another possibility is that the kernel is built using -cl-opt-disable option, but that should not be the case unless the program explicitly requests it.
Created attachment 129915 [details] OpenCL hello strace
(In reply to Henrique Dante de Almeida from comment #11) > Created attachment 129915 [details] > OpenCL hello strace thank you. libclc is located and loaded correctly. can you attach /usr/lib/clc/tahiti-amdgcn--.bc ?
Created attachment 129916 [details] Arch Linux libclc tahiti-amdgcn--.bc
I think the problem is that the libclc implementation contains uninlined calls (function calls are not supported an AMD GPUs): ; Function Attrs: alwaysinline nounwind define linkonce_odr i32 @get_global_id(i32) local_unnamed_addr #12 { switch i32 %0, label %get_group_id.exit [ i32 0, label %get_group_id.exit.thread i32 1, label %get_group_id.exit.thread1 i32 2, label %get_group_id.exit.thread2 ] get_group_id.exit.thread: ; preds = %1 %2 = tail call i32 @llvm.amdgcn.workgroup.id.x() #14 %3 = tail call i32 bitcast (i64 (i32)* @get_local_size to i32 (i32)*)(i32 0) #18 attributes #12 = { alwaysinline nounwind ... attributes #18 = { nobuiltin nounwind } libclc commit 520743b generates this code when compiled using llvm-3.9. This does not happen with LLVM-4/5.
Created attachment 129929 [details] [review] size_t is 32bit in mesa3d building libclc (commit 520743) with this patch applied should produce a working library
Weird ! So was this a bug in IR source code ?
(In reply to Henrique Dante de Almeida from comment #16) > Weird ! So was this a bug in IR source code ? more like a combination of llvm/libclc. the function would ideally be rewritten in clc. can you confirm that the patch works (i.e.the resulting libclc works in your setup) ? I could only test basic kernel build. thank you
While that patch fixes the problem with get_local_size at least for me, it appears that get_global_size and get_num_groups have the exact same problem and require the same fix. The simple hello world example doesn't require them but this breaks more complex OpenCL code which does with a almost identical error. Making the same change to both of these appears to give me a working libclc on Cape Verde. Hopefully it will for Henrique too.
Hello, I built the libclc package with the patch applied with the latest llvm/clang (5.0.0svn) on arch, and getting the following error 1. Device: AMD TONGA (DRM 3.8.0 / 4.9.11-1-ARCH, LLVM 3.9.1) Error: Failed to build program executable! <unknown>:0:0: in function square void (float addrspace(1)*, float addrspace(1)*, i32): unsupported call to function get_local_size How can I fix this?
That was the old error, sorry. After applying the patch the error is: . Device: AMD TONGA (DRM 3.8.0 / 4.9.11-1-ARCH, LLVM 3.9.1) '+fp64-fp16-denormals' is not a recognized feature for this target (ignoring feature) '+fp64-fp16-denormals' is not a recognized feature for this target (ignoring feature) '+fp64-fp16-denormals' is not a recognized feature for this target (ignoring feature) '+fp64-fp16-denormals' is not a recognized feature for this target (ignoring feature) Error: Failed to build program executable! <unknown>:0:0: in function square void (float addrspace(1)*, float addrspace(1)*, i32): unsupported call to function get_global_id
(In reply to Mig from comment #19) > Hello, > I built the libclc package with the patch applied with the latest llvm/clang > (5.0.0svn) on arch, and getting the following error > > 1. Device: AMD TONGA (DRM 3.8.0 / 4.9.11-1-ARCH, LLVM 3.9.1) you should not mix llvm versions. libclc should be compiled with the same version that you use with mesa/clover (3.9.1 in you case)
Jan, the patch fixes the problem and hello world works here. Should I report the bug in llvm bug tracker ?
I recompiled with the default llvm compiler 3.9.1 and it works for me too! Number of platforms: 2 1. Device: AMD TONGA (DRM 3.8.0 / 4.9.11-1-ARCH, LLVM 3.9.1) success: got back 1 binaries, total size 8434 binary 0: size 8434 dumped to square0.gallium_bin Computed '1024/1024' correct values!
(In reply to Henrique Dante de Almeida from comment #22) > Jan, the patch fixes the problem and hello world works here. Should I report > the bug in llvm bug tracker ? I'm not sure if that'd help. There is no release_39 stable branch for libclc. Even if there was, afaik there is no plan for another 3.9 release. distros will probably have to apply that patch individually (Aidan's version might be better as it fixes more instances of the problem). another option would be to rewrite all 3 files to clc, but that'd need mesa changes I'm not sure what the preferred solution would be. @Tom, any ideas?
Created attachment 130136 [details] [review] size_t is 32bit in mesa3d more complete patch
There are no further fixes planned for clover on llvm-3.9. sorry
Created attachment 134395 [details] [review] Restore support for llvm-3.9 Hi, the attached patch restores support for llvm-3.9 to libclc HEAD and fixes the size_t problem. I don't have the right combination of HW + system running llvm-3.9 so any testing is appreciated.
Fixed in libclc >=r314543
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.