Skip to content

Commit baa42d2

Browse files
committed
Committing Parallel STL 20190305 open source release
1 parent 972f98e commit baa42d2

File tree

129 files changed

+10332
-7053
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+10332
-7053
lines changed

.clang-format

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
BasedOnStyle: LLVM
2+
3+
Language: Cpp
4+
Standard: Cpp11
5+
6+
IndentWidth: 4
7+
ColumnLimit: 120
8+
9+
AlwaysBreakTemplateDeclarations: true
10+
AlwaysBreakAfterReturnType: All
11+
PointerAlignment: Left
12+
AllowShortIfStatementsOnASingleLine: false
13+
BreakBeforeBraces: Allman
14+
15+
# Disable formatting options which may break tests.
16+
SortIncludes: false
17+
ReflowComments: false

.gitattributes

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
# Declare files that will always have CRLF line endings on checkout.
3838
*.sln text eol=crlf
3939
*.bat text eol=crlf
40+
*.vcxproj text eol=crlf
4041

4142
# Denote all files that are truly binary and should not be modified.
4243
*.png binary

CHANGES

+12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
------------------------------------------------------------------------
22
The list of most significant changes made over time in Parallel STL.
33

4+
Parallel STL release within Intel(R) Parallel Studio XE 2019 Update 3
5+
PSTL_VERSION == 204
6+
7+
Bugs fixed:
8+
- Fixed compilation error for usage of PSTL_USE_PARALLEL_POLICIES macro.
9+
- Fixed compilation error for reordering standard included files.
10+
11+
Examples:
12+
13+
- Added CMake support for convex_hull and dot_product samples.
14+
15+
------------------------------------------------------------------------
416
Parallel STL 20181204 release
517
PSTL_VERSION == 203
618

CMakeLists.txt

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
# Copyright (c) 2018 Intel Corporation
1+
##===-- CMakeLists.txt ----------------------------------------------------===##
22
#
3-
# Licensed under the Apache License, Version 2.0 (the "License");
4-
# you may not use this file except in compliance with the License.
5-
# You may obtain a copy of the License at
6-
#
7-
# http://www.apache.org/licenses/LICENSE-2.0
8-
#
9-
# Unless required by applicable law or agreed to in writing, software
10-
# distributed under the License is distributed on an "AS IS" BASIS,
11-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12-
# See the License for the specific language governing permissions and
13-
# limitations under the License.
3+
# Copyright (C) 2018-2019 Intel Corporation
144
#
5+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
156
#
7+
# This file incorporates work covered by the following copyright and permission
8+
# notice:
169
#
10+
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
11+
# See https://llvm.org/LICENSE.txt for license information.
1712
#
13+
##===----------------------------------------------------------------------===##
1814

1915
cmake_minimum_required(VERSION 3.1)
2016

CREDITS.txt

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
This file is a partial list of people who have contributed to the LLVM/pstl
2+
(Parallel STL) project. If you have contributed a patch or made some other
3+
contribution to LLVM/pstl, please submit a patch to this file to add yourself,
4+
and it will be done!
5+
6+
The list is sorted by surname and formatted to allow easy grepping and
7+
beautification by scripts. The fields are: name (N), email (E), web-address
8+
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
9+
(S).
10+
11+
N: Intel Corporation
12+
W: http://www.intel.com
13+
D: Created the initial implementation.
14+
15+
N: Thomas Rodgers
16+
17+
D: Identifier name transformation for inclusion in a Standard C++ library.

LICENSE LICENSE.txt

+38-21
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
Version 2.0, January 2004
33
http://www.apache.org/licenses/
44

5-
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
5+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
66

7-
1. Definitions.
7+
1. Definitions.
88

99
"License" shall mean the terms and conditions for use, reproduction,
1010
and distribution as defined by Sections 1 through 9 of this document.
@@ -63,14 +63,14 @@
6363
on behalf of whom a Contribution has been received by Licensor and
6464
subsequently incorporated within the Work.
6565

66-
2. Grant of Copyright License. Subject to the terms and conditions of
66+
2. Grant of Copyright License. Subject to the terms and conditions of
6767
this License, each Contributor hereby grants to You a perpetual,
6868
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
6969
copyright license to reproduce, prepare Derivative Works of,
7070
publicly display, publicly perform, sublicense, and distribute the
7171
Work and such Derivative Works in Source or Object form.
7272

73-
3. Grant of Patent License. Subject to the terms and conditions of
73+
3. Grant of Patent License. Subject to the terms and conditions of
7474
this License, each Contributor hereby grants to You a perpetual,
7575
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
7676
(except as stated in this section) patent license to make, have made,
@@ -86,7 +86,7 @@
8686
granted to You under this License for that Work shall terminate
8787
as of the date such litigation is filed.
8888

