All Projects → ispc → Ispc

ispc / Ispc

Licence: bsd-3-clause
Intel SPMD Program Compiler

Programming Languages

C++
36643 projects - #6 most used programming language
LLVM
166 projects
M4
1887 projects
python
139335 projects - #7 most used programming language
CMake
9771 projects
Yacc
648 projects

Projects that are alternatives of or similar to Ispc

Akilang
A compiler for a simple language, built with Python and LLVM
Stars: ✭ 71 (-96.31%)
Mutual labels:  compiler, llvm
Numba Scipy
numba_scipy extends Numba to make it aware of SciPy
Stars: ✭ 98 (-94.91%)
Mutual labels:  compiler, llvm
Ghdl
VHDL 2008/93/87 simulator
Stars: ✭ 1,285 (-33.21%)
Mutual labels:  compiler, llvm
Compiler Explorer
Run compilers interactively from your web browser and interact with the assembly
Stars: ✭ 9,844 (+411.64%)
Mutual labels:  compiler, ispc
Flax
general purpose programming language, in the vein of C++
Stars: ✭ 111 (-94.23%)
Mutual labels:  compiler, llvm
Kai
An expressive low level programming language
Stars: ✭ 68 (-96.47%)
Mutual labels:  compiler, llvm
Amplifier.net
Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
Stars: ✭ 92 (-95.22%)
Mutual labels:  compiler, simd
Zion
A statically-typed strictly-evaluated garbage-collected readable programming language.
Stars: ✭ 33 (-98.28%)
Mutual labels:  compiler, llvm
Brain
An esoteric programming language compiler on top of LLVM based on Brainfuck
Stars: ✭ 112 (-94.18%)
Mutual labels:  compiler, llvm
Fanx
A portable programming language
Stars: ✭ 101 (-94.75%)
Mutual labels:  compiler, llvm
Leekscript V2
A dynamically typed, compiled just-in-time programming language used in Leek Wars' AIs
Stars: ✭ 46 (-97.61%)
Mutual labels:  compiler, llvm
Thorin
The Higher-Order Intermediate Representation
Stars: ✭ 116 (-93.97%)
Mutual labels:  compiler, simd
Llvm Tutorial Standalone
DEPRECATED (Use: https://github.com/llvm-hs/llvm-hs-kaleidoscope )
Stars: ✭ 38 (-98.02%)
Mutual labels:  compiler, llvm
Seeless
C IDE for iOS
Stars: ✭ 71 (-96.31%)
Mutual labels:  compiler, llvm
Unlisp Llvm
Compiler for a toy Lisp language
Stars: ✭ 33 (-98.28%)
Mutual labels:  compiler, llvm
Enzyme.jl
Julia bindings for the Enzyme automatic differentiator
Stars: ✭ 90 (-95.32%)
Mutual labels:  compiler, llvm
Cfl
a Compileable statically typed Functional programming Language
Stars: ✭ 7 (-99.64%)
Mutual labels:  compiler, llvm
Lyca
programming language compiler w/ llvm
Stars: ✭ 9 (-99.53%)
Mutual labels:  compiler, llvm
Faust
Functional programming language for signal processing and sound synthesis
Stars: ✭ 1,360 (-29.31%)
Mutual labels:  compiler, llvm
Hikari
LLVM Obfuscator
Stars: ✭ 1,585 (-17.62%)
Mutual labels:  compiler, llvm

Appveyor build status (Windows)

Intel® Implicit SPMD Program Compiler (Intel® ISPC)

ispc is a compiler for a variant of the C programming language, with extensions for single program, multiple data programming. Under the SPMD model, the programmer writes a program that generally appears to be a regular serial program, though the execution model is actually that a number of program instances execute in parallel on the hardware.

Overview

ispc compiles a C-based SPMD programming language to run on the SIMD units of CPUs and GPUs; it frequently provides a 3x or more speedup on architectures with 4-wide vector SSE units and 5x-6x on architectures with 8-wide AVX vector units, without any of the difficulty of writing intrinsics code. Parallelization across multiple cores is also supported by ispc, making it possible to write programs that achieve performance improvement that scales by both number of cores and vector unit size.

There are a few key principles in the design of ispc:

  • To build a small set of extensions to the C language that would deliver excellent performance to performance-oriented programmers who want to run SPMD programs on the CPU and GPU.

  • To provide a thin abstraction layer between the programmer and the hardware--in particular, to have an execution and data model where the programmer can cleanly reason about the mapping of their source program to compiled assembly language and the underlying hardware.

  • To make it possible to harness the computational power of SIMD vector units without the extremely low-programmer-productivity activity of directly writing intrinsics.

  • To explore opportunities from close coupling between C/C++ application code and SPMD ispc code running on the same processor--to have lightweight function calls between the two languages and to share data directly via pointers without copying or reformatting.

ispc is an open source compiler with the BSD license. It uses the remarkable LLVM Compiler Infrastructure for back-end code generation and optimization and is hosted on github. It supports Windows, Mac, and Linux, with both x86 and x86-64 targets. It currently supports the SSE2, SSE4, AVX, AVX2, and AVX512 instruction sets.

Features

ispc provides a number of key features to developers:

  • Familiarity as an extension of the C programming language: ispc supports familiar C syntax and programming idioms, while adding the ability to write SPMD programs.

  • High-quality SIMD code generation: the performance of code generated by ispc is often close to that of hand-written intrinsics code.

  • Ease of adoption with existing software systems: functions written in ispc directly interoperate with application functions written in C/C++ and with application data structures.

  • Portability across over a decade of CPU generations: ispc has targets for SSE2, SSE4, AVX, AVX2, and AVX512 and recent Intel GPUs.

  • Portability across operating systems: Microsoft Windows, macOS, Linux, and FreeBSD are all supported by ispc.

  • Debugging with standard tools: ispc programs can be debugged with standard debuggers.

Additional Resources

Prebuilt ispc binaries for Windows, macOS and Linux can be downloaded from the ispc downloads page. Latest ispc binaries corresponding to main branch can be downloaded from Appveyor for Linux and Windows (msi or zip) See also additional documentation and additional performance information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].