├── bower_components ├── core-component-page │ ├── bowager-logo.png │ ├── bower.json │ ├── README.md │ ├── .bower.json │ ├── index.html │ └── demo.html ├── core-ajax │ ├── README.md │ ├── bower.json │ ├── test │ │ ├── index.html │ │ ├── core-ajax-race.html │ │ ├── core-ajax-progress.html │ │ └── core-ajax.html │ ├── .bower.json │ ├── index.html │ ├── metadata.html │ ├── demo.html │ ├── demo-progress.html │ ├── core-xhr.html │ └── core-ajax.html ├── webcomponentsjs │ ├── bower.json │ ├── .bower.json │ ├── package.json │ ├── build.log │ ├── README.md │ └── CustomElements.min.js ├── cxx-html-doc-framework │ ├── bower.json │ ├── email.html │ ├── range.html │ ├── .bower.json │ ├── note.html │ ├── term.html │ ├── example.html │ ├── weak-break.html │ ├── ednote.html │ ├── foreign-index.js │ ├── foreign-index.html │ ├── definition-section.html │ ├── codeblock.html │ ├── publish.html │ ├── figure.html │ ├── footnote.html │ ├── include.js │ ├── clause.html │ ├── framework.html │ ├── section.html │ ├── toc.html │ ├── definition-section.js │ ├── toc.js │ ├── ref.html │ ├── grammar.html │ ├── ref.js │ ├── util │ │ └── get-element-by-id.html │ ├── foreword.html │ ├── section.js │ ├── titlepage.js │ ├── table.html │ ├── promise-0.1.1.min.js │ ├── function.html │ ├── base.css │ ├── README.md │ ├── publish.js │ ├── titlepage.html │ └── LICENSE └── polymer │ ├── polymer.html │ ├── build.log │ ├── bower.json │ ├── .bower.json │ ├── README.md │ └── layout.html ├── front_matter.html ├── main.html ├── scope.html ├── algorithms_list.txt ├── README.md ├── normative_references.html ├── cxx_N3797_index.json ├── terms_and_definitions.html ├── general.html ├── exceptions.html └── execution_policies.html /bower_components/core-component-page/bowager-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cplusplus/parallelism-ts/HEAD/bower_components/core-component-page/bowager-logo.png -------------------------------------------------------------------------------- /bower_components/core-ajax/README.md: -------------------------------------------------------------------------------- 1 | core-ajax 2 | ========= 3 | 4 | See the [component page](http://polymer-project.org/docs/elements/core-elements.html#core-ajax) for more information. 5 | -------------------------------------------------------------------------------- /bower_components/core-component-page/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "core-component-page", 3 | "private": true, 4 | "dependencies": { 5 | "webcomponentsjs": "Polymer/webcomponentsjs", 6 | "polymer": "Polymer/polymer#^0.5" 7 | }, 8 | "version": "0.5.6" 9 | } -------------------------------------------------------------------------------- /bower_components/core-ajax/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "core-ajax", 3 | "private": true, 4 | "dependencies": { 5 | "polymer": "Polymer/polymer#^0.5.0" 6 | }, 7 | "devDependencies": { 8 | "polymer-test-tools": "Polymer/polymer-test-tools#master" 9 | }, 10 | "version": "0.5.2" 11 | } -------------------------------------------------------------------------------- /bower_components/webcomponentsjs/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webcomponentsjs", 3 | "main": "webcomponents.js", 4 | "version": "0.5.5", 5 | "homepage": "http://webcomponents.org", 6 | "authors": [ 7 | "The Polymer Authors" 8 | ], 9 | "keywords": [ 10 | "webcomponents" 11 | ], 12 | "license": "BSD", 13 | "ignore": [] 14 | } -------------------------------------------------------------------------------- /bower_components/core-ajax/test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /front_matter.html: -------------------------------------------------------------------------------- 1 |{{begin}}, {{end}})
18 | This Technical Specification describes requirements for implementations of an 4 | interface that computer programs written in the C++ programming language may 5 | use to invoke algorithms with parallel execution. The algorithms described by 6 | this Technical Specification are realizable across a broad class of 7 | computer architectures.
8 | 9 |This Technical Specification is non-normative. Some of the functionality 10 | described by this Technical Specification may be considered for standardization 11 | in a future version of C++, but it is not currently part of any C++ standard. 12 | Some of the functionality in this Technical Specification may never be 13 | standardized, and other functionality may be standardized in a substantially 14 | changed form.
15 | 16 |The goal of this Technical Specification is to build widespread existing 17 | practice for parallelism in the C++ standard algorithms library. It gives 18 | advice on extensions to those vendors who wish to provide them.
19 |The following referenced document is indispensable for the 5 | application of this document. For dated references, only the 6 | edition cited applies. For undated references, the latest edition 7 | of the referenced document (including any amendments) applies.
8 | 9 |ISO/IEC 14882:— is herein called the C++ Standard. 16 | The library described in ISO/IEC 14882:— clauses 17-30 is herein called 17 | the C++ Standard Library. The C++ Standard Library components described in 18 | ISO/IEC 14882:— clauses 25, 26.7 and 20.7.2 are herein called the C++ Standard 19 | Algorithms Library.
20 | 21 |Unless otherwise specified, the whole of the C++ Standard's Library
22 | introduction (
34 |
35 |
45 | Published:
35 | 39 | 40 | 41 | 42 |For the purposes of this document, the terms and definitions given in the C++ Standard and the following apply.
5 | 6 |A parallel algorithm is a function template described by this Technical Specification declared in namespace std::experimental::parallel::v2 with a formal template parameter named ExecutionPolicy.
9 | Parallel algorithms access objects indirectly accessible via their arguments by invoking the following functions: 10 | 11 |
sort function may invoke the following element access functions:
37 |
38 | RandomAccessIterator.
42 | swap function on the elements of the sequence (as per 25.4.1.1 [sort]/2).
46 | Compare function object.
50 |
68 | 31 | ISO (the International Organization for Standardization) is a 32 | worldwide federation of national standards bodies (ISO member 33 | bodies). The work of preparing International Standards is 34 | normally carried out through ISO technical committees. Each 35 | member body interested in a subject for which a technical 36 | committee has been established has the right to be represented 37 | on that committee. International organizations, governmental 38 | and non-governmental, in liaison with ISO, also take part in 39 | the work. ISO collaborates closely with the International 40 | Electrotechnical Commission (IEC) on all matters of 41 | electrotechnical standardization. 42 |
43 |44 | The procedures used to develop this document and those 45 | intended for its further maintenance are described in the 46 | ISO/IEC Directives, Part 1. In particular the different 47 | approval criteria needed for the different types of ISO 48 | documents should be noted. This document was drafted in 49 | accordance with the editorial rules of the ISO/IEC Directives, 50 | Part 2. 51 | www.iso.org/directives 52 |
53 |54 | Attention is drawn to the possibility that some of the 55 | elements of this document may be the subject of patent rights. 56 | ISO shall not be held responsible for identifying any or all 57 | such patent rights. Details of any patent rights identified 58 | during the development of the document will be in the 59 | Introduction and/or on the ISO list of patent declarations 60 | received. 61 | www.iso.org/patents 62 |
63 |64 | Any trade name used in this document is information given for 65 | the convenience of users and does not constitute an 66 | endorsement. 67 |
68 |69 | For an explanation on the meaning of ISO specific terms and 70 | expressions related to conformity assessment, as well as 71 | information about ISO's adherence to the WTO principles in the 72 | Technical Barriers to Trade (TBT) see the following URL: 73 | Foreword - Supplementary information 74 |
75 |76 | The committee responsible for this document is ISO/IEC JTC1. 77 |
78 |Since the extensions described in this Technical Specification are
7 | experimental and not part of the C++ Standard Library, they should not be
8 | declared directly within namespace std. Unless otherwise specified, all
9 | components described in this Technical Specification are declared in namespace
10 | std::experimental::parallel::v2.
std.
14 | Unless otherwise specified, references to such entities described in this
17 | Technical Specification are assumed to be qualified with
18 | std::experimental::parallel::v2, and references to entities described in the C++
19 | Standard Library are assumed to be qualified with std::.
Extensions that are expected to eventually be added to an existing header
22 | <meow> are provided inside the <experimental/meow> header,
23 | which shall include the standard contents of <meow> as if by
26 | #include <meow>
27 |
28 | An implementation that provides support for this Technical Specification shall define the feature test macro(s) in Table 1.
33 | 34 || Name | 41 |Value | 42 |Header | 43 |
|---|---|---|
__cpp_lib_experimental_parallel_algorithm |
46 | 201505 | 47 |
48 | <experimental/algorithm>49 | <experimental/exception_list>50 | <experimental/execution_policy>51 | <experimental/numeric>
52 | |
53 |
__cpp_lib_experimental_parallel_task_block |
56 | 201510 | 57 |
58 | <experimental/task_block>59 | |
60 |
| Doc. No. | 72 |Title | 73 |Primary Section | 74 |Macro Name | 75 |Value | 76 |Header | 77 |
|---|---|---|---|---|---|
| N4505 | 80 |Working Draft, Technical Specification for C++ Extensions for Parallelism | 81 |__cpp_lib_experimental_parallel_algorithm |
83 | 201505 | 84 |
85 | <experimental/algorithm>86 | <experimental/exception_list>87 | <experimental/execution_policy>88 | <experimental/numeric>
89 | |
90 | |
| P0155R0 | 93 |Task Block R5 | 94 |__cpp_lib_experimental_parallel_task_block |
96 | 201510 | 97 |
98 | <experimental/task_block>99 | |
100 | |
| P0076R4 | 103 |Vector and Wavefront Policies | 104 |__cpp_lib_experimental_execution_vector_policy |
106 | 201707 | 107 |
108 | <experimental/algorithm>109 | <experimental/execution>110 | |
111 |
25 |
26 |
6 | During the execution of a standard parallel algorithm,
7 | if temporary memory resources are required and none are available,
8 | the algorithm throws a std::bad_alloc exception.
9 |
11 | During the execution of a standard parallel algorithm, if the invocation of an element access function 12 | exits via an uncaught exception, the behavior of the program is determined by the type of 13 | execution policy used to invoke the algorithm: 14 | 15 |
class parallel_vector_execution_policy, unsequenced_policy, or vector_policy,
18 | std::terminate shall be called.
19 | sequential_execution_policy or
22 | parallel_execution_policy, the execution of the algorithm exits via an
23 | exception. The exception shall be an exception_list containing all uncaught exceptions thrown during
24 | the invocations of element access functions, or optionally the uncaught exception if there was only one.25 |26 | 27 |
for_each is executed sequentially,
29 | if an invocation of the user-provided function object throws an exception, for_each can exit via the uncaught exception, or throw an exception_list containing the original exception.
30 | 31 |32 | 33 |
std::bad_alloc, all exceptions thrown during the execution of
36 | the algorithm are communicated to the caller. It is unspecified whether an algorithm implementation will "forge ahead" after
37 | encountering and capturing a user exception.
38 | 39 |40 |
std::bad_alloc exception even if one or more
42 | user-provided function objects have exited via an exception. For example, this can happen when an algorithm fails to allocate memory while
43 | creating or adding elements to the exception_list object.
44 | <experimental/exception_list> synopsis
56 |
57 | namespace std {
58 | namespace experimental {
59 | namespace parallel {
60 | inline namespace v2 {
61 |
62 | class exception_list : public exception
63 | {
64 | public:
65 | typedef unspecified iterator;
66 |
67 | size_t size() const noexcept;
68 | iterator begin() const noexcept;
69 | iterator end() const noexcept;
70 |
71 | const char* what() const noexcept override;
72 | };
73 | }
74 | }
75 | }
76 | }
77 |
78 |
79 |
80 | The class exception_list owns a sequence of exception_ptr objects. The parallel
81 | algorithms may use the exception_list to communicate uncaught exceptions encountered during parallel execution to the
82 | caller of the algorithm.
83 |
86 | The type exception_list::iterator shall fulfill the requirements of
87 | ForwardIterator.
88 |
exception_ptr objects contained within the exception_list.
95 | exception_ptr object contained within the exception_list.
107 |