{"id":19297304,"url":"https://github.com/insieme/insieme","last_synced_at":"2025-04-22T09:30:43.246Z","repository":{"id":8196445,"uuid":"9626931","full_name":"insieme/insieme","owner":"insieme","description":"The Insieme Compiler and Runtime Infrastructure","archived":false,"fork":false,"pushed_at":"2019-05-23T11:45:29.000Z","size":78761,"stargazers_count":33,"open_issues_count":41,"forks_count":6,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-11-09T23:02:27.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/insieme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-23T15:50:23.000Z","updated_at":"2024-05-02T07:03:39.000Z","dependencies_parsed_at":"2022-08-06T21:16:08.666Z","dependency_job_id":null,"html_url":"https://github.com/insieme/insieme","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insieme%2Finsieme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insieme%2Finsieme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insieme%2Finsieme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insieme%2Finsieme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/insieme","download_url":"https://codeload.github.com/insieme/insieme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250214981,"owners_count":21393705,"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":[],"created_at":"2024-11-09T23:01:51.009Z","updated_at":"2025-04-22T09:30:38.229Z","avatar_url":"https://github.com/insieme.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# Insieme: Compiler and Runtime Infrastructure\n\nThe Insieme compiler is a source-to-source compiler for C/C++ that supports\nportable parallel abstractions (Cilk, OpenMP and [AllScale API]) for\nheterogeneous multi-core architectures. See our [mission statement] for more\ndetails.\n\n[AllScale API]: \u003chttp://www.allscale.eu/\u003e\n[mission statement]: \u003chttp://insieme-compiler.org/mission.html\u003e\n\n## Quick Start Guide\n\nTo build Insieme, clone this repository and take a peek at `QUICKSTART`. You\ncan directly execute it, given you are running a recent Ubuntu / Debian (and\nhave `sudo` installed).\n\n    $ git clone https://github.com/insieme/insieme\n    $ cd insieme\n    $ ./QUICKSTART    # prompts for sudo\n\nIf you are using a different distribution use your package manager to install\nall dependencies available. The generalized list of dependencies can be viewed\nin [`/scripts/dependencies/README.md`](scripts/dependencies/README.md). The\nlist of system packages installed by the quick start guide are found in\n[`system_packages`](scripts/environment/system_packages).\n\nFor software not available in your package manager (or the ones that require an\nInsieme specific patch) use the provided dependency installer inside\n`/scripts/dependencies`.\n\n## Directory Structure\n\nInsieme contains 5 sub-directories:\n\n| Directory  | Contains                            |\n| ---------- | ----------------------------------- |\n| `/code`    | Compiler and runtime implementation |\n| `/cmake`   | CMake modules                       |\n| `/docs`    | Developer documentation             |\n| `/scripts` | Utility scripts                     |\n| `/test`    | Integration tests                   |\n\nThroughout this README the build directory is assumed to be `/build`.\n\n## Advanced Settings\n\n### Configuration\n\nFollowing options can be supplied to CMake:\n\n| Option                         | Values          |\n| ------------------------------ | --------------- |\n| -DCMAKE_BUILD_TYPE             | Release / Debug |\n| -DBUILD_SHARED_LIBS            | ON / OFF        |\n| -DBUILD_TESTS                  | ON / OFF        |\n| -DBUILD_DOCS                   | ON / OFF        |\n| -DBUILD_COVERAGE               | ON / OFF        |\n| -DUSE_ASSERT                   | ON / OFF        |\n| -DUSE_VALGRIND                 | ON / OFF        |\n| -DBUILD_COMPILER               | ON / OFF        |\n| -DBUILD_RUNTIME                | ON / OFF        |\n| -DUSE_PAPI                     | ON / OFF        |\n| -DUSE_ENERGY                   | ON / OFF        |\n| -DANALYSIS_DATALOG             | ON / OFF        |\n| -DANALYSIS_HASKELL             | ON / OFF        |\n| -DINSIEME_C_BACKEND_COMPILER   | \\\u003cpath\\\u003e        |\n| -DINSIEME_CXX_BACKEND_COMPILER | \\\u003cpath\\\u003e        |\n| -DTHIRD_PARTY_DIR              | \\\u003cpath\\\u003e        |\n\nThese settings are defined in\n[`build_settings.cmake`](cmake/build_settings.cmake) and\n[`insieme_specific.cmake`](cmake/insieme_specific.cmake).\n\n### OpenCL\n\nThe backend is also capable of generating OpenCL code. In order to utilize this\nfeature, one must supply the `OPENCL_ROOT` path to CMake. It should point to\nthe directory containing the `include` and `lib64` directory of the OpenCL\ninstallation.\n\n    $ cd build\n    $ cmake -DOPENCL_ROOT=/path/to/opencl ..\n\n### Older GCC\n\nSince some distros still ship a version of GCC that is too old for us to work\nwith, the dependency installer provides a version of GCC suitable for Insieme.\n`CC`, `CXX`, `PATH` and `LD_LIBRARY_PATH` should be set accordingly when\nbuilding Insieme. We assume `BUILD_DIR` contains the absolute path to the\nInsieme build directory.\n\n    $ export CC=\"$BUILD_DIR/third_party/gcc/bin/gcc\"\n    $ export CXX=\"$BUILD_DIR/third_party/gcc/bin/g++\"\n    $ export PATH=\"$BUILD_DIR/third_party/gcc/bin:$PATH\"\n    $ export LD_LIBRARY_PATH=\"$BUILD_DIR/third_party/gcc/lib64\"\n\n### Analysis Framework\n\nThe analysis framework is divided into a common interface and multiple,\ndifferent engines. The common interface has to be instantiated with one of the\navailable engines in order to use it. These engines are disabled by default\nsince they depend on additional third-party packages. They can be enabled by\npassing their respective flags to the `cmake` call.\n\nSee [`/scripts/dependencies/README.md`](scripts/dependencies/README.md) for\ninformation how to install their respective dependencies.\n\nFor some analysis engines additional paths must be provided to CMake:\n\n| Analysis Engine      | Required Path                                              |\n| -------------------- | ---------------------------------------------------------- |\n| Datalog (DEPRECATED) | -DSOUFFLE_ROOT=/path/to/souffle/prefix                     |\n\n### Running Tests\n\nThe build process will automatically build and run the `integration_tests`\nbinary with the `--preprocess` flag. This is required for some unit tests as\nwell as some integration tests.\n\nUnit tests can be run via `ctest` as shown in the quick start guide:\n\n    $ cd build\n    $ ctest -j8\n\nIntegration tests can be run via the `integration_tests` binary.\n\n    $ cd build\n    $ driver/integration_tests -w 8\n\nFurthermore the integration test driver provides useful features, like\nrepeating a test multiple times. See a full list of options by using `-h` as\nargument.\n\nRunning the `integration_tests` binary with `--postprocessing` after all tests\nhave been completed successfully is recommended to clean up files generated in\nthe preprocessing setp.\n\nIf everything was successful...\n**congratulations! You can start enjoying Insieme now!**\n\n### Compiling Application Codes\n\nThe main executable provided by the Insieme framework is called `insiemecc`,\nlocated in `/build/driver`. It can be used to replace e.g. occurrences of\nanother compiler such as `gcc` in makefiles. It supports both\nsource-to-source-only compilation, as well as full compilation by calling a\nbackend compiler. Environment variables `INSIEME_C_BACKEND_COMPILER` and\n`INSIEME_CXX_BACKEND_COMPILER` can be used to change the backend compiler at\nruntime, while the CMake options `-DINSIEME_C_BACKEND_COMPILER` and\n`-DINSIEME_CXX_BACKEND_COMPILER` allow setting the compiler prior building.\n`gcc` and `g++` are used as default. For further information on its features\nand options, please refer to:\n\n    $ cd build\n    $ driver/insiemecc --help\n\n### Installation\n\nPlease, understand that the install command is not implemented since this is an\non-going development framework. Instead of polluting your local setup, we\nprefer to use Insieme from the build directory. Install scripts may be provided\nin future releases.\n\n## Development\n\n### Licensor\n\nA script, together with a Git hook, is provided to automatically add a license\nheader to each source file upon commit. See `/scripts/license`.\n\n### Visual Studio Solution\n\n    $ cmake -G \"Visual Studio 15 2017 Win64\" -DBUILD_SHARED_LIBS=OFF Z:\\path\\to\\project\\code\n\n### Coverage\n\nBuilding the coverage is currently only supported on Linux, as Perl and Bash\nare required. To build and view the coverage set the corresponding CMake flag\nto `ON` and run:\n\n    $ make\n    $ make coverage\n    $ xdg-open coverage/index.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsieme%2Finsieme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finsieme%2Finsieme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsieme%2Finsieme/lists"}