ILGPU
CI
ILGPU는 .Net 기반 언어로 작성된 고성능 GPU 프로그램용 JIT(Just-In-Time) 컴파일러입니다.
ILGPU는 네이티브 종속성이 전혀 없는 순수 C#으로만 작성되었습니다.
이는 한편으로는 C++ AMP의 유연성과 편리성을, 다른 한편으로는 CUDA 프로그램의 높은 성능을 제공합니다.
커널 범위 내 함수는 주석 처리할 필요가 없으며 (기본 C# 함수), 값 타입(value types)에서도 작동하도록 허용됩니다.
모든 커널(공유 메모리 및 원자적 연산과 같은 모든 하드웨어 기능 포함)은 통합 멀티스레드 CPU 가속기를 사용하여 CPU에서 실행 및 디버깅할 수 있습니다.
ILGPU.Algorithms
실제 애플리케이션에서는 일반적으로 '단순히 작동하는' 표준 라이브러리와 표준 알고리즘 세트가 필요합니다.
ILGPU Algorithms 라이브러리는 보조 함수와 고급 알고리즘(예: 정렬 또는 접두사 합계)을 제공하여 이러한 요구 사항을 충족합니다.
모든 알고리즘은 지원되는 모든 가속기 유형에서 실행될 수 있습니다.
CPU 가속기 지원은 특히 커널 디버깅에 유용합니다.
Discord
ILGPU 커뮤니티는 Discord를 통해 즉각적인 도움, 피드백 및 제안을 제공합니다.
서버에 접속하여 바로 시작할 수 있습니다.
Discord 서버에서는 매주 talk-to-dev 미팅이 열립니다.
질문이나 제안 사항이 있거나 기여자 중 한 명과 단순히 이야기하고 싶더라도 주저하지 말고 미팅에 참여하세요.
더 많은 정보는 Discord 서버의 welcome 채널을 확인해 주세요.
ILGPU Samples
샘플 프로젝트들은 고성능 GPU 프로그래밍을 시작하는 데 도움을 주기 위해 ILGPU의 기본 사용법을 시연합니다.
Build Instructions
ILGPU를 사용하려면 Visual Studio 2022(또는 그 이상) 및/또는 .NET 6.0 SDK 툴체인이 필요합니다.
제공된 Visual Studio 솔루션을 사용하여 원하는 구성(Debug/Release)으로 ILGPU 라이브러리를 빌드하세요.
테스트 (Tests)
때때로 모든 테스트를 병렬(parallel)로 실행할 때 XUnit 테스트 러너가 실행을 중지합니다. 이는 내부 테스트와 관련된 문제가 아니라 알려진 XUnit/Visual Studio 문제입니다. 테스트가 예기치 않게 중지되면, 남아 있는 테스트를 다시 실행하여 작업을 계속할 수 있습니다.
참고(Note): Cuda 테스트 케이스를 실행할 Cuda 지원 장치(device)가 없는 경우, ILGPU.Tests.Cuda와 같은 라이브러리를 언로드(unload)할 수 있습니다.
프리뷰 버전 (Preview versions)
프리뷰/데일리 빌드는 https://feedz.io/를 사용하여 배포됩니다. 프로젝트에 프리뷰 버전을 가져오려면 다음 NuGet.config 파일을 사용하세요:
<?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)
ILGPU의 심볼은 VS2022에서 로드할 수 있습니다. 공식 릴리스의 경우, 내장된 NuGet.org Symbol Server가 활성화되어 있는지 확인하세요. 프리뷰 릴리스 심볼의 경우, 다음 링크를 추가하세요:
# 소스 링크 (Source Link)
ILGPU는 또한 더 나은 디버깅 경험을 위해 Source Link 지원을 제공합니다. [VS2022 옵션]에서 '소스 링크 지원 활성화(Enable Source Link support)'가 활성화되어 있는지 확인하세요.
# 일반 기여 가이드라인 (General Contribution Guidelines)
* 일반적인 코딩 스타일(중괄호, 공백 등)에 동의하는지 확인하십시오.
* 모든 빌드 모드(Debug, DebugVerification 및 Release)에서 ILGPU가 경고 없이 컴파일되는지 확인하십시오.
# 참고 문헌 (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는 University of Illinois/NCSA 오픈 소스 라이선스 하에 라이선스가 부여됩니다.
자세한 라이선스 정보는 LICENSE.txt에서 확인할 수 있습니다.
저작권 (c) 2016-2026 ILGPU 프로젝트. 모든 권리 보유.
원래 개발: Marcel Koester
## 필수 종속성 라이브러리 정보 (License information of required dependencies)
ILGPU의 여러 부분이 다른 타사(third-party) 라이브러리를 요구합니다.
* ILGPU 종속성 (ILGPU Dependencies)
- System.Collections.Immutable
(https://www.nuget.org/packages/System.Collections.Immutable)
- System.Memory
(https://www.nuget.org/packages/System.Memory)
- System.Reflection.Metadata
(https://www.nuget.org/packages/System.Reflection.Metadata)
- System.Runtime.CompilerServices.Unsafe
(https://www.nuget.org/packages/system.runtime.CompilerServices.Unsafe/)
이러한 종속성들의 자세한 저작권 및 라이선스 정보는 LICENSE-3RD-PARTY.txt에서 확인할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52