89-
4. Redistribution. You may reproduce and distribute copies of the
89+
4. Redistribution. You may reproduce and distribute copies of the
9090
Work or Derivative Works thereof in any medium, with or without
9191
modifications, and in Source or Object form, provided that You
9292
meet the following conditions:
@@ -127,20 +127,20 @@
127127
reproduction, and distribution of the Work otherwise complies with
128128
the conditions stated in this License.
129129

130-
5. Submission of Contributions. Unless You explicitly state otherwise,
130+
5. Submission of Contributions. Unless You explicitly state otherwise,
131131
any Contribution intentionally submitted for inclusion in the Work
132132
by You to the Licensor shall be under the terms and conditions of
133133
this License, without any additional terms or conditions.
134134
Notwithstanding the above, nothing herein shall supersede or modify
135135
the terms of any separate license agreement you may have executed
136136
with Licensor regarding such Contributions.
137137

138-
6. Trademarks. This License does not grant permission to use the trade
138+
6. Trademarks. This License does not grant permission to use the trade
139139
names, trademarks, service marks, or product names of the Licensor,
140140
except as required for reasonable and customary use in describing the
141141
origin of the Work and reproducing the content of the NOTICE file.
142142

143-
7. Disclaimer of Warranty. Unless required by applicable law or
143+
7. Disclaimer of Warranty. Unless required by applicable law or
144144
agreed to in writing, Licensor provides the Work (and each
145145
Contributor provides its Contributions) on an "AS IS" BASIS,
146146
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
@@ -150,7 +150,7 @@
150150
appropriateness of using or redistributing the Work and assume any
151151
risks associated with Your exercise of permissions under this License.
152152

153-
8. Limitation of Liability. In no event and under no legal theory,
153+
8. Limitation of Liability. In no event and under no legal theory,
154154
whether in tort (including negligence), contract, or otherwise,
155155
unless required by applicable law (such as deliberate and grossly
156156
negligent acts) or agreed to in writing, shall any Contributor be
@@ -162,7 +162,7 @@
162162
other commercial damages or losses), even if such Contributor
163163
has been advised of the possibility of such damages.
164164

165-
9. Accepting Warranty or Additional Liability. While redistributing
165+
9. Accepting Warranty or Additional Liability. While redistributing
166166
the Work or Derivative Works thereof, You may choose to offer,
167167
and charge a fee for, acceptance of support, warranty, indemnity,
168168
or other liability obligations and/or rights consistent with this
@@ -173,9 +173,9 @@
173173
incurred by, or claims asserted against, such Contributor by reason
174174
of your accepting any such warranty or additional liability.
175175

176-
END OF TERMS AND CONDITIONS
176+
END OF TERMS AND CONDITIONS
177177

178-
APPENDIX: How to apply the Apache License to your work.
178+
APPENDIX: How to apply the Apache License to your work.
179179

180180
To apply the Apache License to your work, attach the following
181181
boilerplate notice, with the fields enclosed by brackets "[]"
@@ -186,16 +186,33 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright [yyyy] [name of copyright owner]
189+
Copyright [yyyy] [name of copyright owner]
190190

191-
Licensed under the Apache License, Version 2.0 (the "License");
192-
you may not use this file except in compliance with the License.
193-
You may obtain a copy of the License at
191+
Licensed under the Apache License, Version 2.0 (the "License");
192+
you may not use this file except in compliance with the License.
193+
You may obtain a copy of the License at
194194

195195
http://www.apache.org/licenses/LICENSE-2.0
196196

197-
Unless required by applicable law or agreed to in writing, software
198-
distributed under the License is distributed on an "AS IS" BASIS,
199-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200-
See the License for the specific language governing permissions and
201-
limitations under the License.
197+
Unless required by applicable law or agreed to in writing, software
198+
distributed under the License is distributed on an "AS IS" BASIS,
199+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200+
See the License for the specific language governing permissions and
201+
limitations under the License.
202+
203+
204+
--- LLVM Exceptions to the Apache 2.0 License ----
205+
206+
As an exception, if, as a result of your compiling your source code, portions
207+
of this Software are embedded into an Object form of such source code, you
208+
may redistribute such embedded portions in such Object form without complying
209+
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
210+
211+
In addition, if you combine or link compiled forms of this Software with
212+
software that is licensed under the GPLv2 ("Combined Software") and if a
213+
court of competent jurisdiction determines that the patent provision (Section
214+
3), the indemnity provision (Section 9) or other Section of the License
215+
conflicts with the conditions of the GPLv2, you may retroactively and
216+
prospectively choose to deem waived or otherwise exclude such Section(s) of
217+
the License, but only in their entirety and only with respect to the Combined
218+
Software.

