Das Julia Language-Projekt

Auf dieser Seite finden Sie die Details zu einem Projekt für technisches Schreiben, das für Google Season of Docs angenommen wurde.

Projektzusammenfassung

Open-Source-Organisation:
Die Programmiersprache Julia
Technischer Redakteur:
Ellipse0934
Projektname:
Dokumentation für den JuliaGPU-Stack
Projektdauer:
Standardlänge (3 Monate)

Projektbeschreibung

Der Hauptzweck dieses Projekts besteht darin, eine Dokumentation mit vielen Anleitungen und Beispielen zu entwickeln, die Entwicklern den Einstieg in die GPU-Programmierung in Julia erleichtern soll. Leider gibt es nicht viele Ressourcen für die GPU-Programmierung. Da es sich um ein relativ komplexes Thema handelt, ist es für Lernende schwierig. Um eine GPU effektiv zu nutzen, müssen Nutzer nicht nur wissen, wie sie funktioniert, sondern auch verstehen, wie sie funktioniert.

Dieses Projekt kann in drei Teile unterteilt werden (nicht proportional zur Zeit)

 Tutorials: Detailed guides for the beginner to help them get started, profile and debug their code.
 Examples: Write simple extensions to various Julia packages such as Images.jl, SciML.jl,etc.
 API Documentation: Restructure and write documentation to make it intuitive for the user to browse 
 through the documentation.

In diesem Projekt liegt der Schwerpunkt auf CUDA.jl, was aber keine Rolle spielen sollte, da der GPU-Stack von Julia weitgehend plattformunabhängig sein wird. Wenn der ROCm-Stack von AMD fertiggestellt ist und die Intel-GPUs auf den Markt kommen, ist es also nicht sehr aufwendig, die Tutorials und Beispiele dieses Projekts zu portieren.

Die Anleitungen und Beispiele sollen in einem speziellen Bereich auf der Website juliagpu.org veröffentlicht werden. Im Abschnitt zur Anleitung werden unter anderem folgende Themen behandelt:

 Introduction (small rework)
 Mandelbrot : A program to generate an image of the mandelbrot set
 Prefix Scan: Computing the parallel prefix scan on the GPU
 How does a GPU work ? (language agnostic, discusses the architecture)
 Array Programming: Using high level array programming abstractions for GPU programming (Broadcast abstractions, custom array types,.etc)
 Profiling GPU applications (using Nsight and other tools)