Both sides previous revision
Previous revision
|
Next revision
Both sides next revision
|
user:zeman:rizeni-pokusu-pomoci-makefilu [2009/03/19 22:18] zeman Cluster. |
user:zeman:rizeni-pokusu-pomoci-makefilu [2009/03/20 18:32] zeman Absolutní a relativní cesty. |
| |
Některé kroky bývají výpočetně náročné a hodilo by se je dělat na clusteru. Zvláště pokud zpracováváme stejným způsobem třeba 10 jazyků, hodilo by se zpracovávat je všechny paralelně. Paralelní práce s makem je problém, protože je potřeba propojit hlídání závislostí s distribucí úloh: qsub se vrátí dříve než je cíl připraven, takže nemůžeme hned přejít k tvorbě cílů, které na něm závisí. GNU make umí paralelizovat zpracování v rámci několika procesorů téhož stroje (při volání můžeme říct, na kolik procesů se smí zpracování rozštěpit), ale podpora pro spolupráci s clusterem mu chybí. Existují nějaké paralelní maky, ale myslím, že nejsou standardně nainstalované všude (pravděpodobně ani u nás) a řešení na nich postavené by nebylo snadno přenositelné. | Některé kroky bývají výpočetně náročné a hodilo by se je dělat na clusteru. Zvláště pokud zpracováváme stejným způsobem třeba 10 jazyků, hodilo by se zpracovávat je všechny paralelně. Paralelní práce s makem je problém, protože je potřeba propojit hlídání závislostí s distribucí úloh: qsub se vrátí dříve než je cíl připraven, takže nemůžeme hned přejít k tvorbě cílů, které na něm závisí. GNU make umí paralelizovat zpracování v rámci několika procesorů téhož stroje (při volání můžeme říct, na kolik procesů se smí zpracování rozštěpit), ale podpora pro spolupráci s clusterem mu chybí. Existují nějaké paralelní maky, ale myslím, že nejsou standardně nainstalované všude (pravděpodobně ani u nás) a řešení na nich postavené by nebylo snadno přenositelné. |
| |
| ===== Absolutní a relativní cesty ===== |
| |
| Make neprovádí ''pwd'', takže neví, že ''$(MOJESLOZKA)/soubor.txt'' a ''soubor.txt'' je případně tentýž soubor (cíl). Má-li být součástí zpracování kopírování souborů z jedné složky do jiné, pak je nejbezpečnější uvádět všechny soubory absolutní cestou. V tom případě je ovšem potřeba počítat s tím, že make bude s dlouhou cestou k souboru pracovat po celou dobu včetně všech šablonových pravidel, což může případně komplikovat návrh šablon v těchto pravidlech. |
| |
| Nevýhodou je také délka. Kopie volání, které make vypíše do terminálu, budou méně přehledné. Pokud navíc pracujeme s velkým množstvím souborů, snadněji se nám stane, že někde překročíme nejvyšší povolenou délku příkazového řádku. |
| |
| Pokud oddělíme kopírování dat ze vzdálených složek do samostatného Makefilu a pokud v rámci jednoho Makefilu omezíme případné přesuny mezi složkami na takové, které se dají vyjádřit relativní cestou (tj. typicky podstrom složky, ve které leží Makefile), pak si vystačíme s relativními cestami. Poznámka: I kopírování ze vzdálených složek lze pak vyřešit tím, že si na vzdálené složky vyrobíme ze složky s Makefilem symbolický odkaz. |
| |