From: Zhigang Gong Date: Tue, 14 Jan 2014 01:33:00 +0000 (+0800) Subject: Revert faulty pushed patchset X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a979dcc2f4290f9c39459abbee0eca9adbcdff4c;p=contrib%2Fbeignet.git Revert faulty pushed patchset This reverts: Revert "GBE: fixed a long related bug." Revert "Refine the method to find pch and pcm files." Revert "GBE: enable relocatable pch files." Revert "CL: prepare to support ICD if the system has ocl-icd.." Revert "CL: back port ICD support to 1.1 branch." The above patches are merged by accident without review comments and are broken. Now revert them. --- diff --git a/CMake/FindGBE.cmake b/CMake/FindGBE.cmake new file mode 100644 index 0000000..db938c7 --- /dev/null +++ b/CMake/FindGBE.cmake @@ -0,0 +1,37 @@ +# +# Try to find X library and include path. +# Once done this will define +# +# GBE_FOUND +# GBE_INCLUDE_PATH +# GBE_LIBRARY +# + +FIND_PATH(GBE_INCLUDE_PATH gen/program.h + ~/include/ + /usr/include/ + /usr/local/include/ + /sw/include/ + /opt/local/include/ + DOC "The directory where gen/program.h resides") +FIND_LIBRARY(GBE_LIBRARY + NAMES GBE gbe + PATHS + ~/lib/ + /usr/lib64 + /usr/lib + /usr/local/lib64 + /usr/local/lib + /sw/lib + /opt/local/lib + DOC "The GBE library") + +IF(GBE_INCLUDE_PATH) + INCLUDE_DIRECTORIES(${GBE_INCLUDE_PATH}) + SET(GBE_FOUND 1 CACHE STRING "Set to 1 if GBE is found, 0 otherwise") +ELSE(GBE_INCLUDE_PATH) + SET(GBE_FOUND 0 CACHE STRING "Set to 1 if GBE is found, 0 otherwise") +ENDIF(GBE_INCLUDE_PATH) + +MARK_AS_ADVANCED(GBE_FOUND) + diff --git a/CMakeLists.txt b/CMakeLists.txt index e588829..b44e7a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,12 +18,6 @@ configure_file ( "src/OCLConfig.h" ) -configure_file ( - "intel-beignet.icd.in" - "intel-beignet.icd" -) - - INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) SET(CMAKE_VERBOSE_MAKEFILE "false") @@ -117,6 +111,14 @@ ELSE(XFIXES_FOUND) MESSAGE(STATUS "Looking for Xfixes - not found") ENDIF(XFIXES_FOUND) +# Gen-backend (compiler) +Find_Package(GBE) +IF(GBE_FOUND) + MESSAGE(STATUS "Looking for Gen-Backend - found") +ELSE(GBE_FOUND) + MESSAGE(STATUS "Looking for Gen-Backend - not found") +ENDIF(GBE_FOUND) + Find_Package(EGL) IF(EGL_FOUND) MESSAGE(STATUS "Looking for EGL - found") @@ -133,7 +135,6 @@ ENDIF(MESA_SOURCE_FOUND) Find_Package(OCLIcd) IF(OCLIcd_FOUND) MESSAGE(STATUS "Looking for OCL ICD header file - found") - install (FILES ${CMAKE_CURRENT_BINARY_DIR}/intel-beignet.icd DESTINATION /etc/OpenCL/vendors) ELSE(OCLIcd_FOUND) MESSAGE(STATUS "Looking for OCL ICD header file - not found") ENDIF(OCLIcd_FOUND) @@ -144,3 +145,4 @@ ADD_SUBDIRECTORY(include) ADD_SUBDIRECTORY(backend) ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(utests) + diff --git a/backend/CMakeLists.txt b/backend/CMakeLists.txt index dd55a4a..476c6f2 100644 --- a/backend/CMakeLists.txt +++ b/backend/CMakeLists.txt @@ -91,15 +91,9 @@ elseif (COMPILER STREQUAL "ICC") set (CCMAKE_CXX_FLAGS_MINSIZEREL "-Os -DGBE_DEBUG=0") set (CMAKE_EXE_LINKER_FLAGS "") endif () - include_directories (${CMAKE_CURRENT_BINARY_DIR}) ############################################################## # Project source code ############################################################## add_subdirectory (src) -set(LOCAL_PCH_OBJECT_DIR ${LOCAL_PCH_OBJECT_DIR} PARENT_SCOPE) -set(LOCAL_PCM_OBJECT_DIR ${LOCAL_PCM_OBJECT_DIR} PARENT_SCOPE) -set (GBE_BIN_GENERATER - OCL_PCM_PATH=${LOCAL_PCM_OBJECT_DIR} OCL_PCH_PATH=${LOCAL_PCH_OBJECT_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src/gbe_bin_generater - PARENT_SCOPE) diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt index d15e7b7..fa69321 100644 --- a/backend/src/CMakeLists.txt +++ b/backend/src/CMakeLists.txt @@ -1,13 +1,10 @@ -set (beignet_install_path ${CMAKE_INSTALL_PREFIX}/lib/beignet/) - - set (ocl_vector_spec_file ${GBE_SOURCE_DIR}/src/builtin_vector_proto.def) set (ocl_vector_file ${GBE_SOURCE_DIR}/src/ocl_vector.h) set (ocl_as_file ${GBE_SOURCE_DIR}/src/ocl_as.h) set (ocl_convert_file ${GBE_SOURCE_DIR}/src/ocl_convert.h) set (ocl_stdlib_tmpl_file ${GBE_SOURCE_DIR}/src/ocl_stdlib.tmpl.h) set (ocl_common_header_file ${GBE_SOURCE_DIR}/src/ocl_common_defines.h) -set (ocl_blob_file ${CMAKE_CURRENT_BINARY_DIR}/${beignet_install_path}/ocl_stdlib.h) +set (ocl_blob_file ${CMAKE_CURRENT_BINARY_DIR}/ocl_stdlib.h) set (ocl_blob_cpp_file ${GBE_SOURCE_DIR}/src/ocl_stdlib_str.cpp) set (ocl_gen_blob_cmd ${GBE_SOURCE_DIR}/src/update_blob_ocl_header.py) set (ocl_gen_vector_cmd ${GBE_SOURCE_DIR}/src/gen_builtin_vector.py) @@ -26,31 +23,28 @@ add_custom_command( COMMAND echo "" >> ${ocl_blob_cpp_file} DEPENDS ${ocl_blob_file}) -set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "ocl_vector.h;${ocl_blob_file}") +set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "ocl_vector.h;ocl_stdlib.h") add_custom_command( OUTPUT ${ocl_vector_file} COMMAND ${PYTHON_EXECUTABLE} ${ocl_gen_vector_cmd} ${ocl_vector_spec_file} ${ocl_vector_file} - DEPENDS ${ocl_gen_vector_cmd} ${ocl_vector_spec_file} - ) + DEPENDS ${ocl_gen_vector_cmd} ${ocl_vector_spec_file}) add_custom_command( OUTPUT ${ocl_blob_file} - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${beignet_install_path} COMMAND ${PYTHON_EXECUTABLE} ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_blob_file} - DEPENDS ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_common_header_file} ${ocl_vector_file} ${ocl_as_file} ${ocl_convert_file} - ) + DEPENDS ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_common_header_file} ${ocl_vector_file} ${ocl_as_file} ${ocl_convert_file}) + set (pch_object ${ocl_blob_file}.pch) -set (local_pch_object ${ocl_blob_file}.local.pch) # generate pch object if (LLVM_VERSION_NODOT VERSION_GREATER 32) - set (clang_cmd -cc1 -x cl -triple spir -ffp-contract=off) + set (clang_cmd -cc1 -x cl -triple spir -ffp-contract=off -emit-pch) else (LLVM_VERSION_NODOT VERSION_GREATER 32) if (LLVM_VERSION_NODOT VERSION_GREATER 31) - set (clang_cmd -cc1 -x cl -triple nvptx -ffp-contract=off) + set (clang_cmd -cc1 -x cl -triple nvptx -ffp-contract=off -emit-pch) else (LLVM_VERSION_NODOT VERSION_GREATER 31) - set (clang_cmd -cc1 -x cl -triple ptx32) + set (clang_cmd -cc1 -x cl -triple ptx32 -emit-pch) endif (LLVM_VERSION_NODOT VERSION_GREATER 31) endif (LLVM_VERSION_NODOT VERSION_GREATER 32) set (clang_cmd ${clang_cmd} -fno-builtin -DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND) @@ -58,8 +52,7 @@ set (clang_cmd ${clang_cmd} -fno-builtin -DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND) add_custom_command( OUTPUT ${pch_object} COMMAND rm -f ${pch_object} - COMMAND clang ${clang_cmd} --relocatable-pch -emit-pch -isysroot ${CMAKE_CURRENT_BINARY_DIR} ${ocl_blob_file} -o ${pch_object} - COMMAND clang ${clang_cmd} -emit-pch ${ocl_blob_file} -o ${local_pch_object} + COMMAND clang ${clang_cmd} ${ocl_blob_file} -o ${pch_object} DEPENDS ${ocl_blob_file} ) @@ -83,6 +76,7 @@ macro(ll_add_library ll_lib ll_sources) ) add_custom_target(${ll_lib} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${ll_lib}) + message(${ll_lib}, ${ll_objects}) endmacro(ll_add_library) if (GBE_USE_BLOB) @@ -91,7 +85,7 @@ if (GBE_USE_BLOB) backend/gen/gen_mesa_disasm.c) else (GBE_USE_BLOB) set (GBE_SRC - ${ocl_blob_file} + ocl_stdlib.h ocl_stdlib_str.cpp # this file is auto-generated. sys/vector.hpp sys/hash_map.hpp @@ -168,7 +162,7 @@ endif (GBE_USE_BLOB) include_directories (.) link_directories (${LLVM_LIBRARY_DIRS}) include_directories(${LLVM_INCLUDE_DIRS}) -add_library (gbe STATIC ${GBE_SRC}) +add_library (gbe SHARED ${GBE_SRC}) # for pre compiled module library. set (pcm_lib "beignet.bc") @@ -190,18 +184,13 @@ link_directories (${LLVM_LIBRARY_DIR}) ADD_EXECUTABLE(gbe_bin_generater gbe_bin_generater.cpp) TARGET_LINK_LIBRARIES(gbe_bin_generater gbe) -#install (TARGETS gbe LIBRARY DESTINATION lib) -#install (FILES backend/program.h DESTINATION include/gen) -install (FILES ${ocl_blob_file} DESTINATION lib/beignet) -install (FILES ${pch_object} DESTINATION lib/beignet) -install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib} DESTINATION lib/beignet) -# When build beignet itself, we need to export the local precompiled header file and precompiled module -# file to libcl and utests. -set (LOCAL_PCH_OBJECT_DIR "${local_pch_object}:${beignet_install_path}/ocl_stdlib.h.pch" PARENT_SCOPE) -set (LOCAL_PCM_OBJECT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib}:${beignet_install_path}/${pcm_lib}" PARENT_SCOPE) - -set (PCH_OBJECT_DIR "${beignet_install_path}/ocl_stdlib.h.pch") -set (PCM_OBJECT_DIR "${beignet_install_path}/${pcm_lib}") +install (TARGETS gbe LIBRARY DESTINATION lib) +install (FILES ${pch_object} DESTINATION lib) +install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib} DESTINATION lib) +install (FILES backend/program.h DESTINATION include/gen) + +set (PCH_OBJECT_DIR "${pch_object};${CMAKE_INSTALL_PREFIX}/lib/ocl_stdlib.h.pch") +set (PCM_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib};${CMAKE_INSTALL_PREFIX}/lib/${pcm_lib}") configure_file ( "GBEConfig.h.in" "GBEConfig.h" diff --git a/backend/src/GBEConfig.h.in b/backend/src/GBEConfig.h.in index 5bc09b8..9920d25 100644 --- a/backend/src/GBEConfig.h.in +++ b/backend/src/GBEConfig.h.in @@ -2,4 +2,4 @@ #define LIBGBE_VERSION_MAJOR @LIBGBE_VERSION_MAJOR@ #define LIBGBE_VERSION_MINOR @LIBGBE_VERSION_MINOR@ #define PCH_OBJECT_DIR "@PCH_OBJECT_DIR@" -#define PCM_OBJECT_DIR "@PCM_OBJECT_DIR@" +#define PCM_LIB_DIR "@PCM_LIB_DIR@" diff --git a/backend/src/backend/gen_register.hpp b/backend/src/backend/gen_register.hpp index 57c78d9..73d8ffa 100644 --- a/backend/src/backend/gen_register.hpp +++ b/backend/src/backend/gen_register.hpp @@ -270,8 +270,6 @@ namespace gbe INLINE GenRegister top_half(void) const { GenRegister r = bottom_half(); r.subnr += 4; - r.nr += r.subnr / 32; - r.subnr %= 32; return r; } diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index 284a755..3ab1bc2 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -465,9 +465,6 @@ namespace gbe { } BVAR(OCL_OUTPUT_BUILD_LOG, false); - SVAR(OCL_PCH_PATH, PCH_OBJECT_DIR); - SVAR(OCL_PCM_PATH, PCM_OBJECT_DIR); - static bool buildModuleFromSource(const char* input, const char* output, std::string options, size_t stringSize, char *err, size_t *errSize) { // Arguments to pass to the clang frontend @@ -585,13 +582,12 @@ namespace gbe { // Create an action and make the compiler instance carry it out llvm::OwningPtr Act(new clang::EmitLLVMOnlyAction()); - std::string dirs = OCL_PCM_PATH; - std::string pcmFileName; + std::string dirs = PCM_LIB_DIR, pcmLib; std::istringstream idirs(dirs); bool findPcm = false; - while (getline(idirs, pcmFileName, ':')) { - if(access(pcmFileName.c_str(), R_OK) == 0) { + while (getline(idirs, pcmLib, ';')) { + if(access(pcmLib.c_str(), R_OK) == 0) { findPcm = true; break; } @@ -599,7 +595,7 @@ namespace gbe { GBE_ASSERT(findPcm && "Could not find pre compiled module library.\n"); - Clang.getCodeGenOpts().LinkBitcodeFile = pcmFileName; + Clang.getCodeGenOpts().LinkBitcodeFile = pcmLib; auto retVal = Clang.ExecuteAction(*Act); if (err != NULL) { @@ -655,6 +651,7 @@ namespace gbe { char clStr[L_tmpnam+1], llStr[L_tmpnam+1]; const std::string clName = std::string(tmpnam_r(clStr)) + ".cl"; /* unsafe! */ const std::string llName = std::string(tmpnam_r(llStr)) + ".ll"; /* unsafe! */ + std::string pchHeaderName; std::string clOpt; int optLevel = 1; @@ -733,12 +730,11 @@ namespace gbe { clOpt += options; } - std::string dirs = OCL_PCH_PATH; + std::string dirs = PCH_OBJECT_DIR; std::istringstream idirs(dirs); - std::string pchFileName; - while (getline(idirs, pchFileName, ':')) { - if(access(pchFileName.c_str(), R_OK) == 0) { + while (getline(idirs, pchHeaderName, ';')) { + if(access(pchHeaderName.c_str(), R_OK) == 0) { findPCH = true; break; } @@ -746,7 +742,7 @@ namespace gbe { if (usePCH && findPCH) { clOpt += " -include-pch "; - clOpt += pchFileName; + clOpt += pchHeaderName; clOpt += " "; } else fwrite(ocl_stdlib_str.c_str(), strlen(ocl_stdlib_str.c_str()), 1, clFile); diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h index 9b70514..07a4fd9 100755 --- a/backend/src/ocl_stdlib.tmpl.h +++ b/backend/src/ocl_stdlib.tmpl.h @@ -1717,7 +1717,7 @@ INLINE float __gen_ocl_asin_util(float x) { float w = p / q; return x + x*w; } -INLINE float __gen_ocl_scalbnf (float x, int n){ +float __gen_ocl_scalbnf (float x, int n){ float two25 = 3.355443200e+07, /* 0x4c000000 */ twom25 = 2.9802322388e-08, /* 0x33000000 */ huge = 1.0e+30, diff --git a/docs/Beignet.mdwn b/docs/Beignet.mdwn index e3b4b1b..d05950f 100644 --- a/docs/Beignet.mdwn +++ b/docs/Beignet.mdwn @@ -70,10 +70,8 @@ this code also produces various tests to ensure the compiler and the run-time consistency. This small test framework uses a simple c++ registration system to register all the unit tests. -You need to call setenv.sh in the utests/ directory to set some environment variables -firstly as below: - -`> . setenv.sh` +You need to set the variable `OCL_KERNEL_PATH` to locate the OCL kernels. They +are with the run-time in `./kernels`. Then in `utests/`: @@ -85,20 +83,6 @@ will run all the unit tests one after the others will only run `some_unit_test0` and `some_unit_test1` tests -How to install --------------- - -Simply invoke: -`> make install` - -It installs libcl.so and the precompiled header/module files and the ocl_stdlib.h file -into install_prefix/beignet/ direcotry. If the system support ICD, it also installs the -intel-beignet.icd to /etc/OpenCL/vendors/. - -To make beignet support ICD, you need to have the following two packages installed: -ocl-icd-dev, ocl-icd-libopencl1 (package name for the ubuntu.) -before your build beignet. - Supported Hardware ------------------ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7d4d93d..b997f94 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,6 +4,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../backend/src/backend/ ${CMAKE_CURRENT_SOURCE_DIR}/../include ${MESA_SOURCE_INCLUDES}) + macro (MakeKernelBinStr KERNEL_PATH KERNEL_FILES) foreach (KF ${KERNEL_FILES}) set (input_file ${KERNEL_PATH}/${KF}.cl) @@ -12,7 +13,7 @@ foreach (KF ${KERNEL_FILES}) add_custom_command( OUTPUT ${output_file} COMMAND rm -rf ${output_file} - COMMAND ${GBE_BIN_GENERATER} -s ${input_file} -o${output_file} + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater -s ${input_file} -o${output_file} DEPENDS ${input_file} ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater) endforeach (KF) endmacro (MakeKernelBinStr) @@ -78,4 +79,4 @@ target_link_libraries( ${DRM_LIBRARY} ${OPENGL_LIBRARIES} ${OPTIONAL_EGL_LIBRARY}) -install (TARGETS cl LIBRARY DESTINATION lib/beignet) +install (TARGETS cl LIBRARY DESTINATION lib) diff --git a/src/cl_khr_icd.c b/src/cl_khr_icd.c index cb5f5cd..d601134 100644 --- a/src/cl_khr_icd.c +++ b/src/cl_khr_icd.c @@ -14,14 +14,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ -#include -#ifndef CL_VERSION_1_2 -#include -typedef cl_uint cl_kernel_arg_info; -typedef cl_bitfield cl_mem_migration_flags; -#define cl_device_partition_property cl_device_partition_property_ext -#define CL_API_SUFFIX__VERSION_1_2 -#endif + #include #include "cl_platform_id.h" diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt index 8c64844..b1f0b52 100644 --- a/utests/CMakeLists.txt +++ b/utests/CMakeLists.txt @@ -12,11 +12,6 @@ string(REGEX REPLACE "generated/([^\ ]*)\\.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../ string(REGEX REPLACE " " ";" KERNEL_MATH_LIST ${KERNEL_MATH_LIST}) set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "generated;${KERNEL_MATH_LIST}") -configure_file ( - "setenv.sh.in" - "setenv.sh" - ) - link_directories (${LLVM_LIBRARY_DIR}) set (utests_sources utest_error.c @@ -175,7 +170,7 @@ set (utests_sources SET (kernel_bin ${CMAKE_CURRENT_SOURCE_DIR}/../kernels/compiler_ceil) ADD_CUSTOM_COMMAND( OUTPUT ${kernel_bin}.bin - COMMAND ${GBE_BIN_GENERATER} ${kernel_bin}.cl -o${kernel_bin}.bin + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater ${kernel_bin}.cl -o${kernel_bin}.bin DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater ${kernel_bin}.cl ) @@ -194,8 +189,8 @@ add_custom_target(utest_generator if (EGL_FOUND AND MESA_SOURCE_FOUND) SET(utests_sources ${utests_sources} compiler_fill_gl_image.cpp) -SET(CMAKE_CXX_FLAGS "-DHAS_EGL ${CMAKE_CXX_FLAGS} ${DEF_OCL_PCH_PCM_PATH}") -SET(CMAKE_C_FLAGS "-DHAS_EGL ${CMAKE_C_FLAGS} ${DEF_OCL_PCH_PCM_PATH}") +SET(CMAKE_CXX_FLAGS "-DHAS_EGL ${CMAKE_CXX_FLAGS}") +SET(CMAKE_C_FLAGS "-DHAS_EGL ${CMAKE_C_FLAGS}") endif (EGL_FOUND AND MESA_SOURCE_FOUND) ADD_LIBRARY(utests SHARED ${ADDMATHFUNC} ${utests_sources}) diff --git a/utests/utest.cpp b/utests/utest.cpp index 718916f..6d51598 100644 --- a/utests/utest.cpp +++ b/utests/utest.cpp @@ -41,6 +41,8 @@ UTest::UTest(Function fn, const char *name, bool haveIssue, bool needDestroyProg utestList->push_back(*this); } +UTest::UTest(void) : fn(NULL), name(NULL), haveIssue(false) {} + static bool strequal(const char *s1, const char *s2) { if (strcmp(s1, s2) == 0) return true; return false;