Welcome, Guest. Please login or register.


Author Topic: Fraktálok assemblyben (Read 7026 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #30 on: 2018.July.28. 15:16:39 »
PC verzió:
* mandel.exe (21.5 kB - downloaded 54 times.)
* SDL.dll (296.5 kB - downloaded 50 times.)
* mandel.c (5.78 kB - downloaded 50 times.)
(fordítás az itt található MinGW csomaggal: gcc -m32 -Wall -O2 -IC:/mingw32/include mandel.c -o mandel.exe -lmingw32 -lSDL -lSDLmain -lm -s)

EP-s változatban lehetne még próbálkozni a korábbi programokban használt egész számos aritmetikával.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #31 on: 2018.July.28. 16:06:31 »
lehetne még gyorsítani, mert sok a lapozás (pl. video RAM 0x8000-től, de a Data és Done tömbök is.

A tömbök méretét csökkenteni lehetne a képernyőt kisebb részekre bontva és több menetben rajzolva. Így ugyan valamivel kevésbé hatékony az algoritmus, viszont minden elfér lapozás nélkül.

Offline Povi

  • EP addict
  • *
  • Posts: 1700
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 67.0.3396.99 Chrome 67.0.3396.99
    • View Profile
    • http://povi.fw.hu
Re: Fraktálok assemblyben
« Reply #32 on: 2018.July.28. 23:10:12 »
A tömbök méretét csökkenteni lehetne a képernyőt kisebb részekre bontva és több menetben rajzolva. Így ugyan valamivel kevésbé hatékony az algoritmus, viszont minden elfér lapozás nélkül.
kicsit átvariáltam azóta, a 128x192 pixel Data és Done tömbje pont elfér 48kB-on, most már csak a PutPixel során kell csak lapozni. Az x, y koordinátához tartozó Done tömb most a 0x4000 + 256y + x címen van, a Data tömb pedig 0x4000 + 256y + x + 128 címen.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1700
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 67.0.3396.99 Chrome 67.0.3396.99
    • View Profile
    • http://povi.fw.hu
Re: Fraktálok assemblyben
« Reply #33 on: 2018.July.28. 23:14:51 »
PC verzió:
(Attachment Link)
(Attachment Link)
(Attachment Link)
(fordítás az itt található MinGW csomaggal: gcc -m32 -Wall -O2 -IC:/mingw32/include mandel.c -o mandel.exe -lmingw32 -lSDL -lSDLmain -lm -s)

EP-s változatban lehetne még próbálkozni a korábbi programokban használt egész számos aritmetikával.

Hehe, PC-n nem is látszik, hogy rajzol, csak földobja a kész ábrát! :-)

Jaja, gondolkodtam én is a fixpontos cuccon, ha kicsit kigyomlálom a forráskódot, majd kirakom ide is.

Amit még gyorsítottam: az integer -> float konverziót függvény helyett 256 elemű táblázatból oldom meg (a képernyő koordináta sose nagyobb 191-nél), az Iterate fv-ben a 2-vel szorzást (ami a forrásban összeadás), a real szám kitevőjének a növelésével oldom meg (egy darab inc d)
*** Speicherplatz zu klein

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #34 on: 2018.July.29. 13:51:16 »
Ez még nem EP verzió, de már tartalmaz néhány módosítást: fixpontos aritmetika (a tört rész 20 bites) és függőlegesen 4 részre osztott képernyő.
* epmandel.c (6.85 kB - downloaded 51 times.)    (szerk.: paletta és dither EP-s PIXEL16 módhoz)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #35 on: 2018.July.29. 18:47:52 »
Ep-s, de még lassú. :oops:
* epmandel.com (6.87 kB. 105x27 - viewed 45 times.)

* epmandel.c (5.69 kB - downloaded 46 times.)
* loader.s (7.79 kB - downloaded 49 times.)
* ihx2ep.c (3.96 kB - downloaded 47 times.)
* Makefile (0.85 kB - downloaded 45 times.)

A futásidő nagy részét a fixpontos szorzás teszi ki, talán célszerűbb lenne csökkenteni a pontosságot (jelenleg 8.24 bit, ami teljes 32 bites egész szorzást igényel).

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #36 on: 2018.July.29. 21:08:16 »
Kisebb pontosságú és valamivel kevésbé lassú változat:
* epmandel.com (6.88 kB. 112x27 - viewed 55 times.)

Offline Povi

  • EP addict
  • *
  • Posts: 1700
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 67.0.3396.99 Chrome 67.0.3396.99
    • View Profile
    • http://povi.fw.hu
Re: Fraktálok assemblyben
« Reply #37 on: 2018.July.30. 08:44:38 »
Kisebb pontosságú és valamivel kevésbé lassú változat:
(Attachment Link)
szép lett! nem semmi, hogy még dither-t is raktál bele :-)

