Giter VIP home page Giter VIP logo

ilgpu's Introduction

ILGPU

CI

ILGPU is a JIT (just-in-time) compiler for high-performance GPU programs written in .Net-based languages. ILGPU is entirely written in C# without any native dependencies. It offers the flexibility and the convenience of C++ AMP on the one hand and the high performance of Cuda programs on the other hand. Functions in the scope of kernels do not have to be annotated (default C# functions) and are allowed to work on value types. All kernels (including all hardware features like shared memory and atomics) can be executed and debugged on the CPU using the integrated multi-threaded CPU accelerator.

ILGPU.Algorithms

Real-world applications typically require a standard library and a set of standard algorithms that "simply work". The ILGPU Algorithms library meets these requirements by offering a set of auxiliary functions and high-level algorithms (e.g. sorting or prefix sum). All algorithms can be run on all supported accelerator types. The CPU accelerator support is especially useful for kernel debugging.

Community

Discord

The ILGPU community provides immediate help, feedback and suggestions via Discord ASAP. Log on to the server and you can get started right away.

There are weekly talk-to-dev meetings on the Discord server. Don't hesitate to join the meeting if you have any questions or suggestions or just want to talk to one of the contributors. Check out the welcome channel on our Discord server for more information.

ILGPU Samples

The sample projects demonstrate the basic usage of ILGPU to help you get started with high performance GPU programming.

Build Instructions

ILGPU requires Visual Studio 2022 (or higher) and/or a .NET 6.0 SDK toolchain.

Use the provided Visual Studio solution to build the ILGPU libs in the desired configurations (Debug/Release).

Tests

Sometimes the XUnit test runner stops execution when all tests are run in parallel. This is not a problem related to the internal tests, but a known XUnit/Visual Studio problem. If the tests stop unexpectedly, you can simply run the remaining tests again to continue working.

Note: You can unload ILGPU.Tests.Cuda (for example) if you do not have a Cuda-capable device to execute the Cuda test cases.

Related Information

Preview versions

Preview/Daily builds are distributed using https://feedz.io/. To pull preview versions into your project, use the following NuGet.config file:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="ilgpu" value="https://f.feedz.io/ilgpu/preview/nuget/index.json" />
  </packageSources>
</configuration>

Symbols

Symbols for ILGPU can be loaded in VS2022. For official releases, ensure that the built-in NuGet.org Symbol Server is enabled. For preview release symbols, add the link:

https://f.feedz.io/ilgpu/preview/symbols

Source Link

ILGPU also provides Source Link support for a better debugging experience. Make sure Enable Source Link support is activated in VS2022 options.

General Contribution Guidelines

  • Make sure that you agree with the general coding style (in terms of braces, whitespaces etc.).
  • Make sure that ILGPU compiles without warnings in all build modes (Debug, DebugVerification and Release).

References

  • Parallel Thread Execution ISA 7.0
    • NVIDIA
  • A Graph-Based Higher-Order Intermediate Representation
    • Roland Leissa, Marcel Koester, and Sebastian Hack
  • Target-Specific Refinement of Multigrid Codes
    • Richard Membarth, Philipp Slusallek, Marcel Koester, Roland Leissa, and Sebastian Hack
  • Code Refinement of Stencil Codes
    • Marcel Koester, Roland Leissa, Sebastian Hack, Richard Membarth, and Philipp Slusallek
  • Simple and Efficient Construction of Static Single Assignment Form
    • Matthias Braun, Sebastian Buchwald, Sebastian Hack, Roland Leissa, Christoph Mallon and Andreas Zwinkau
  • A Simple, Fast Dominance Algorithm
    • Keith D. Cooper, Timothy J. Harvey and Ken Kennedy
  • Fast Half Float Conversions
    • Jeroen van der Zijp
  • Identifying Loops In Almost Linear Time
    • G. Ramalingam

License information

ILGPU is licensed under the University of Illinois/NCSA Open Source License. Detailed license information can be found in LICENSE.txt.

Copyright (c) 2016-2024 ILGPU Project. All rights reserved.

Originally developed by Marcel Koester.

License information of required dependencies

Different parts of ILGPU require different third-party libraries.

Detailed copyright and license information of these dependencies can be found in LICENSE-3RD-PARTY.txt.

ilgpu's People

Contributors

12345swordy avatar 76creates avatar adamreeve avatar albosc avatar conghuiw avatar deng0 avatar dependabot[bot] avatar dfki-jugr avatar dfki-mako avatar github-actions[bot] avatar ifzen avatar jgiannuzzi avatar joey9801 avatar kilngod avatar kosmosisdire avatar ljubon avatar lostmsu avatar m4rs-mt avatar marcin-krystianc avatar mfagerlund avatar mikhail-khalizev avatar moftz avatar naskio avatar nnelg avatar nullandkale avatar pavlovic-ivan avatar phoyd avatar ruberik avatar tricehelix avatar yey007 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.