Eval vitesse d'un programme sur differents amigas

15 sujets de 76 à 90 (sur un total de 101)

  • flype

    • Messages : 1097
    #306301

    @goodchip

    tu nous montres ? 🙂 une ch’tite photo please.

    A600 Rev 1.5 + Vampire 600 V2-128.
    A1200 Rev 1D4 + Blizzard 1230 III/50Mhz + 68882 + 256MB @ 50ns.

    huggyone76

    • Messages : 2123
    #306307

    Merci Goodchip, yapuka… 😉

    A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
    C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

    goodchip

    • Messages : 518
    #306308

    Je vous montre ça ce soir.

    Sylvain aka goodchip

    Vampire V4SA
    A500+/080
    A600(HS)
    A1200AT/020
    A2000(HS)
    A4000/040
    A4000/060

    goodchip

    • Messages : 518
    #306341

    avant :

    pendant :

    après :

    Sylvain aka goodchip

    Vampire V4SA
    A500+/080
    A600(HS)
    A1200AT/020
    A2000(HS)
    A4000/040
    A4000/060

    __sam__

    • Messages : 2776
    #306505

    Ce soir j’ai ré-écrit le rasterizer en asm: >>ici<<

    Résultat: outre le fait que c’est plus rapide, les différences entre compilateurs sont réduites.

    Ca n’est qu’un 1er jet en ASM, je pense qu’on peut faire plus rapide car la grosse formule appliquée en chaque point:
    [code]
    *out = makeColour(
    real2scalar(
    modelTri->vertices[0]->color.x * d1 +
    modelTri->vertices[1]->color.x * d2 +
    modelTri->vertices[2]->color.x * d0),
    real2scalar(
    modelTri->vertices[0]->color.y * d1 +
    modelTri->vertices[1]->color.y * d2 +
    modelTri->vertices[2]->color.y * d0),
    real2scalar(
    modelTri->vertices[0]->color.z * d1 +
    modelTri->vertices[1]->color.z * d2 +
    modelTri->vertices[2]->color.z * d0));
    [/code]
    Peut être optimisée en passant par des delta pour réduire les 9 multiplications et 6 additions à seulement 3 additions.

    Samuel.

    Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
    A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
    A500 Vampire V2+ ^8^ 🙂
    (mais aussi TO8, TO8D, TO9. Groupe PULS.)

    thellier

    • Messages : 680
    #306535

    @Samuel

    Si tu veux te lancer dans la modif de l’asm:
    une commande pratique dans gcc c’est

    gcc -Wa,-adhln -g -Wall -m68020-40 -m68881 -noixemul -O3 -c fillpoly.c > fillpoly-mixed.c

    qui donne l’asm généré mixé avec le source original en C

    Je me suis fait une commande qui
    1) nettoye ce listing (notamment enlève les chiffres en début de ligne et mets le C en commentaires)
    ainsi on peut écrire dedans ses modifs de l’asm
    2) la même commande enlève les commentaires pour obtenir un asm pur prêt à recompiler avec gcc

    Si t’as un mail et que ça t’intéresse

    Alain

    Exemple de mix:

    131:fillpoly.c **** Delta.L.u=(Edge2->L.u – Edge1->L.u)/dx;
    863 .stabd 68,0,131
    864 0084 202C 000C movel [email protected](12),d0
    865 0088 90AB 000C subl [email protected](12),d0
    866 008c 2E00 movel d0,d7
    867 008e 4C46 7807 divsl d6,d7
    868 0092 2B47 FFDC movel d7,[email protected](-36)

    puis nettoyage:

    // Delta.L.u=(Edge2->L.u – Edge1->L.u)/dx;
    movel [email protected](12),d0
    subl [email protected](12),d0
    movel d0,d7
    divsl d6,d7
    movel d7,[email protected](-36)

    puis optimisation manuelle:

    // Delta.L.u=(Edge2->L.u – Edge1->L.u)/dx;
    movel [email protected](12),d0
    subl [email protected](12),d0
    divsl d6,d0
    movel d0,[email protected](-36)

    puis asm pur:

    movel [email protected](12),d0
    subl [email protected](12),d0
    divsl d6,d0
    movel d0,[email protected](-36)

    __sam__

    • Messages : 2776
    #306545

    Ah merci cool, ca me manquait les sorties mixtes. Moi je faisais le bon vieux -S qui sort de ASM brut, mais comme mes méthodes sont courtes et ne font qu’une chose je m’en sortais avec ca. Il faut dire que le code C est l’asm 68k sont très voisins, donc on y retrouve ses petits.

    Avec la vamp en revanche, et en particulier le superscalaire, le code ASM optimisé a tendence à mélanger plusieurs instructions sources séparées dans la même région asm. Je veux dire par là que la construction « INST1; INST2; » du C ne se traduit plus comme « ASM1; ASM2; » (assemblage linéaire) où ASM1 correspond aux instructions C de INST1 (idem avec les ASM2/INST2), mais on a en asm un mix de ASM1 et ASM2 interpénétrés: La fin de ASM1 déborde sur le début de ASM2. C’est assez pénible à relire, et surtout à écrire.

    Je rêverais d’un outil qui prenne de l’ASM « linéaire » où ASM1 et ASM2 sont bien séparés et fasse le mélange ASM1/ASM2 automatiquement pour tirer parti des deux pipelines 5 étages. Ca s’appelle un (re-)scheduler d’instructions et ca n’existe pas à ma connaissance pour amiga. Du coup il faut faire ca à ma main, et c’est long et casse-gueule (surtout si on doit modifier l’algo par la suite), mais ca vaut le coup. Flype a testé en X11 et dépasse les 20fps à présent avec le monkey suzanne (500 points, 1500 facettes.)

    Samuel.

    Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
    A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
    A500 Vampire V2+ ^8^ 🙂
    (mais aussi TO8, TO8D, TO9. Groupe PULS.)

    huggyone76

    • Messages : 2123
    #306560

    Version du 13/10/18, Vampire 600 V2, Superscalar ON, Core x11

    Ancienne version/nouvelle version

    * vbcc – 15.551 fps / 17.118 fps

    * gcc 2.95.3 – 15.637 fps / 16.987 fps

    * gcc 3.2.2 – 15.917 fps / 18.239 fps

    * gcc 6.3.1b – 17.306 fps / 18.957 fps

    * gcc 6.4.1b – 17.801 fps / 18.222 fps

    * sasc –  12.655 fps / 16.924 fps

    Pas mal, pas mal… 🙂 Sur sasc, le bond est impressionnant ! Et effectivement, ça nivelle un peu le rendu 😉

    A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
    C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

    __sam__

    • Messages : 2776
    #306564

    Tiens c’erst un chouille en dessous de Flype. Il était peut-être en X12, je ne sais plus. Sinon si 19-20fps c’est trop rapide, il y a le mode « -model redrat » et là les perfs s’effondrent complètement du au trop grand nombre de faces qui s’affichent effectivement. Au fait je ne sais plus si je l’ai indiqué, mais les flèches gauche/droite permettent de tourner autour de l’objet, et haut/bas de s’en approcher ou de s’en éloigner.

    Samuel.

    Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
    A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
    A500 Vampire V2+ ^8^ 🙂
    (mais aussi TO8, TO8D, TO9. Groupe PULS.)

    flype

    • Messages : 1097
    #306571

    @__sam__

    C’est sans doute parce que je lance un script (avec execute) en utilisant l’argument -size :

    >monkey.gcc-4.6.1b -size 320 200 -benchmark

    Ce qui donne en gros avec gcc 6.x
    20 fps en x11
    22 fps en x12

    A600 Rev 1.5 + Vampire 600 V2-128.
    A1200 Rev 1D4 + Blizzard 1230 III/50Mhz + 68882 + 256MB @ 50ns.

    huggyone76

    • Messages : 2123
    #306572

    Je lance un « execute run-benchmark.txt » pour qu’on ait des résultats comparables. 🙂

    Et oui, Sam, tu avais indiqué pour tourner autour et le zoom.

    A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
    C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

    __sam__

    • Messages : 2776
    #306578

    Ca n’est qu’un 1er jet en ASM, je pense qu’on peut faire plus rapide car la grosse formule appliquée en chaque point: (…) peut être optimisée en passant par des delta pour réduire les 9 multiplications et 6 additions à seulement 3 additions.

    Voila qui est fait: >>ici<<

    La routine principale se réduit à quelques additions selement

    .1
    		fcmp.s	(a1)+,fp3
    		fble.b	.2
    		fmove.s	fp3,-4(a1)
    		fmove.l	fp5,d7
    		fmove.l	fp4,(a2)
    		move.w	d7,2(a2)
    		fmove.l	fp6,d7
    		move.b	d7,3(a2)
    .2
    		fadd.s	d0,fp0
    		fblt.b	.9
    		fadd.s	d1,fp1
    		fblt.b	.9
    		fadd.s	d2,fp2
    		fblt.b	.9
    		
    		fadd.s	d3,fp3
    		addq.l	#4,a2
    		
    		fadd.s	d4,fp4
    		fadd.s	d5,fp5
    		fadd.s	d6,fp6
    		bra		.1
    		
    .9
    		fmovem	(sp)+,fp2-fp7
    		movem.l	(sp)+,d2-d7/a2
    		rts
    

    Samuel.

    Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
    A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
    A500 Vampire V2+ ^8^ 🙂
    (mais aussi TO8, TO8D, TO9. Groupe PULS.)

    flype

    • Messages : 1097
    #306584

    Bravo @__Sam__

    >monkey.gcc-6.4.1b -size 320 200 -benchmark

    25.371 fps en x12 – avec des pointes à 31.4 fps.

    A600 Rev 1.5 + Vampire 600 V2-128.
    A1200 Rev 1D4 + Blizzard 1230 III/50Mhz + 68882 + 256MB @ 50ns.

    __sam__

    • Messages : 2776
    #306613

    25fps, Miam miam! J’ai hâte de pouvoir manger des fichiers 3D standards.

    Samuel.

    Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
    A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
    A500 Vampire V2+ ^8^ 🙂
    (mais aussi TO8, TO8D, TO9. Groupe PULS.)

    huggyone76

    • Messages : 2123
    #306617

    Version du 15/10/18, Vampire 600 V2, Superscalar ON, Core x11

    Ancienne version/nouvelle version

    * vbcc – 17.118 fps / 18.197 fps

    * gcc 2.95.3 – 16.987 fps / 19.126 fps

    * gcc 3.2.2 – 18.239 fps / 20.141 fps

    * gcc 6.3.1b – 18.957 fps / 21.171 fps

    * gcc 6.4.1b – 18.222 fps / 21.191 fps

    * sasc –  16.924 fps / 17.727 fps

    22.164 fps avec la même commande que Flype

    A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
    C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

15 sujets de 76 à 90 (sur un total de 101)

  • Vous devez être connecté pour répondre à ce sujet.

Forums AmigaOS, MorphOS et AROS Développement Eval vitesse d'un programme sur differents amigas

Amiga Impact