NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Fleklolik
Člen
Avatar
Fleklolik:2.6.2017 16:04

Dobrý den,
Momentálně pracuju na projektu do mé školy. Jeden z profesorů se mi zeptal. „Jak se ovlivní náročnost výpočtu mých naprogramovaných algoritmů případná změna výpočetního prostředí nebo použití jiného programového produktu?“ Bohužel jsem vždy všechny algoritmy programoval v Matlabu a tak nemám zkušenosti s jinými produkty. Mohl by mi prosím někdo pomoc?

 
Odpovědět
2.6.2017 16:04
Avatar
Odpovídá na Fleklolik
Erik Šťastný:2.6.2017 16:07

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?

 
Nahoru Odpovědět
2.6.2017 16:07
Avatar
Fleklolik
Člen
Avatar
Fleklolik:2.6.2017 16:10

To mě také napadlo bohužel nemám momentálně již moc času na odpověď :( (musím odevzdat zprávu ve které to bude uvedeno) proto se snažím najít někoho kdo by to mohl vědět.

Editováno 2.6.2017 16:10
 
Nahoru Odpovědět
2.6.2017 16:10
Avatar
Odpovídá na Fleklolik
Erik Šťastný:2.6.2017 16:13

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

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
2.6.2017 16:13
Avatar
Fleklolik
Člen
Avatar
Odpovídá na Erik Šťastný
Fleklolik:2.6.2017 16:16

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é)

 
Nahoru Odpovědět
2.6.2017 16:16
Avatar
Fleklolik
Člen
Avatar
Fleklolik:2.6.2017 16:54

Nevýš ještě porovnání s R-kem a Javou?

 
Nahoru Odpovědět
2.6.2017 16:54
Avatar
coells
Tvůrce
Avatar
Odpovídá na Fleklolik
coells:2.6.2017 17:39

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.

 
Nahoru Odpovědět
2.6.2017 17:39
Avatar
coells
Tvůrce
Avatar
Odpovídá na Fleklolik
coells:2.6.2017 18:08

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.

 
Nahoru Odpovědět
2.6.2017 18:08
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Fleklolik
Martin Dráb:3.6.2017 0:26

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.

Nahoru Odpovědět
3.6.2017 0:26
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.