|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| .calcite/ | H | 03-May-2022 | - | | |
| .github/workflows/ | H | 15-Jul-2021 | - | 1,610 | 1,325 |
| .gitlab/ | H | 15-Jul-2021 | - | 8 | 6 |
| benchmarks/ | H | 03-May-2022 | - | 1,571 | 1,323 |
| builtins/ | H | 15-Jul-2021 | - | 62,967 | 55,012 |
| cmake/ | H | 03-May-2022 | - | 758 | 708 |
| contrib/ | H | 15-Jul-2021 | - | 51 | 39 |
| docker/ | H | 15-Jul-2021 | - | 1,324 | 998 |
| docs/ | H | 03-May-2022 | - | 7,793 | 5,847 |
| examples/ | H | 15-Jul-2021 | - | 99,540 | 94,226 |
| ispcrt/ | H | 03-May-2022 | - | 5,477 | 3,958 |
| llvm_patches/ | H | 15-Jul-2021 | - | 1,508 | 1,356 |
| scripts/ | H | 15-Jul-2021 | - | 142 | 79 |
| src/ | H | 03-May-2022 | - | 48,569 | 33,994 |
| tests/ | H | 03-May-2022 | - | 30,156 | 24,460 |
| tests_errors/ | H | 15-Jul-2021 | - | 1,439 | 967 |
| utils/lit/ | H | 15-Jul-2021 | - | 5,278 | 3,927 |
| .appveyor.yml | H A D | 15-Jul-2021 | 6.8 KiB | 154 | 146 |
| .clang-format | H A D | 15-Jul-2021 | 3.4 KiB | 122 | 121 |
| .gitignore | H A D | 15-Jul-2021 | 236 | 24 | 21 |
| .gitmodules | H A D | 15-Jul-2021 | 281 | 7 | 6 |
| .travis.yml | H A D | 15-Jul-2021 | 4 KiB | 92 | 87 |
| README.md | H A D | 15-Jul-2021 | 4.5 KiB | 94 | 73 |
| SECURITY.md | H A D | 15-Jul-2021 | 227 | 6 | 4 |
| alloy.py | H A D | 03-May-2022 | 49.9 KiB | 1,074 | 866 |
| bitcode2cpp.py | H A D | 03-May-2022 | 5.3 KiB | 148 | 120 |
| check_env.py | H A D | 03-May-2022 | 4.8 KiB | 118 | 78 |
| check_format.sh | H A D | 15-Jul-2021 | 2.9 KiB | 65 | 28 |
| check_isa.cpp | H A D | 15-Jul-2021 | 7 KiB | 173 | 91 |
| common.py | H A D | 03-May-2022 | 17.9 KiB | 503 | 378 |
| doxygen.cfg | H A D | 15-Jul-2021 | 67.9 KiB | 1,661 | 1,197 |
| perf.ini | H A D | 15-Jul-2021 | 1.2 KiB | 62 | 59 |
| perf.py | H A D | 03-May-2022 | 25 KiB | 612 | 499 |
| run_tests.py | H A D | 03-May-2022 | 43 KiB | 1,103 | 806 |
| stdlib.ispc | H A D | 15-Jul-2021 | 244.2 KiB | 6,836 | 5,976 |
| stdlib2cpp.py | H A D | 03-May-2022 | 460 | 21 | 12 |
| test_static.cpp | H A D | 15-Jul-2021 | 6.9 KiB | 233 | 173 |
| test_static_l0.cpp | H A D | 15-Jul-2021 | 32.1 KiB | 743 | 550 |
| tt_dump_read.py | H A D | 03-May-2022 | 5.1 KiB | 138 | 74 |
README.md
1[![Appveyor build status (Windows)](https://ci.appveyor.com/api/projects/status/xfllw9vkp3lj4l0v/branch/main?svg=true)](https://ci.appveyor.com/project/ispc/ispc/branch/main)
2
3Intel® Implicit SPMD Program Compiler (Intel® ISPC)
4===================================================
5
6``ispc`` is a compiler for a variant of the C programming language, with
7extensions for
8[single program, multiple data](http://en.wikipedia.org/wiki/SPMD)
9programming. Under the SPMD model,
10the programmer writes a program that generally appears to be a regular
11serial program, though the execution model is actually that a number of
12*program instances* execute in parallel on the hardware.
13
14Overview
15--------
16
17``ispc`` compiles a C-based SPMD programming language to run on the SIMD
18units of CPUs and GPUs; it frequently provides a 3x or more speedup on architectures
19with 4-wide vector SSE units and 5x-6x on architectures with 8-wide AVX vector units,
20without any of the difficulty of writing intrinsics code. Parallelization
21across multiple cores is also supported by ``ispc``, making it
22possible to write programs that achieve performance improvement that scales
23by both number of cores and vector unit size.
24
25There are a few key principles in the design of ``ispc``:
26
27 * To build a small set of extensions to the C language that
28 would deliver excellent performance to performance-oriented
29 programmers who want to run SPMD programs on the CPU and GPU.
30
31 * To provide a thin abstraction layer between the programmer
32 and the hardware--in particular, to have an execution and
33 data model where the programmer can cleanly reason about the
34 mapping of their source program to compiled assembly language
35 and the underlying hardware.
36
37 * To make it possible to harness the computational power of SIMD
38 vector units without the extremely low-programmer-productivity
39 activity of directly writing intrinsics.
40
41 * To explore opportunities from close coupling between C/C++
42 application code and SPMD ``ispc`` code running on the
43 same processor--to have lightweight function calls between
44 the two languages and to share data directly via pointers without
45 copying or reformatting.
46
47``ispc`` is an open source compiler with the BSD license. It uses the
48remarkable [LLVM Compiler Infrastructure](http://llvm.org) for back-end
49code generation and optimization and is [hosted on
50github](http://github.com/ispc/ispc). It supports Windows, Mac, and
51Linux, with both x86 and x86-64 targets. It currently supports the SSE2,
52SSE4, AVX, AVX2, and AVX512 instruction sets.
53
54Features
55--------
56
57``ispc`` provides a number of key features to developers:
58
59 * Familiarity as an extension of the C programming
60 language: ``ispc`` supports familiar C syntax and
61 programming idioms, while adding the ability to write SPMD
62 programs.
63
64 * High-quality SIMD code generation: the performance
65 of code generated by ``ispc`` is often close to that of
66 hand-written intrinsics code.
67
68 * Ease of adoption with existing software
69 systems: functions written in ``ispc`` directly
70 interoperate with application functions written in C/C++ and
71 with application data structures.
72
73 * Portability across over a decade of CPU
74 generations: ``ispc`` has targets for SSE2, SSE4, AVX, AVX2, and AVX512 and
75 recent Intel GPUs.
76
77 * Portability across operating systems: Microsoft
78 Windows, macOS, Linux, and FreeBSD are all supported
79 by ``ispc``.
80
81 * Debugging with standard tools: ``ispc``
82 programs can be debugged with standard debuggers.
83
84Additional Resources
85--------------------
86
87Prebuilt ``ispc`` binaries for Windows, macOS and Linux can be downloaded
88from the [ispc downloads page](http://ispc.github.com/downloads.html).
89Latest ``ispc`` binaries corresponding to main branch can be downloaded
90from Appveyor for [Linux](https://ci.appveyor.com/api/projects/ispc/ispc/artifacts/build%2Fispc-trunk-linux.tar.gz?job=Environment%3A%20APPVEYOR_BUILD_WORKER_IMAGE%3DUbuntu1604%2C%20LLVM_VERSION%3Dlatest) and Windows ([msi](https://ci.appveyor.com/api/projects/ispc/ispc/artifacts/build%2Fispc-trunk-windows.msi?job=Environment%3A%20APPVEYOR_BUILD_WORKER_IMAGE%3DVisual%20Studio%202019%2C%20LLVM_VERSION%3Dlatest) or [zip](https://ci.appveyor.com/api/projects/ispc/ispc/artifacts/build%2Fispc-trunk-windows.zip?job=Environment%3A%20APPVEYOR_BUILD_WORKER_IMAGE%3DVisual%20Studio%202019%2C%20LLVM_VERSION%3Dlatest))
91See also additional
92[documentation](http://ispc.github.com/documentation.html) and additional
93[performance information](http://ispc.github.com/perf.html).
94