Skip to content
/ beeclust Public

MI-PYT task for the B181 semester

License

Notifications You must be signed in to change notification settings

cvut/beeclust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

beeclust

BeeClust swarming algorithm with Python’s NumPy with Cython speedup.

Zadání úkolu

Vaším úkolem za 5 bodů je zrychlit pomocí Cythonu úkol ze cvičení na NumPy tak, aby zvládal řešit i simulaci o rozměrech cca tisíc × tisíc na moderním počítači (srovnatelném s těmi ve školní učebně) v rozumném čase. Za 10 sekund by měl být schopen 20× spočítat heatmap či 20× spočítat swarms či 20× provést tick().

Úkol musí splňovat všechny náležitosti z úlohy na NumPy + podmínku na čas.

Pokud teprve začínáte, můžete použít naše řešení minulé úlohy.

ℹ️
Předpokladem pro úspěšné splnění úlohy je, že vaše algoritmy jsou „rozumně rychlé“ ze své podstaty. Cython může váš program zrychlit, ale pouze řádově, např. algoritmus s exponenciálním časem bude mít stále exponenciální čas. Před zrychlováním pomocí Cythonu důrazně doporučujeme zjistit, nakolik se vaše stávající implementace časově liší od té naší, a v případě velikých rozdílů se naší implementací přinejmenším inspirovat.

Automatické testy

Součástí zadání jsou opět testy ve složce tests a jsou doplněny o testy rychlosti dle zadání úkolu na Cython. Testy rychlosti můžete zakázat pomocí přepínače -k "not speed", nebo naopak povolit jen je pomocí -k speed.

Pro spuštění testů nainstalujte do virtuálního prostředí balíky pytest, pytest-timeout a numpy. Žádný speciální setup není vyžadován. Testy trvají řádově nižší jednotky vteřin, pokud se vaše algoritmy nezacyklí.

$ python -m pytest -v tests

Testy si můžete zkopírovat k sobě do repozitáře, považujte je za Public Domain. Některé testy obsahují vysvětlující komentář.

Testy musí jít spustit z kořenového adresáře vašeho repozitáře a všechny musí projít. Je to podmínka nutná (nikoli však dostačující) k získání maximálního počtu bodů.

Odevzdání úkolu

Odkaz na repozitář s aplikací nám pošlete e-mailem. Pro odevzdání v repozitáři (jiný než pro filabel a pandas) nastavte tag v0.2.

Následující příkazy musí po instalaci závislostí z requirements.txt fungovat:

$ python setup.py build_ext -i  # sestaví modul napsaný v Cythonu
$ python -m pytest -v tests # pustí testy
$ python -c 'from beeclust import BeeClust; BeeClust(...)'  # lze importovat a použít z Pythonu

Nepoužívejte pyximport.

Termín odevzdání je u této úlohy klasicky v pondělí (včetně) za 12 dní.