annotate parallel-libs/README.rst @ 227:21e6aa2e49ef

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 19 Jul 2021 06:57:16 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 =====================================================
anatofuz
parents:
diff changeset
2 LLVM parallel-libs Subproject Charter
anatofuz
parents:
diff changeset
3 =====================================================
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 ----------------------------------------------
anatofuz
parents:
diff changeset
6 Description
anatofuz
parents:
diff changeset
7 ----------------------------------------------
anatofuz
parents:
diff changeset
8 The LLVM open source project will contain a subproject named `parallel-libs`
anatofuz
parents:
diff changeset
9 which will host the development of libraries which are aimed at enabling
anatofuz
parents:
diff changeset
10 parallelism in code and which are also closely tied to compiler technology.
anatofuz
parents:
diff changeset
11 Examples of libraries suitable for hosting within the `parallel-libs`
anatofuz
parents:
diff changeset
12 subproject are runtime libraries and parallel math libraries. The initial
anatofuz
parents:
diff changeset
13 candidates for inclusion in this subproject are **StreamExecutor** and
anatofuz
parents:
diff changeset
14 **libomptarget** which would live in the `streamexecutor` and `libomptarget`
anatofuz
parents:
diff changeset
15 subdirectories of `parallel-libs`, respectively.
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 The `parallel-libs` project will host a collection of libraries where each
anatofuz
parents:
diff changeset
18 library may be dependent on other libraries from the project or may be
anatofuz
parents:
diff changeset
19 completely independent of any other libraries in the project. The rationale for
anatofuz
parents:
diff changeset
20 hosting independent libraries within the same subproject is that all libraries
anatofuz
parents:
diff changeset
21 in the project are providing related functionality that lives at the
anatofuz
parents:
diff changeset
22 intersection of parallelism and compiler technology. It is expected that some
anatofuz
parents:
diff changeset
23 libraries which initially began as independent will develop dependencies over
anatofuz
parents:
diff changeset
24 time either between existing libraries or by extracting common code that can be
anatofuz
parents:
diff changeset
25 used by each. One of the purposes of this subproject is to provide a working
anatofuz
parents:
diff changeset
26 space where such refactoring and code sharing can take place.
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 Libraries in the `parallel-libs` subproject may also depend on the LLVM core
anatofuz
parents:
diff changeset
29 libraries. This will be useful for avoiding duplication of code within the LLVM
anatofuz
parents:
diff changeset
30 project for common utilities such as those found in the LLVM support library.
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 ----------------------------------------------
anatofuz
parents:
diff changeset
34 Requirements
anatofuz
parents:
diff changeset
35 ----------------------------------------------
anatofuz
parents:
diff changeset
36 Libraries included in the `parallel-libs` subproject must strive to achieve the
anatofuz
parents:
diff changeset
37 following requirements:
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 1. Adhere to the LLVM coding standards.
anatofuz
parents:
diff changeset
40 2. Use the LLVM build and test infrastructure.
anatofuz
parents:
diff changeset
41 3. Be released under LLVM's license.
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 Coding standards
anatofuz
parents:
diff changeset
45 ----------------
anatofuz
parents:
diff changeset
46 Libraries in `parallel-libs` will match the LLVM coding standards. For existing
anatofuz
parents:
diff changeset
47 projects being checked into the subproject as-is, an exception will be made
anatofuz
parents:
diff changeset
48 during the initial check-in, with the understanding that the code will be
anatofuz
parents:
diff changeset
49 promptly updated to follow the standards. Therefore, a three month grace period
anatofuz
parents:
diff changeset
50 will be allowed for new libraries to meet the LLVM coding standards.
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 Additional exceptions to strict adherence to the LLVM coding standards may be
anatofuz
parents:
diff changeset
53 allowed in certain other cases, but the reasons for such exceptions must be
anatofuz
parents:
diff changeset
54 discussed and documented on a case-by-case basis.
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 LLVM build and test infrastructure
anatofuz
parents:
diff changeset
58 ----------------------------------
anatofuz
parents:
diff changeset
59 Using the LLVM build and test infrastructure currently means using `cmake` for
anatofuz
parents:
diff changeset
60 building, `lit` for testing, and `buildbot` for automating build and testing.
anatofuz
parents:
diff changeset
61 This project will follow the main LLVM project conventions here and track them
anatofuz
parents:
diff changeset
62 as they evolve.
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 Each subproject library will be able to build separately without a single,
anatofuz
parents:
diff changeset
65 unified cmake file, but each subproject libraries will also be integrated into
anatofuz
parents:
diff changeset
66 the LLVM build so they can be built directly from the top level of the LLVM
anatofuz
parents:
diff changeset
67 cmake infrastructure.
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69
anatofuz
parents:
diff changeset
70 LLVM license
anatofuz
parents:
diff changeset
71 ------------
anatofuz
parents:
diff changeset
72 For simplicity, the `parallel-libs` project will use the normal LLVM license.
anatofuz
parents:
diff changeset
73 While some runtime libraries use a dual license scheme in LLVM, we anticipate
anatofuz
parents:
diff changeset
74 the project removing the need for this eventually and in the interim follow the
anatofuz
parents:
diff changeset
75 simpler but still permissive license. Among other things, this makes it
anatofuz
parents:
diff changeset
76 straightforward for these libraries to re-use core LLVM libraries where
anatofuz
parents:
diff changeset
77 appropriate.
anatofuz
parents:
diff changeset
78
anatofuz
parents:
diff changeset
79
anatofuz
parents:
diff changeset
80 ----------------------------------------------
anatofuz
parents:
diff changeset
81 Mailing List and Bugs
anatofuz
parents:
diff changeset
82 ----------------------------------------------
anatofuz
parents:
diff changeset
83 Two mailing lists will be set up for the project:
anatofuz
parents:
diff changeset
84
anatofuz
parents:
diff changeset
85 1. parallel_libs-dev@lists.llvm.org for discussions among project developers, and
anatofuz
parents:
diff changeset
86 2. parallel_libs-commits@lists.llvm.org for patches and commits to the project.
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 Each subproject library will manage its own components in Bugzilla. So, for
anatofuz
parents:
diff changeset
89 example, there can be several Bugzilla components for different parts of
anatofuz
parents:
diff changeset
90 StreamExecutor, etc.