{"id":13533335,"url":"https://github.com/ispc/ispc","last_synced_at":"2025-05-13T23:06:37.570Z","repository":{"id":1550565,"uuid":"1931356","full_name":"ispc/ispc","owner":"ispc","description":"Intel® Implicit SPMD Program Compiler","archived":false,"fork":false,"pushed_at":"2025-04-09T22:57:19.000Z","size":48268,"stargazers_count":2641,"open_issues_count":324,"forks_count":329,"subscribers_count":92,"default_branch":"main","last_synced_at":"2025-04-10T01:03:29.725Z","etag":null,"topics":["compiler","intel","ispc","programming-language","simd","spmd"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ispc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-06-21T20:21:45.000Z","updated_at":"2025-04-09T16:47:45.000Z","dependencies_parsed_at":"2023-02-16T12:31:25.946Z","dependency_job_id":"ef9aa958-d8b4-4888-b374-59b723244d3e","html_url":"https://github.com/ispc/ispc","commit_stats":{"total_commits":5459,"total_committers":125,"mean_commits":43.672,"dds":0.8043597728521708,"last_synced_commit":"5725fb8d495980af52b417ae0c7a89e2a258d2bd"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispc%2Fispc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispc%2Fispc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispc%2Fispc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispc%2Fispc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ispc","download_url":"https://codeload.github.com/ispc/ispc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137893,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","intel","ispc","programming-language","simd","spmd"],"created_at":"2024-08-01T07:01:18.839Z","updated_at":"2025-04-10T01:03:46.714Z","avatar_url":"https://github.com/ispc.png","language":"C++","readme":"[![main](https://github.com/ispc/ispc/actions/workflows/pre-release-artifacts.yml/badge.svg)](https://github.com/ispc/ispc/actions/workflows/pre-release-artifacts.yml)\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9395/badge)](https://www.bestpractices.dev/projects/9395)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ispc/ispc/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ispc/ispc)\n[![Bandit](https://github.com/ispc/ispc/actions/workflows/bandit.yml/badge.svg)](https://github.com/ispc/ispc/actions/workflows/bandit.yml)\n[![Coverity](https://scan.coverity.com/projects/30508/badge.svg)](https://scan.coverity.com/projects/intel-ispc)\n[![Trivy](https://github.com/ispc/ispc/actions/workflows/trivy.yml/badge.svg)](https://github.com/ispc/ispc/actions/workflows/trivy.yml)\n[![Cve-bin](https://github.com/ispc/ispc/actions/workflows/cve-bin.yml/badge.svg)](https://github.com/ispc/ispc/actions/workflows/cve-bin.yml)\n[![ClamAV](https://github.com/ispc/ispc/actions/workflows/clamav.yml/badge.svg)](https://github.com/ispc/ispc/actions/workflows/clamav.yml)\n[![Hardening Checks](https://github.com/ispc/ispc/actions/workflows/hardening-check.yml/badge.svg)](https://github.com/ispc/ispc/actions/workflows/hardening-check.yml)\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true\u0026ref=main\u0026repo=1931356)\n\n# Intel® Implicit SPMD Program Compiler (Intel® ISPC)\n\n`ispc` is a compiler for a variant of the C programming language, with\nextensions for [single program, multiple\ndata](http://en.wikipedia.org/wiki/SPMD) programming.  Under the SPMD model,\nthe programmer writes a program that generally appears to be a regular serial\nprogram, though the execution model is actually that a number of *program\ninstances* execute in parallel on the hardware.\n\n## Overview\n\n`ispc` compiles a C-based SPMD programming language to run on the SIMD units of\nCPUs and GPUs; it frequently provides a 3x or more speedup on architectures\nwith 4-wide vector SSE units and 5x-6x on architectures with 8-wide AVX vector\nunits, without any of the difficulty of writing intrinsics code.\nParallelization across multiple cores is also supported by `ispc`, making it\npossible to write programs that achieve performance improvement that scales by\nboth number of cores and vector unit size.\n\nThere are a few key principles in the design of `ispc`:\n\n  * To build a small set of extensions to the C language that would deliver\n    excellent performance to performance-oriented programmers who want to run\n    SPMD programs on the CPU and GPU.\n\n  * To provide a thin abstraction layer between the programmer and the\n    hardware--in particular, to have an execution and data model where the\n    programmer can cleanly reason about the mapping of their source program to\n    compiled assembly language and the underlying hardware.\n\n  * To make it possible to harness the computational power of SIMD vector units\n    without the extremely low-programmer-productivity activity of directly\n    writing intrinsics.\n\n  * To explore opportunities from close coupling between C/C++ application code\n    and SPMD `ispc` code running on the same processor--to have lightweight\n    function calls between the two languages and to share data directly via\n    pointers without copying or reformatting.\n\n`ispc` is an open source compiler with the BSD license.  It uses the remarkable\n[LLVM Compiler Infrastructure](http://llvm.org) for back-end code generation\nand optimization and is [hosted on github](http://github.com/ispc/ispc). It\nsupports Windows, macOS, and Linux as a host operating system and also capable\nto target Android, iOS, and PS4/PS5.  It currently supports multiple flavours\nof x86 (SSE2, SSE4, AVX, AVX2, and AVX512), ARM (NEON), and Intel® GPU\narchitectures (Gen9 and Xe family).\n\n## Features\n\n`ispc` provides a number of key features to developers:\n\n  * Familiarity as an extension of the C programming language: `ispc` supports\n    familiar C syntax and programming idioms, while adding the ability to write\n    SPMD programs.\n\n  * High-quality SIMD code generation: the performance of code generated by\n    `ispc` is often close to that of hand-written intrinsics code.\n\n  * Ease of adoption with existing software systems: functions written in\n    `ispc` directly interoperate with application functions written in C/C++\n    and with application data structures.\n            \n  * Portability across over a decade of CPU generations: `ispc` has targets for\n    x86 SSE2, SSE4, AVX, AVX2, and AVX512, as well as ARM NEON and recent\n    Intel® GPUs.\n\n  * Portability across operating systems: Microsoft Windows, macOS, Linux, and\n    FreeBSD are all supported by `ispc`.\n\n  * Debugging with standard tools: `ispc` programs can be debugged with\n    standard debuggers.\n\n## Installation\n### Official Release Binaries\n\nYou can download the official release binaries from [the latest release\npage](https://github.com/ispc/ispc/releases/latest). Choose the appropriate version\nfor your operating system and architecture.\n\n### Linux (Snap Store)\n\nLinux users can install `ispc` using the Snap Store:\n\n```bash\nsnap install ispc\n```\n\n### Other Package Managers\n\nThanks to community support, `ispc` is also available through a variety of\npackage managers on multiple operating systems.\n\n### Windows\n\nTo install `ispc` on Windows, you can download the latest release as `zip`\narchive from\n[the latest release page](https://github.com/ispc/ispc/releases/latest).\nThen you need to unpack that to some directory. It is user's responsibility to\nset-up permissions for this directory according to the principle of least\nprivilege.\n\nMoreover, `ispc` depends on run-time components of Visual C++ (DLLs). These\nlibraries can be installed with Microsoft Visual C++ Redistributable package.\nInstruction to install them can be found\n[here](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist).\n\n## Development Guide\n\nIf you're interested in contributing to `ispc` or building it from source,\nthis section will help you get started.\n\n### GitHub Codespaces\n\nThe fastest way to get a development environment set up is through GitHub\nCodespaces. This provides a fully configured environment in the cloud, with all\ndependencies pre-installed. Codespaces gives you a browser-based development\nenvironment with everything you need to build, test, and debug ISPC. Click the\nfollowing button to open Codespaces with configured `ispc`:\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true\u0026ref=main\u0026repo=1931356)\n\n### Building From Source\n\nFor detailed instructions on how to build ISPC from source on different\nplatforms, please refer to our\n[ISPC Development Guide](https://github.com/ispc/ispc/wiki/ISPC-Development-Guide)\nfor build and test instructions.\n\n## Additional Resources\n\nLatest `ispc` binaries corresponding to `main` branch can be downloaded from\nthe Github release page for\n[Linux](https://github.com/ispc/ispc/releases/download/trunk-artifacts/ispc-trunk-linux.tar.gz)\nand\n[Windows](https://github.com/ispc/ispc/releases/download/trunk-artifacts/ispc-trunk-windows.zip)\nSee also additional [documentation](https://ispc.github.io/documentation.html)\nand additional [performance information](https://ispc.github.io/perf.html).  If\nyou have a bug report and have a question, you are welcome to open an\n[issue](https://github.com/ispc/ispc/issues) or start a\n[discussion](https://github.com/ispc/ispc/discussions) on GitHub.\n","funding_links":[],"categories":["Software","Uncategorized","C++","Hashing ##"],"sub_categories":["Trends","Uncategorized","Graphic APIs ###"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fispc%2Fispc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fispc%2Fispc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fispc%2Fispc/lists"}