Částicový filtr na Raspberry Pi v Javě

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #15 kdy: 27. 05. 2017, 20:58:41 »
Je to pole pointerů na objekty typu Complex, což žere hodně paměti a zpomaluje garbage collector.

Správně tam udělej dvě pole typu double, jedno pro reálnou část a druhé pro imaginární část. Třídu Complex vůbec nepoužívej, metodu exp rozepiš na operace nad hodnotami typu double.

Musíš zajistit, že v jádru toho cyklu se nebude alokovat žádný objekt, mohou tam být pouze operace s primitivními typy. Pokud tam nějaký objekt alokuješ, pak se z toho garbage collector posere.

Případně můžeš použít jazyk go, ve kterém je možné vyrobit pole struktur (aniž by to byly pointery jako v javě) a je možné se strukturami pracovat jako s primitivními typy, bez zatěžování garbage collectoru.
Nejen Go, tak to má i C++, C#, Swift...


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #16 kdy: 27. 05. 2017, 21:01:56 »
To zadání je tak triviální, že tam není algoritmicky co optimalizovat.

S pamětí ne, ale třeba pro exp() jsou v SSE a AVX vektorové instrukce + se to dá aproximovat (i na NEONu). Na mém Ivy Bridge je AVX aproximace 40x rychlejší než skalární expf, na NEON se mi to přepisovat nechce.
To jo, ale to už chce něco v nativním kódu, ne Javu.

Jenda

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #17 kdy: 27. 05. 2017, 21:03:31 »
S pamětí ne, ale třeba pro exp() jsou v SSE a AVX vektorové instrukce + se to dá aproximovat (i na NEONu). Na mém Ivy Bridge je AVX aproximace 40x rychlejší než skalární expf, na NEON se mi to přepisovat nechce.
To jo, ale to už chce něco v nativním kódu, ne Javu.
Ano, "nějaká optimalizovaná knihovna která třeba používá nějaké triky" nejspíš bude v nativním kódu.

Ivan Nový

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #18 kdy: 28. 05. 2017, 09:28:02 »
Pro práci s maticemi použijte toto https://developer.arm.com/technologies/compute-library

robotron

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #19 kdy: 29. 05. 2017, 11:39:17 »
Otazkou je, jestli ve skutecnosti vubec chces matici 5000x5000 a jeste na ni volat exp(). V kontextu casticovyho filtru a poloh robota si tim zdaleka nejsem jist (podobnou vec jsem delal). Krome toho je teda zjevnej nesmysl delat to na RPi zrovna v Jave (v ni muze bejt klidne zbylejch 99% programu na vyssich vrstvach) a kdyz uz, tak pri kazdym volani znova alokovat pole, to je taky volovina.


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #20 kdy: 29. 05. 2017, 11:43:05 »
Otazkou je, jestli ve skutecnosti vubec chces matici 5000x5000 a jeste na ni volat exp(). V kontextu casticovyho filtru a poloh robota si tim zdaleka nejsem jist (podobnou vec jsem delal). Krome toho je teda zjevnej nesmysl delat to na RPi zrovna v Jave (v ni muze bejt klidne zbylejch 99% programu na vyssich vrstvach) a kdyz uz, tak pri kazdym volani znova alokovat pole, to je taky volovina.
Alokace jednoho pole je levná, jenže Java alokuje ještě všechny prvky znova, to je ten problém. C++/C#/Swift/Go/ADL provede jen jednu alokaci a pak počítá. Ten exp má být správně z matice reálných čísel do matice komplexních čísel, když už teda.

gll

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #21 kdy: 29. 05. 2017, 11:57:21 »
Ten exp má být správně z matice reálných čísel do matice komplexních čísel, když už teda.

Proč?

ropucha

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #22 kdy: 29. 05. 2017, 14:40:13 »
Otazkou je, jestli ve skutecnosti vubec chces matici 5000x5000 a jeste na ni volat exp(). V kontextu casticovyho filtru a poloh robota si tim zdaleka nejsem jist (podobnou vec jsem delal). Krome toho je teda zjevnej nesmysl delat to na RPi zrovna v Jave (v ni muze bejt klidne zbylejch 99% programu na vyssich vrstvach) a kdyz uz, tak pri kazdym volani znova alokovat pole, to je taky volovina.
Alokace jednoho pole je levná, jenže Java alokuje ještě všechny prvky znova, to je ten problém. C++/C#/Swift/Go/ADL provede jen jednu alokaci a pak počítá. Ten exp má být správně z matice reálných čísel do matice komplexních čísel, když už teda.

Java nic nealokuje, to ji programator musi prikazat, v poli jsou leda tak reference na null.

robotorn

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #23 kdy: 29. 05. 2017, 15:16:59 »
to jako filtruješ softwarově prach nebo co? A co jsou ty pózy?

Lol Phirae

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #24 kdy: 29. 05. 2017, 17:08:44 »
To je nějaký masochismus, srát nesmysly v Javě na šrot typu RPi s naprosto nevyhovujícím množstvím paměti?

Jerry

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #25 kdy: 30. 05. 2017, 07:06:06 »
Hele a nechtěl by si ten částicovej filtr rozběhat na něčem perspektivnějším ?
http://www.viatech.com/en/boards/pico-itx/
navíc to mužeš programovat normálně ve visual studiu

Lol Phirae

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #26 kdy: 30. 05. 2017, 12:00:45 »
Hele a nechtěl by si ten částicovej filtr rozběhat na něčem perspektivnějším ?

Ne a ne a ne... Poslední dobou vidím celou řadu podobných geniálních nápadů, např. zrovna včera pokus rozběhat FreeBSD-based NAS s ZFS (!!!) na tom samém šrotu.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #27 kdy: 15. 06. 2017, 16:51:53 »
to jako filtruješ softwarově prach nebo co? A co jsou ty pózy?
Co takhle se dovzdělat?

balki

Re:Částicový filtr na Raspberry Pi v Javě
« Odpověď #28 kdy: 17. 06. 2017, 13:08:25 »
to jako filtruješ softwarově prach nebo co? A co jsou ty pózy?
Co takhle se dovzdělat?

Zbytocny prispevok, ked viete co to je, mozete odporucit robotronovi literaturu. Ale to by som vela od vas cakal.