Skip to content

Commit

Permalink
Committing Parallel STL 20190305 open source release
Browse files Browse the repository at this point in the history
  • Loading branch information
tbbdev committed Mar 5, 2019
1 parent 972f98e commit baa42d2
Show file tree
Hide file tree
Showing 129 changed files with 10,332 additions and 7,053 deletions.
17 changes: 17 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
BasedOnStyle: LLVM

Language: Cpp
Standard: Cpp11

IndentWidth: 4
ColumnLimit: 120

AlwaysBreakTemplateDeclarations: true
AlwaysBreakAfterReturnType: All
PointerAlignment: Left
AllowShortIfStatementsOnASingleLine: false
BreakBeforeBraces: Allman

# Disable formatting options which may break tests.
SortIncludes: false
ReflowComments: false
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
*.bat text eol=crlf
*.vcxproj text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
Expand Down
12 changes: 12 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
------------------------------------------------------------------------
The list of most significant changes made over time in Parallel STL.

Parallel STL release within Intel(R) Parallel Studio XE 2019 Update 3
PSTL_VERSION == 204

Bugs fixed:
- Fixed compilation error for usage of PSTL_USE_PARALLEL_POLICIES macro.
- Fixed compilation error for reordering standard included files.

Examples:

- Added CMake support for convex_hull and dot_product samples.

------------------------------------------------------------------------
Parallel STL 20181204 release
PSTL_VERSION == 203

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

cmake_minimum_required(VERSION 3.1)

Expand Down
17 changes: 17 additions & 0 deletions CREDITS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
This file is a partial list of people who have contributed to the LLVM/pstl
(Parallel STL) project. If you have contributed a patch or made some other
contribution to LLVM/pstl, please submit a patch to this file to add yourself,
and it will be done!

The list is sorted by surname and formatted to allow easy grepping and
beautification by scripts. The fields are: name (N), email (E), web-address
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
(S).

N: Intel Corporation
W: http://www.intel.com
D: Created the initial implementation.

N: Thomas Rodgers
E: [email protected]
D: Identifier name transformation for inclusion in a Standard C++ library.
59 changes: 38 additions & 21 deletions LICENSE → LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.
1. Definitions.

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

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

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

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

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

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

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

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

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

END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.
APPENDIX: How to apply the Apache License to your work.

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

Copyright [yyyy] [name of copyright owner]
Copyright [yyyy] [name of copyright owner]

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

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

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


--- LLVM Exceptions to the Apache 2.0 License ----

As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.

In addition, if you combine or link compiled forms of this Software with
software that is licensed under the GPLv2 ("Combined Software") and if a
court of competent jurisdiction determines that the patent provision (Section
3), the indemnity provision (Section 9) or other Section of the License
conflicts with the conditions of the GPLv2, you may retroactively and
prospectively choose to deem waived or otherwise exclude such Section(s) of
the License, but only in their entirety and only with respect to the Combined
Software.
20 changes: 8 additions & 12 deletions ParallelSTLConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
# Copyright (c) 2018 Intel Corporation
##===-- ParallelSTLConfig.cmake.in ----------------------------------------===##
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (C) 2018-2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
# This file incorporates work covered by the following copyright and permission
# notice:
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
#
##===----------------------------------------------------------------------===##

include(CMakeFindDependencyMacro)

