Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jakubfr4czek/concurrent-gauss-elimination
Concurrent gaussian elimination algorithm implemented using traces theory. Parallelism has been achieved employing CUDA cores.
https://github.com/jakubfr4czek/concurrent-gauss-elimination
agh agh-ust agh-wi conda cuda cuda-kernels cuda-toolkit diekert-graph graphviz java python python3 traces-theory
Last synced: about 1 month ago
JSON representation
Concurrent gaussian elimination algorithm implemented using traces theory. Parallelism has been achieved employing CUDA cores.
- Host: GitHub
- URL: https://github.com/jakubfr4czek/concurrent-gauss-elimination
- Owner: JakubFr4czek
- Created: 2024-12-30T20:02:15.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-12-30T20:56:07.000Z (about 1 month ago)
- Last Synced: 2024-12-30T21:35:44.641Z (about 1 month ago)
- Topics: agh, agh-ust, agh-wi, conda, cuda, cuda-kernels, cuda-toolkit, diekert-graph, graphviz, java, python, python3, traces-theory
- Language: HTML
- Homepage:
- Size: 341 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Concurrent Gaussian Elimination
Projekt wykorzystuje teorię śladów do współbieżnego rozwiązania układu równań metodą Eliminacji Gaussa.# Opis zawartości repozytorium
Projekt został napisany w języku Python. Opis wykorzystanych modułów znajduje się w pliku environment.yml.
1) input - folder zawierający przykładowe dane wejściowe
2) output - folder zawierający przykładowe dane wyjściowe:
1) gauss_output.txt - zawiera rozwiązanie układu równań
2) traces_theory_output.txt - zawiera wyznaczony alfabet w sensie teorii śladów, relację zależności, słowo oraz klasy Foaty
3) diekert_graph.png - wyrenderowany graf Diekerta dla zadanego układu równań
3) checker.py - moduł wykorzystujący sprawdzarkę do oceny poprawności kodu (Patrz: sekcja Uruchomienie checkera)
4) main.py - główny moduł, wywołuje funkcje wyznaczające obiekty matematyczne związane z teorią śladów oraz wyznacza rozwiązanie układu równań
5) scheduler.py - moduł odpowiedzialny za współbieżne wyznaczenie macierzy trójkątnej górnej przy wykorzystaniu rdzeni CUDA i wyznaczenie rozwiązania układu równań
6) traces_theory.py - moduł odpowiedzialny za wyznaczenie obiektów matematycznych związanych z teorią śladów
7) tools.py - funkcje pomocnicze do wyznaczania obiektów matematycznych związanych z teorią śladów
8) utility.py - funkcje pomocnicze realizujące zapis / odczyt do plików# Uruchommienie projektu
Do uruchomienia projektu wymagana jest zainstalowana Anadonda (przetestowane na wersji 23.9.0). Oraz karta graficzna firmy Nvidia
posiadająca rdzenie CUDA. Kompatybilne karty można znaleźć tutaj: https://developer.nvidia.com/cuda-gpus.W celu zainstalowania wymaganych zależności należy w terminalu kolejno wpisać:
```bash
cd "Concurrent Gauss Elimination"
conda env create -f environment.yml
conda activate Concurrent-Gauss-Elimination
python main.py input/example_input.txt output
```Domyślnie graf Diekerta nie jest rysowany dla macierzy o rozmiarach większych od 10 bo jest on nieczytelny,
zachowanie to można zmienić ustawiając flagę force_graph na true w
funkcji traces_run w pliku main.py.Funkcje traces_run i scheduler_run w pliku main.py działają niezależnie od siebie, pierwsza jest odpowiedzialna za wyznaczenie
obiektów matematycznych związanych z teorią śladów, a druga za rozwiązanie układu równań (oczywiście wyznaczając wcześniej klasy Foaty).# Uruchomienie checkera
W celu skorzystania ze sprawdzarki wymagana jest instalacja Javy (przetesowane na wersji 21.0.2). Checker automatycznie
kompiluje i uruchamia sprawdzarkę korzystając z poleceń 'javac' i 'java'.W folderze sprawdzarka znajduje się plik checker.py, a w nim funkcja check przyjmująca liczbę naturalną jako argument.
Uruchamia ona załączoną do treści zadania sprawdzarkę dla danego rozmiaru macierzy.