Diskuze: Porovnání výpočetních prostředí a programových produktů.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Já bych to pochopil asi tak, že si projdu první tři tutoriály na třeba C++ a zkusím nějaký výpočet porovnat v něm a v Matlabu?
Nevím jestli je na vysoké zrovna vhodné zkopírovat něcí poznatky aniž si je sám vyzkoušíš na reálným případu, zde například: C++ vs Matlab
To si také uvědomuju ale jak jsem řekl je málo času. (Určitě to ale zmíním, že tyto informace mám nevyzkoušené)
Jen tak ve zkratce.
Pokud máš originální kód vektorizovaný, je přepsání do R poměrně
jednoduché, protože primitivní typ v R je vektor.
Stejně jako v matlabu je v R for-cyklus hodně drahá záležitost, lepší se
vyhnout.
Výkon v R bude asi o něco nižší, protože nejede na více jádrech, musíš
se o to postarat sám.
Přepis do C++ je horší, je tam hodně faktorů.
Abys z C++ vymáčkl výkon Matlabu, musíš zapnout vektorové optimalizace
nebo použít nějakou knihovnu pro BLAS.
Když si dáš opravdu hodně práce, bude C++ nakonec rychlejší - pokud
opravdu umíš C++ a víš, jak programovat efektivně.
Když to shrnu, v Matlabu máš výkon zadarmo, v C++ si ho musíš
vydřít.
Java dopadne katastrofálně ve všech případech, jakmile se ti tam mihne
větší matice, program nejspíš ani nedoběhne.
Jediná šance Javy je vzít implementaci BLAS a přesunout co nejvíc svého
kódu pryč z Javy.
A ještě mě napadla jedna možnost, pokud použiješ podporu pro CUDA, což můžeš určitě v Matlabu, C++ i Pythonu, vytáhneš z toho klidně 100x zrychlení úplně zadarmo.
Velmi záleží na výpočtech, které program dělá a na možnosti jejich paralelizace.
. Zas tak růžově s CUDA bych to neviděl – pouze fakt, že počítáš s vektory nestačí. Je třeba dát pozor také na to, že přenos dat mezi procesorem a grafickou kartou něco stojí a že paměťový model na kartě je poněkud jiný a zejména na starších modelech dosti ošklivý (cache se moc nevedou). Ale rozhodně je pravda, že použití CUDA může přinést výrazné zrychlení.
U matlabu a jemu podobných jazyků/prostředí máš výhodu v knihovnách a dostupných matematických funkcí. Pro jiné jazyky (C++, Java) je budeš muset najít a naučit se s nimi.
Zobrazeno 9 zpráv z 9.