ParallelSTLConfig.cmake.in

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
# Copyright (c) 2018 Intel Corporation
1+
##===-- ParallelSTLConfig.cmake.in ----------------------------------------===##
22
#
3-
# Licensed under the Apache License, Version 2.0 (the "License");
4-
# you may not use this file except in compliance with the License.
5-
# You may obtain a copy of the License at
6-
#
7-
# http://www.apache.org/licenses/LICENSE-2.0
8-
#
9-
# Unless required by applicable law or agreed to in writing, software
10-
# distributed under the License is distributed on an "AS IS" BASIS,
11-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12-
# See the License for the specific language governing permissions and
13-
# limitations under the License.
3+
# Copyright (C) 2018-2019 Intel Corporation
144
#
5+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
156
#
7+
# This file incorporates work covered by the following copyright and permission
8+
# notice:
169
#
10+
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
11+
# See https://llvm.org/LICENSE.txt for license information.
1712
#
13+
##===----------------------------------------------------------------------===##
1814

1915
include(CMakeFindDependencyMacro)
2016

README.md

+22-13
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
1-
# Parallel STL
2-
[![Stable release](https://img.shields.io/badge/version-20181204-green.svg)](https://github.com/intel/parallelstl/releases/tag/20181204)
1+
# Parallel STL
2+
[![Stable release](https://img.shields.io/badge/version-20190305-green.svg)](https://github.com/intel/parallelstl/releases/tag/20190305)
33
[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE)
44

5-
Parallel STL is an implementation of the C++ standard library algorithms with support for execution policies,
6-
as specified in the working draft N4659 for the next version of the C++ standard, commonly called C++17.
7-
The implementation also supports the unsequenced execution policy specified in the ISO* C++ working group paper P0076R3.
5+
Parallel STL is an implementation of the C++ standard library algorithms with support for execution policies,
6+
as specified in ISO/IEC 14882:2017 standard, commonly called C++17.
7+
The implementation also supports the unsequenced execution policy specified in Parallelism TS version 2
8+
and proposed for the next version of the C++ standard in the C++ working group paper P1001R1.
89

910
Parallel STL offers a portable implementation of threaded and vectorized execution of standard C++ algorithms, optimized and validated for Intel(R) 64 processors.
1011
For sequential execution, it relies on an available implementation of the C++ standard library.
1112

13+
The source code in this repository corresponds to the releases of Parallel STL with Intel(R) C++ Compiler or with Threading Building Blocks.
14+
The upstream source code repository for development has moved to LLVM, with the GitHub mirror at https://github.com/llvm-mirror/pstl.
15+
1216
## Prerequisites
1317
To use Parallel STL, you must have the following software installed:
1418
* C++ compiler with:
@@ -20,20 +24,25 @@ To use Parallel STL, you must have the following software installed:
2024
Here are the latest [Changes](CHANGES) and [Release Notes](doc/Release_Notes.txt) (contains system requirements and known issues).
2125

2226
## License
23-
Parallel STL is licensed under [Apache License Version 2.0](LICENSE).
27+
Parallel STL is licensed under [Apache License Version 2.0 with LLVM exceptions](LICENSE).
2428

2529
## Documentation
26-
[Getting Started](https://software.intel.com/en-us/get-started-with-pstl) with Parallel STL.
30+
See [Getting Started](https://software.intel.com/en-us/get-started-with-pstl) with Parallel STL.
2731

28-
## Support
29-
Please report issues and suggestions via
30-
[GitHub issues](https://github.com/intel/parallelstl/issues) or start a topic on the
32+
## Support and contribution
33+
Please report issues and suggestions via [LLVM Bugzilla](https://bugs.llvm.org/),
34+
[GitHub issues](https://github.com/intel/parallelstl/issues), or start a topic on the
3135
[TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/).
3236

33-
## Engineering team contacts
34-
* [E-mail us.](mailto:[email protected])
37+
If you want to contribute to the development, please do it via the upstream repository at LLVM.
38+
Read [the LLVM Developer Policy](https://llvm.org/docs/DeveloperPolicy.html) for additional details.
39+
Pull requests to this repository are no more accepted.
40+
41+
## Contacts
42+
* [libc++ developers mailing list](https://lists.llvm.org/mailman/listinfo/libcxx-dev)
43+
* [E-mail the TBB team](mailto:[email protected])
3544

3645
------------------------------------------------------------------------
3746
Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
3847

39-
\* Other names and brands may be claimed as the property of others.
48+
\* Other names and brands may be claimed as the property of others.

doc/Release_Notes.txt Release_Notes.txt

+5-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Software - Supported Compilers
7979
For each supported Linux* operating system, the standard gcc
8080
version provided with that operating system is supported
8181
GNU Compilers (gcc) 4.8 - 7.1
82-
Clang* 3.3 - 3.8
82+
Clang* 3.8 - 7.0
8383
Xcode* 7.0 - 9.1
8484
Android* NDK r13 - r17b
8585

@@ -97,6 +97,10 @@ Known Issues or limitations
9797
transform_exclusive_scan, transform_inclusive_scan shall satisfy
9898
the DefaultConstructible requirements. A default constructed-instance
9999
of the initial value type shall be the identity element for binary_op.
100+
The initial value type for exclusive_scan, inclusive_scan, reduce,
101+
transform_reduce, transform_exclusive_scan, transform_inclusive_scan
102+
shall additionally satisfy the MoveAssignable and the CopyConstructible
103+
requirements.
100104
For max_element, min_element, minmax_element, partial_sort,
101105
partial_sort_copy, sort, stable_sort the dereferenced value type of
102106
the provided iterators shall be DefaultConstructible.

build/Makefile

+14-18
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
# Copyright (c) 2017-2018 Intel Corporation
1+
##===-- Makefile ----------------------------------------------------------===##
22
#
3-
# Licensed under the Apache License, Version 2.0 (the "License");
4-
# you may not use this file except in compliance with the License.
5-
# You may obtain a copy of the License at
6-
#
7-
# http://www.apache.org/licenses/LICENSE-2.0
8-
#
9-
# Unless required by applicable law or agreed to in writing, software
10-
# distributed under the License is distributed on an "AS IS" BASIS,
11-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12-
# See the License for the specific language governing permissions and
13-
# limitations under the License.
3+
# Copyright (C) 2017-2019 Intel Corporation
144
#
5+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
156
#
7+
# This file incorporates work covered by the following copyright and permission
8+
# notice:
169
#
10+
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
11+
# See https://llvm.org/LICENSE.txt for license information.
1712
#
13+
##===----------------------------------------------------------------------===##
1814

1915
#------------------------------------------------------------------------------
2016
# Define rules for making the Parallel STL library.
@@ -51,6 +47,7 @@ $(PSTL_LIB_NAME):
5147
$(MAKE) -f $(PSTL_MAKEFILE) backend=$(backend) cfg=$(cfg)
5248

5349
test_%.exe: test_%$(OBJ_SFX) $(PSTL_LIB_NAME)
50+
$(info LIBRARY_PATH=$(LIBRARY_PATH))
5451
$(LD) $< $(LD_OUT_KEY)$@ $(LDFLAGS) $(DYN_LDFLAGS) $(PSTL_LIB_LINK)
5552

5653
test_%: test_%.exe
@@ -74,11 +71,13 @@ test: $(test_bin)
7471
%.E: %.cpp
7572
$(CPLUS) $(CPLUS_FLAGS) -E $< >$@
7673

74+
algo_target ?= algorithm.json
75+
7776
TEMPLATE_FILES=$(wildcard $(proj_root)/bench/*.*tmpl)
7877
BENCH_COMMON_FILES=$(wildcard $(proj_root)/bench/*.h) $(wildcard $(proj_root)/bench/*.cpp)
7978

80-
$(BENCH_MAKEFILE): $(proj_root)/bench/algorithm.json $(proj_root)/bench/gen.py $(TEMPLATE_FILES)
81-
$(PYTHON) $(proj_root)/bench/gen.py $(proj_root)/bench/algorithm.json
79+
$(BENCH_MAKEFILE): $(proj_root)/bench/$(algo_target) $(proj_root)/bench/gen.py $(TEMPLATE_FILES)
80+
$(PYTHON) $(proj_root)/bench/gen.py $(proj_root)/bench/$(algo_target)
8281

8382
bench : $(BENCH_MAKEFILE) $(BENCH_COMMON_FILES) $(PSTL_LIB_NAME)
8483
@echo TEMPLATE_FILES=$(TEMPLATE_FILES)
@@ -103,9 +102,6 @@ info:
103102
@echo OS = $(os_name)
104103
@echo proj_root = "$(proj_root)"
105104
@echo $(CURDIR)
106-
@echo VPATH = $(VPATH)
107-
@echo LIBRARY_PATH = $(LIBRARY_PATH)
108-
@echo backend = $(backend)
109-
@echo compiler = $(compiler)
105+
@echo VPATH=$(VPATH)
110106

111107
-include *.d

0 commit comments

Comments
 (0)