pocl / pocl

pocl - Portable Computing Language
https://portablecl.org
MIT License
919 stars 251 forks source link

"Could not create topdir for cache" errors when running the testsuite during packaging #325

Closed ghisvail closed 8 years ago

ghisvail commented 8 years ago

I have attempted to refresh the packaging effort started by Vincent Danjean on Debian with the tagged release version 0.13. It went as far as compiling (using CMake to generate the Makefiles) but the entire test suite fails with a Could not create topdir for cache error:

        Start   1: pocl_version_check
  1/108 Test   #1: pocl_version_check ..................................................................***Failed  Required regular expression not found.Regex=[basic
]  0.01 sec
Could not create topdir for cache

Do you guys have any idea where that could come from?

FYI, this is the CMake summary:

-- *********************** SUMMARY ***************************
--  
-- ******* Directories:
--  
-- POCL_INSTALL_CMAKE_CONFIG_DIR: /usr/lib/x86_64-linux-gnu/pocl
-- POCL_INSTALL_ICD_VENDORDIR: /etc/OpenCL/vendors
-- POCL_INSTALL_OPENCL_HEADER_DIR: /usr/include/CL
-- POCL_INSTALL_PKGCONFIG_DIR: /usr/lib/x86_64-linux-gnu/pkgconfig
-- POCL_INSTALL_PRIVATE_DATADIR: /usr/share/pocl
-- POCL_INSTALL_PRIVATE_HEADER_DIR: /usr/share/pocl/include
-- POCL_INSTALL_PRIVATE_LIBDIR: /usr/lib/x86_64-linux-gnu/pocl
-- POCL_INSTALL_PUBLIC_BINDIR: /usr/bin
-- POCL_INSTALL_PUBLIC_HEADER_DIR: /usr/include
-- POCL_INSTALL_PUBLIC_LIBDIR: /usr/lib/x86_64-linux-gnu
--  
-- ******* Enabled features:
--  
-- CLANG_SPIR: 0
-- DIRECT_LINKAGE: 0
-- ENABLE_DOCS: 1
-- ENABLE_ICD: 1
-- ENABLE_TCE: 0
-- ENABLE_TCEMC: 0
-- ENABLE_HSA: OFF
-- INSTALL_OPENCL_HEADERS (Install our headers): 0
-- OCL_DRIVERS (Drivers built): basic pthreads
-- OCL_TARGETS (Targets built): host
-- STATIC_LLVM: OFF
-- TESTS_USE_ICD: 1
-- USE_VECMATHLIB: 1
-- Available testsuites: AMD;AMDSDK2.9;AMDSDK3.0;ASL;arrayfire;clBLAS;clFFT;CloverLeaf;Halide;IntelSVM;opencl-book-samples;OpenCV;Parboil;piglit;PyOpenCL;Rodinia;VexCL;ViennaCL
-- Enabled testsuites: 
-- Kernel caching: ON
-- Kernel library CPU variants: native
-- Kernel library distro build: 0
--  
-- ******* Programs:
--  
-- LLVM_CONFIG: /usr/bin/llvm-config-3.7
-- LLVM_OPT: /usr/bin/opt-3.7
-- LLVM_LLC: /usr/bin/llc-3.7
-- LLVM_AS: /usr/bin/llvm-as-3.7
-- LLVM_LINK: /usr/bin/llvm-link-3.7
-- LLVM_LLI: /usr/bin/lli-3.7
-- WITH_LLVM_CONFIG (User preferred llvm-config): 
--  
-- ******* Various Flags:
--  
-- CLANG_MARCH_FLAG: -march=
-- CLANG_TARGET_OPTION: --target=
-- CL_DISABLE_HALF: 1
-- CL_DISABLE_LONG: 
-- HAVE_CLOCK_GETTIME: 1
-- HAVE_GLEW: 1
-- HOST_AS_FLAGS:  
-- HOST_CLANG_FLAGS: --target=x86_64-pc-linux-gnu -D_CL_DISABLE_HALF 
-- HOST_LD_FLAGS: -shared -lm 
-- HOST_LLC_FLAGS: -relocation-model=pic -mtriple=x86_64-pc-linux-gnu 
-- HSA_INCLUDES: 
-- HSALIB: 
-- HSAIL_ASM: 
-- ICD_LD_FLAGS: -Wl,-Bsymbolic
-- KERNEL_CLANGXX_FLAGS: -DVML_NO_IOSTREAM  
-- KERNEL_CL_FLAGS: -Xclang -cl-std=CL2.0 -D__OPENCL_C_VERSION__=200 
-- PTHREAD_LDFLAGS: -lpthread
-- PTHREAD_CFLAGS: 
-- LIB_API_VERSION: 1
-- LIB_BUILD_VERSION: 1.6.0
-- LLVM_VERSION: 3.7
-- LLVM_ASSERTS_BUILD OFF
-- LLVM_CFLAGS: -I/usr/lib/llvm-3.7/include  -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -g -O2 -fomit-frame-pointer -fPIC
-- LLVM_CXXFLAGS: -I/usr/lib/llvm-3.7/include  -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -g -O2 -fomit-frame-pointer -std=c++11 -fvisibility-inlines-hidden -fno-exceptions -fPIC -ffunction-sections -fdata-sections -Wcast-qual -fno-rtti
-- LLVM_CPPFLAGS: -I/usr/lib/llvm-3.7/include  -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-- LLVM_LDFLAGS: -L/usr/lib/llvm-3.7/lib
-- LLVM_LIBDIR: /usr/lib/llvm-3.7/lib
-- LLVM_INCLUDEDIR: /usr/lib/llvm-3.7/include
-- LLVM_SRC_ROOT: /usr/lib/llvm-3.7/build/
-- LLVM_OBJ_ROOT: /usr/lib/llvm-3.7/build/
-- LLVM_INCLUDE_DIRS: /usr/lib/llvm-3.7/include;/usr/lib/llvm-3.7/build//tools/clang/include;/usr/lib/llvm-3.7/build//include;/usr/lib/llvm-3.7/build//tools/clang/include
-- LLVM_ALL_TARGETS: X86 Sparc PowerPC ARM AArch64 Mips XCore MSP430 CppBackend NVPTX Hexagon SystemZ AMDGPU BPF
-- LLVM_HOST_TARGET: x86_64-pc-linux-gnu
-- LLC_TRIPLE: x86_64-pc-linux-gnu
-- LLC_HOST_CPU: haswell
-- MAX_EXTENDED_ALIGNMENT: 128
-- OCL_KERNEL_TARGET: x86_64-pc-linux-gnu
-- OCL_KERNEL_TARGET_CPU: haswell
-- POCL_DEVICE_ADDRESS_BITS: 64
-- TCE_TARGET_CLANG_FLAGS: 
-- TCE_TARGET_LLC_FLAGS: 
-- TCE_CXXFLAGS: 
-- TCE_INCLUDES: 
-- TCE_LIBS: 
-- TCE_VERSION: 
-- TCE_PREFIX: 
-- 
-- ----------- -------------------------------- --------
-- llvm libs libpocl will be linked to (POCL_LLVM_LIBS):
-- /usr/lib/llvm-3.7/lib/libLLVM-3.7.so
-- ----------- -------------------------------- --------
-- clang libs libpocl will be linked to (CLANG_LIBFILES):
-- /usr/lib/llvm-3.7/lib/libclangFrontendTool.a;/usr/lib/llvm-3.7/lib/libclangFrontend.a;/usr/lib/llvm-3.7/lib/libclangDriver.a;/usr/lib/llvm-3.7/lib/libclangSerialization.a;/usr/lib/llvm-3.7/lib/libclangCodeGen.a;/usr/lib/llvm-3.7/lib/libclangParse.a;/usr/lib/llvm-3.7/lib/libclangSema.a;/usr/lib/llvm-3.7/lib/libclangRewrite.a;/usr/lib/llvm-3.7/lib/libclangRewriteFrontend.a;/usr/lib/llvm-3.7/lib/libclangStaticAnalyzerFrontend.a;/usr/lib/llvm-3.7/lib/libclangStaticAnalyzerCheckers.a;/usr/lib/llvm-3.7/lib/libclangStaticAnalyzerCore.a;/usr/lib/llvm-3.7/lib/libclangAnalysis.a;/usr/lib/llvm-3.7/lib/libclangEdit.a;/usr/lib/llvm-3.7/lib/libclangAST.a;/usr/lib/llvm-3.7/lib/libclangLex.a;/usr/lib/llvm-3.7/lib/libclangBasic.a
-- ----------- -------------------------------- --------
-- system libs libpocl will be linked to (LLVM_SYSLIBS):
-- -lz -lpthread -lffi -ledit -ltinfo -ldl -lm
-- ----------- -------------------------------- --------
franz commented 8 years ago

You need a writable place for Pocl to store its temporary files (cache). Pocl tries one of $POCL_CACHE_DIR, $XDG_CACHE_HOME/pocl/kcache, $HOME/.cache/pocl/kcache or /tmp/pocl/kcache (the first env var that's defined gets selected) and does mkdir -p on that.

So if you're running this on a buildbot, set the POCL_CACHE_DIR env var to some writable directory.

Also, if you're building a distribution package, i recommend you run cmake with -DKERNELLIB_HOST_CPU_VARIANTS=distro - this enables multiple kernel libraries & pocl selects the proper one at runtime based on the CPU.

ghisvail commented 8 years ago

So if you're running this on a buildbot, set the POCL_CACHE_DIR env var to some writable directory.

That's the info I was missing. Thanks @franz.