[Beignet] [PATCH 00/22 V2] Using bit code ocl lib to replace the huge header file.

junyan.he at inbox.com junyan.he at inbox.com
Sun Aug 31 19:05:13 PDT 2014


From: Junyan He <junyan.he at linux.intel.com>

The PCH file is growing too big. It contains too many defines and macros, which
need a lot of time to parse and may cause some conflicts with the user defined
macros. This patch set will extract the function protocols from its definition
into the header files and compile all the functions' definition into a llvm bitcode
file as a cl library. This manner is also compatible with libclc and we can switch
to libclc if libclc is stable and extensive enough.
This patch set may cause the compiling time slower than the PCH version, because
the header file's parsing and bitcode's linking are not optimized yet, and we will
continue to improve it.

V2 improvement:
1. Optimizatiion at the bitcode link. Analyse and materialize the functions needed by
   CL kernel before do the Call Graph Analyse and Global Var killing.
2. Use PCH to accelerate the header file's parsing.
3. Use CMake to replace the Makefile for libocl, which make the project consistency
   better.

TODO:
Math functions' fast and standard switch in the lib.

Signed-off-by: Junyan He <junyan.he at linux.intel.com>
---
 backend/CMakeLists.txt                         |    8 +-
 backend/src/CMakeLists.txt                     |  135 +-
 backend/src/GBEConfig.h.in                     |    5 +-
 backend/src/backend/program.cpp                |  289 +-
 backend/src/builtin_vector_proto.def           |  295 -
 backend/src/gen_as.sh                          |  101 -
 backend/src/gen_builtin_vector.py              |  417 -
 backend/src/gen_convert.sh                     |  553 -
 backend/src/genconfig.sh                       |   11 -
 backend/src/libocl/CMakeLists.txt              |  209 +
 backend/src/libocl/include/ocl.h               |   23 +
 backend/src/libocl/include/ocl_async.h         |   49 +
 backend/src/libocl/include/ocl_atom.h          |   84 +
 backend/src/libocl/include/ocl_float.h         |   79 +
 backend/src/libocl/include/ocl_geometric.h     |   39 +
 backend/src/libocl/include/ocl_image.h         |  161 +
 backend/src/libocl/include/ocl_misc.h          |  122 +
 backend/src/libocl/include/ocl_printf.h        |   15 +
 backend/src/libocl/include/ocl_sync.h          |   18 +
 backend/src/libocl/include/ocl_types.h         |  104 +
 backend/src/libocl/include/ocl_vload.h         |  143 +
 backend/src/libocl/include/ocl_workitem.h      |   15 +
 backend/src/libocl/script/gen_vector.py        |  382 +
 backend/src/libocl/script/ocl_as.sh            |  127 +
 backend/src/libocl/script/ocl_common.def       |   22 +
 backend/src/libocl/script/ocl_convert.sh       |  656 +
 backend/src/libocl/script/ocl_integer.def      |   31 +
 backend/src/libocl/script/ocl_math.def         |  166 +
 backend/src/libocl/script/ocl_relational.def   |   34 +
 backend/src/libocl/src/ocl_async.cl            |   69 +
 backend/src/libocl/src/ocl_atom.cl             |  122 +
 backend/src/libocl/src/ocl_barrier.ll          |   39 +
 backend/src/libocl/src/ocl_geometric.cl        |   96 +
 backend/src/libocl/src/ocl_image.cl            |  412 +
 backend/src/libocl/src/ocl_memcpy.ll           |  336 +
 backend/src/libocl/src/ocl_memset.ll           |  127 +
 backend/src/libocl/src/ocl_misc.cl             |  201 +
 backend/src/libocl/src/ocl_sync.cl             |   14 +
 backend/src/libocl/src/ocl_vload.cl            |  257 +
 backend/src/libocl/src/ocl_workitem.cl         |   40 +
 backend/src/libocl/tmpl/ocl_common.tmpl.cl     |   49 +
 backend/src/libocl/tmpl/ocl_common.tmpl.h      |   21 +
 backend/src/libocl/tmpl/ocl_defines.tmpl.h     |   23 +
 backend/src/libocl/tmpl/ocl_integer.tmpl.cl    |  352 +
 backend/src/libocl/tmpl/ocl_integer.tmpl.h     |  160 +
 backend/src/libocl/tmpl/ocl_math.tmpl.cl       | 3316 +++++
 backend/src/libocl/tmpl/ocl_math.tmpl.h        |  103 +
 backend/src/libocl/tmpl/ocl_relational.tmpl.cl |  151 +
 backend/src/libocl/tmpl/ocl_relational.tmpl.h  |   78 +
 backend/src/llvm/llvm_bitcode_link.cpp         |  203 +
 backend/src/llvm/llvm_gen_backend.hpp          |    3 +
 backend/src/llvm/llvm_to_gen.cpp               |   70 +-
 backend/src/ocl_as.h                           | 3086 -----
 backend/src/ocl_barrier.ll                     |   39 -
 backend/src/ocl_convert.h                      |17415 ------------------------
 backend/src/ocl_memcpy.ll                      |  336 -
 backend/src/ocl_memset.ll                      |  127 -
 backend/src/ocl_stdlib.tmpl.h                  | 5149 -------
 backend/src/update.sh                          |    3 -
 backend/src/update_as.sh                       |   11 -
 backend/src/update_blob_ocl_header.py          |   65 -
 backend/src/update_convert.sh                  |   12 -
 utests/setenv.sh.in                            |    5 +-
 63 files changed, 8808 insertions(+), 27975 deletions(-)




More information about the Beignet mailing list