viszont tényleg jó lassú :oops:

na most ezt lenne érdemes átírni asm-be, megnézni, mennyit gyorsítana vajon

eredetileg én is a C kódot fordítottam SDCC-vel, és feleekkora felbontással is nagyon lassú volt (persze lebegőpontos számításokkal), azért kezdtem el asm-be
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1700
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 67.0.3396.99 Chrome 67.0.3396.99
    • View Profile
    • http://povi.fw.hu
Re: Fraktálok assemblyben
« Reply #38 on: 2018.July.30. 08:48:59 »
tetszik, hogy összevontad a Done és a Data tömböt! :-)
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 5084
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 61.0 Firefox 61.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #39 on: 2018.July.30. 08:56:41 »
Szép, fullra gyorsított emuval gyorsan kirajzolja :ds_icon_cheesygrin:

Offline Povi

  • EP addict
  • *
  • Posts: 1700
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 67.0.3396.99 Chrome 67.0.3396.99
    • View Profile
    • http://povi.fw.hu
Re: Fraktálok assemblyben
« Reply #40 on: 2018.July.30. 09:31:32 »
lehet szörnyülködni  forráson :-)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1700
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 67.0.3396.99 Chrome 67.0.3396.99
    • View Profile
    • http://povi.fw.hu
Re: Fraktálok assemblyben
« Reply #41 on: 2018.July.30. 11:44:32 »
a szorzó rutin unroll-olásával 5:57-ről 5:13-ra gyorsult

hm...
a 248. sorban lévő ld (iy+05h), b nem is kell, anélkül 5:10 :-)
« Last Edit: 2018.July.30. 13:10:49 by Povi »
*** Speicherplatz zu klein

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #42 on: 2018.July.30. 11:56:59 »
na most ezt lenne érdemes átírni asm-be, megnézni, mennyit gyorsítana vajon

Valójában a futásidő kb. 2/3 részét most is az fpMult rutin teszi ki (az előző verzióban 3/4 volt). :oops: Ezt pedig az Iterate() rutin követi, talán célszerű lenne először csak azt átírni asm-re. Itt a bal oldalon látható az fpMult CPU fogyasztása, a kijelölt rész pedig az Iterate:
21636-0

Kisebb "csalással" ki lehetne még használni a függőleges szimmetriát, elég lenne csak a kép felét számítani, de akkor más paraméterekkel nem működne.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #43 on: 2018.July.30. 17:08:55 »
Egyelőre javítottam valamennyit az fpMult rutinon, és a négyzetre emeléshez lett egy külön fpSqr. Ezen kívül az Iterate "static" változókat használ, bár ez csak néhány másodperc különbséget jelent. A változtatások 583.5 másodpercről 498.6 másodperce javították a futásidőt 4 MHz-es gépen, de ezen még tovább kellene gyorsítani.

Szerk.: ez most 494.2:
* epmandel.com (6.82 kB. 56x27 - viewed 44 times.)

* epmandel.c (5.88 kB - downloaded 47 times.)
* loader.s (9.69 kB - downloaded 44 times.)
* ihx2ep.c (3.96 kB - downloaded 44 times.)
* Makefile (0.85 kB - downloaded 41 times.)

* testmult.lua (1.47 kB - downloaded 42 times.)

Offline geco

  • EP addict
  • *
  • Posts: 5084
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 61.0 Firefox 61.0
    • View Profile
Re: Fraktálok assemblyben
« Reply #44 on: 2018.July.30. 20:04:34 »
Nekem látványosan gyorsabbnak tűnt, igaz az ALT+W használatát kb fél percig bírtam nélkülözni :D