diff options
author | Yang Rong <rong.r.yang@intel.com> | 2016-08-30 17:58:26 +0800 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2016-08-30 17:58:26 +0800 |
commit | 0dbaa5afcf01e1065b40b87de9c374bcaea03acb (patch) | |
tree | a6d5c644f698cff5ea3b5118b820f9065a0b5967 /docs | |
parent | 855b094669fdd243a5108e16d6abd14b8a2880fe (diff) | |
download | beignet-0dbaa5afcf01e1065b40b87de9c374bcaea03acb.tar.gz |
Docs: update readme.
Remove TODO section, and will add TODO.mdwn later.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/Beignet.mdwn | 86 |
1 files changed, 29 insertions, 57 deletions
diff --git a/docs/Beignet.mdwn b/docs/Beignet.mdwn index 914cbce0..407886a8 100644 --- a/docs/Beignet.mdwn +++ b/docs/Beignet.mdwn @@ -32,26 +32,29 @@ If you don't want to enable ICD, or your system doesn't have ICD OpenCL support, you can still link to the beignet OpenCL library. You can find the beignet/libcl.so in your system's library installation directories. -Note that the compiler depends on LLVM (Low-Level Virtual Machine project). -Right now, the code has been compiled with LLVM 3.3/3.4. It will not compile -with anything older. +Note that the compiler depends on LLVM (Low-Level Virtual Machine project), and the +project normally support 3 latest LLVM released version. +Right now, the code has been compiled with LLVM 3.6, 3.7 and 3.8. With older +version LLVM from 3.3, build still support, but no full tests cover. A simple command to install all the above dependencies for ubuntu or debian is: -`sudo apt-get install cmake pkg-config python ocl-icd-dev` -` ocl-icd-opencl-dev libdrm-dev libxfixes-dev libxext-dev llvm-3.5-dev` -` clang-3.5 libclang-3.5-dev libtinfo-dev libedit-dev zlib1g-dev` +`sudo apt-get install cmake pkg-config python ocl-icd-dev libegl1-mesa-dev` +` ocl-icd-opencl-dev libdrm-dev libxfixes-dev libxext-dev llvm-3.6-dev` +` clang-3.6 libclang-3.6-dev libtinfo-dev libedit-dev zlib1g-dev` [http://llvm.org/releases/](http://llvm.org/releases/) -**The recommended LLVM/CLANG version is 3.5 and/or 3.6** +**The recommended LLVM/CLANG version is 3.6 and/or 3.7** -Based on our test result, LLVM 3.5 has best pass rate on all the test suites. Compare -to LLVM 3.5, LLVM 3.6 has slightly lower pass rate(caused by one front end bug at clang -3.6) but has better performance(3% to 8% up). +Based on our test result, LLVM 3.6 and 3.7 has best pass rate on all the test suites. Compare +to LLVM 3.6 and 3.7, if you used LLVM 3.8, you should pay attention to float immediate. For example, +if you use 1.0 in the kernel, LLVM 3.6 will treate it as 1.0f, a single float, because the project +don't support double float. but LLVM 3.8 will treate it as 1.0, a double foat, at the last it may cause +error. So we recommend use 1.0f instead of 1.0 if you don't need double float. -For LLVM 3.3 and 3.4, Beignet still support them, but it may be limited to support the +For LLVM 3.4 and 3.5, Beignet still support them, but it may be limited to support the build and major functions. How to build and install @@ -86,8 +89,11 @@ The cmake will build the backend firstly. Please refer to: [[OpenCL Gen Backend|Beignet/Backend]] to get more dependencies. Once built, the run-time produces a shared object libcl.so which basically -directly implements the OpenCL API. A set of tests are also produced. They may -be found in `utests/`. +directly implements the OpenCL API. + +`> make` + +A set of tests are also produced. They may be found in `utests/`. Simply invoke: @@ -127,9 +133,9 @@ Then in `utests/`: will run all the unit tests one after the others -`> ./utest_run some_unit_test0 some_unit_test1` +`> ./utest_run some_unit_test` -will only run `some_unit_test0` and `some_unit_test1` tests +will only run `some_unit_test` test. On all supported target platform, the pass rate should be 100%. If it is not, you may need to refer the "Known Issues" section. Please be noted, the `. setenv.sh` is only @@ -144,10 +150,13 @@ beignet provides two alternative to run: Supported Targets ----------------- - * 3rd Generation Intel Core Processors - * Intel “Bay Trail” platforms with Intel HD Graphics - * 4th Generation Intel Core Processors "Haswell", need kernel patch currently, see the "Known Issues" section. + * 3rd Generation Intel Core Processors "Ivybridge". + * 3rd Generation Intel Atom Processors "BayTrail". + * 4th Generation Intel Core Processors "Haswell", need kernel patch if your linux kernel older than 4.2, see the "Known Issues" section. * 5th Generation Intel Core Processors "Broadwell". + * 5th Generation Intel Atom Processors "Braswell". + * 6th Generation Intel Core Processors "Skylake" and "Kabylake". + * 5th Generation Intel Atom Processors "Broxten" or "Apollolake". Known Issues ------------ @@ -177,17 +186,12 @@ Known Issues `# echo 0 > /sys/module/i915/parameters/enable_cmd_parser` - On Haswell hardware, Beignet 1.0.1 to 1.0.3 also required the - above workaround on later Linux versions, but this _should not_ be - required in current (after [83f8739](http://cgit.freedesktop.org/beignet/commit/?id=83f8739b6fc4893fac60145326052ccb5cf653dc)) - git master. - * "Beignet: self-test failed" and 15-30 unit tests fail on 4th Generation (Haswell) hardware. On Haswell, shared local memory (\_\_local) does not work at all on Linux <= 4.0, and requires the i915.enable_ppgtt=2 [boot parameter](https://wiki.ubuntu.com/Kernel/KernelBootParameters) on Linux 4.1. - This will be fixed in Linux 4.2; older versions can be fixed with + This is fixed in Linux 4.2; older versions can be fixed with [this patch](https://01.org/zh/beignet/downloads/linux-kernel-patch-hsw-support). If you do not need \_\_local, you can override the self-test with @@ -211,38 +215,6 @@ Known Issues extension. This feature used to work with a previous mesa git version. But now, it's simply broken. -TODO ----- - -In terms of the OpenCL 1.2 spec, beignet is quite complete now. We can pass almost -all the piglit OpenCL test cases now. And the pass rate for the OpenCV test suite -is also good which is about 99%. There are still some remains work items listed as below, -most of them are extension support and performance related. - -- Performance tuning. There are some major optimizations need to be done, - Peephole optimization, futher tuning the structurized BB transformation to - support more pattern such as self loop/while loop. And optimize the slow - software based sin/cos/... math functions due to the native math instruction - lack of necessary precision. And all the code is inlined which will increase - the icache miss rate significantly. And many other things which are specified - partially in [[here|Beignet/Backend/TODO]]. - -- Complete cl\_khr\_gl\_sharing support. We lack of some APIs implementation such - as clCreateFromGLBuffer,clCreateFromGLRenderbuffer,clGetGLObjectInfo... Currently, - the working APIs are clCreateFromGLTexture,clCreateFromGLTexture2D. We may need to - find a graceful way to co-work with mesa. - -- Check that NDRangeKernels can be pushed into _different_ queues from several - threads. - -- No state tracking at all. One batch buffer is created at each "draw call" - (i.e. for each NDRangeKernels). This is really inefficient since some - expensive pipe controls are issued for each batch buffer. - -More generally, everything in the run-time that triggers the "FATAL" macro means -that something that must be supported is not implemented properly (either it -does not comply with the standard or it is just missing) - Project repository ------------------ Right now, we host our project on fdo at: @@ -268,7 +240,7 @@ Developers from Intel: * Luo, Xionghu * Wen, Chuanbo * Guo, Yejun -* Lv, Meng +* Pan, Xiuli Debian Maintainer: |