Expand Down
35 changes: 22 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
# Parallel STL
[![Stable release](https://img.shields.io/badge/version-20181204-green.svg)](https://github.com/intel/parallelstl/releases/tag/20181204)
# Parallel STL
[![Stable release](https://img.shields.io/badge/version-20190305-green.svg)](https://github.com/intel/parallelstl/releases/tag/20190305)
[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE)

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

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

The source code in this repository corresponds to the releases of Parallel STL with Intel(R) C++ Compiler or with Threading Building Blocks.
The upstream source code repository for development has moved to LLVM, with the GitHub mirror at https://github.com/llvm-mirror/pstl.

## Prerequisites
To use Parallel STL, you must have the following software installed:
* C++ compiler with:
Expand All @@ -20,20 +24,25 @@ To use Parallel STL, you must have the following software installed:
Here are the latest [Changes](CHANGES) and [Release Notes](doc/Release_Notes.txt) (contains system requirements and known issues).

## License
Parallel STL is licensed under [Apache License Version 2.0](LICENSE).
Parallel STL is licensed under [Apache License Version 2.0 with LLVM exceptions](LICENSE).

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

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

## Engineering team contacts
* [E-mail us.](mailto:[email protected])
If you want to contribute to the development, please do it via the upstream repository at LLVM.
Read [the LLVM Developer Policy](https://llvm.org/docs/DeveloperPolicy.html) for additional details.
Pull requests to this repository are no more accepted.

## Contacts
* [libc++ developers mailing list](https://lists.llvm.org/mailman/listinfo/libcxx-dev)
* [E-mail the TBB team](mailto:[email protected])

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

\* Other names and brands may be claimed as the property of others.
\* Other names and brands may be claimed as the property of others.
6 changes: 5 additions & 1 deletion doc/Release_Notes.txt → Release_Notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ Software - Supported Compilers
For each supported Linux* operating system, the standard gcc
version provided with that operating system is supported
GNU Compilers (gcc) 4.8 - 7.1
Clang* 3.3 - 3.8
Clang* 3.8 - 7.0
Xcode* 7.0 - 9.1
Android* NDK r13 - r17b

Expand All @@ -97,6 +97,10 @@ Known Issues or limitations
transform_exclusive_scan, transform_inclusive_scan shall satisfy
the DefaultConstructible requirements. A default constructed-instance
of the initial value type shall be the identity element for binary_op.
The initial value type for exclusive_scan, inclusive_scan, reduce,
transform_reduce, transform_exclusive_scan, transform_inclusive_scan
shall additionally satisfy the MoveAssignable and the CopyConstructible
requirements.
For max_element, min_element, minmax_element, partial_sort,
partial_sort_copy, sort, stable_sort the dereferenced value type of
the provided iterators shall be DefaultConstructible.
Expand Down
32 changes: 14 additions & 18 deletions build/Makefile
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
# Copyright (c) 2017-2018 Intel Corporation
##===-- Makefile ----------------------------------------------------------===##
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (C) 2017-2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
# This file incorporates work covered by the following copyright and permission
# notice:
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
#
##===----------------------------------------------------------------------===##

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

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

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

algo_target ?= algorithm.json

TEMPLATE_FILES=$(wildcard $(proj_root)/bench/*.*tmpl)
BENCH_COMMON_FILES=$(wildcard $(proj_root)/bench/*.h) $(wildcard $(proj_root)/bench/*.cpp)

$(BENCH_MAKEFILE): $(proj_root)/bench/algorithm.json $(proj_root)/bench/gen.py $(TEMPLATE_FILES)
$(PYTHON) $(proj_root)/bench/gen.py $(proj_root)/bench/algorithm.json
$(BENCH_MAKEFILE): $(proj_root)/bench/$(algo_target) $(proj_root)/bench/gen.py $(TEMPLATE_FILES)
$(PYTHON) $(proj_root)/bench/gen.py $(proj_root)/bench/$(algo_target)

bench : $(BENCH_MAKEFILE) $(BENCH_COMMON_FILES) $(PSTL_LIB_NAME)
@echo TEMPLATE_FILES=$(TEMPLATE_FILES)
Expand All @@ -103,9 +102,6 @@ info:
@echo OS = $(os_name)
@echo proj_root = "$(proj_root)"
@echo $(CURDIR)
@echo VPATH = $(VPATH)
@echo LIBRARY_PATH = $(LIBRARY_PATH)
@echo backend = $(backend)
@echo compiler = $(compiler)
@echo VPATH=$(VPATH)

-include *.d
Loading

0 comments on commit baa42d2

Please sign in to comment.