Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Probar Rutina Optimizada...

Iniciado por TheAzazel, 13 de Enero de 2005, 01:36:52 PM

« anterior - próximo »

_Grey

 AMD64 3000+ (cache L1:L2 128:512) 1GBRAM->400Mhz

Running Mem Bandwidth v1.0...

----- Memory bandwidth -----

Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

     4 Kb        5580.36 Mb/s           10016.03 Mb/s       79.49
     8 Kb        4976.11 Mb/s           10016.03 Mb/s       101.28
    16 Kb        5580.36 Mb/s           10016.03 Mb/s       79.49
    32 Kb        5540.78 Mb/s           12400.79 Mb/s       123.81
    64 Kb        2277.70 Mb/s           3125.00 Mb/s       37.20
   128 Kb        2170.14 Mb/s           3125.00 Mb/s       44.00
   256 Kb        2277.70 Mb/s           2083.33 Mb/s       -8.53
   512 Kb        666.38 Mb/s           1468.05 Mb/s       120.30
  1024 Kb        657.96 Mb/s           1427.79 Mb/s       117.00
  2048 Kb        665.53 Mb/s           1425.96 Mb/s       114.26
  4096 Kb        665.53 Mb/s           1468.93 Mb/s       120.72
  8192 Kb        671.28 Mb/s           1418.65 Mb/s       111.33
 16384 Kb        664.36 Mb/s           1446.33 Mb/s       117.70


No esta mal... y dices que es de una codigo que saco AMD, yo es que no paso por las web's de las casas de las CPU's, igual hay cosas interesantes.

Saludos.

TheAzazel

 Muchas gracias a todos por colaborar :)
visto lo visto... unos pekeños arreglos con los P4 antiguos y listo. Veo q en general, va muchismo mejor en todos los procesadores.
Lo diso, gracias a todos... lo proximo en colgar sera un programita testeando los sprites con y sin optimizaciones (lo sé, soy un empanado de la optimizacion jeje)
talaproximaaa (q sera pronto ;) )

ZüNdFoLGe

 Celeron 1.8 Ghz  128 DDR




----- Memory bandwidth -----

Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

     4 Kb        2277.70 Mb/s           4155.58 Mb/s       82.45
     8 Kb        2176.18 Mb/s           3848.52 Mb/s       76.85
    16 Kb        1919.53 Mb/s           3583.72 Mb/s       86.70
    32 Kb        3324.47 Mb/s           3848.52 Mb/s       15.76
    64 Kb        819.78 Mb/s           1041.67 Mb/s       27.07
   128 Kb        520.83 Mb/s           876.82 Mb/s       68.35
   256 Kb        549.79 Mb/s           892.86 Mb/s       62.40
   512 Kb        587.66 Mb/s           926.45 Mb/s       57.65
  1024 Kb        588.10 Mb/s           925.36 Mb/s       57.35
  2048 Kb        587.35 Mb/s           924.17 Mb/s       57.35
  4096 Kb        594.51 Mb/s           906.98 Mb/s       52.56
  8192 Kb        577.81 Mb/s           919.43 Mb/s       59.12
 16384 Kb        540.08 Mb/s           909.95 Mb/s       68.48




Hey, por lo que veo, soy el único con 128 MB ddr   :(  

fiero

 portatil PIII 800MHz 384MB

Pos a mi 64k me va 6 veces más rápido el memcpy normal no? He repetido 2 veces y sale muy parecido.


Running Mem Bandwidth v1.0...

----- Memory bandwidth -----

Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

     4 Kb        614.67 Mb/s           1114.48 Mb/s       81.31
     8 Kb        604.68 Mb/s           1114.48 Mb/s       84.31
    16 Kb        609.40 Mb/s           742.63 Mb/s       21.86
    32 Kb        1594.39 Mb/s           684.11 Mb/s       -57.09
    64 Kb        609.40 Mb/s           108.21 Mb/s       -82.24
   128 Kb        253.24 Mb/s           90.40 Mb/s       -64.30
   256 Kb        55.06 Mb/s           77.47 Mb/s       40.70
   512 Kb        65.65 Mb/s           94.41 Mb/s       43.82
  1024 Kb        64.88 Mb/s           94.41 Mb/s       45.51
  2048 Kb        64.85 Mb/s           93.28 Mb/s       43.83
  4096 Kb        64.74 Mb/s           93.61 Mb/s       44.60
  8192 Kb        64.79 Mb/s           92.25 Mb/s       42.38
 16384 Kb        63.59 Mb/s           93.98 Mb/s       47.79
www.videopanoramas.com Videopanoramas 3D player

TheAzazel

 fiero...me has hundido en la miseria...  :blink:
puedes poner las caracteristicas de tu micro..pq se q de p3 a 800 habia muchas versiones...q si con cache avanzada no se que, q si con mas o menos cache y que si con mas o menos bus....
realmente, en un p3 como el tuyo...hay problemas que debo solucionar... cdo me informes de eso..modificare el codigo y si eso, te lo envio para que me digas a ver....si mejoro... o como poco..q no empeore tanto vale?
gracias sr. fiero :)

jazcks

 P3 866 , 512 ram:


Running Mem Bandwidth v1.0...

----- Memory bandwidth -----

Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

     4 Kb        617.59 Mb/s           1000.32 Mb/s       61.97
     8 Kb        602.35 Mb/s           1111.31 Mb/s       84.50
    16 Kb        520.83 Mb/s           1086.58 Mb/s       108.62
    32 Kb        1783.68 Mb/s           1614.15 Mb/s       -9.50
    64 Kb        609.88 Mb/s           340.12 Mb/s       -44.23
   128 Kb        390.63 Mb/s           295.82 Mb/s       -24.27
   256 Kb        166.12 Mb/s           261.81 Mb/s       57.61
   512 Kb        224.10 Mb/s           268.75 Mb/s       19.92
  1024 Kb        221.18 Mb/s           268.75 Mb/s       21.51
  2048 Kb        217.94 Mb/s           268.41 Mb/s       23.16
  4096 Kb        219.90 Mb/s           268.41 Mb/s       22.06
  8192 Kb        215.02 Mb/s           268.42 Mb/s       24.84
 16384 Kb        215.61 Mb/s           265.65 Mb/s       23.21

2a vez:

     4 Kb        526.45 Mb/s           862.31 Mb/s       63.80
     8 Kb        609.88 Mb/s           1135.54 Mb/s       86.19
    16 Kb        581.29 Mb/s           1111.31 Mb/s       91.18
    32 Kb        1787.76 Mb/s           1562.50 Mb/s       -12.60
    64 Kb        609.88 Mb/s           340.12 Mb/s       -44.23
   128 Kb        381.66 Mb/s           297.62 Mb/s       -22.02
   256 Kb        151.52 Mb/s           259.04 Mb/s       70.95
   512 Kb        223.14 Mb/s           265.92 Mb/s       19.17
  1024 Kb        221.12 Mb/s           270.24 Mb/s       22.21
  2048 Kb        218.00 Mb/s           268.32 Mb/s       23.08
  4096 Kb        218.92 Mb/s           268.41 Mb/s       22.61
  8192 Kb        218.78 Mb/s           267.03 Mb/s       22.06
 16384 Kb        217.50 Mb/s           268.53 Mb/s       23.46


jelorol

 Portátil PIII 1GHz, 256 MB RAM



Citar

Running Mem Bandwidth v1.0...

----- Memory bandwidth -----

Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

      4 Kb        796.38 Mb/s           1528.86 Mb/s       91.98
      8 Kb        780.47 Mb/s           1417.88 Mb/s       81.67
     16 Kb        812.96 Mb/s           1528.86 Mb/s       88.06
     32 Kb        2225.78 Mb/s           2520.16 Mb/s       13.23
     64 Kb        796.38 Mb/s           458.75 Mb/s       -42.40
    128 Kb        722.71 Mb/s           406.27 Mb/s       -43.79
    256 Kb        464.20 Mb/s           459.02 Mb/s       -1.12
    512 Kb        278.53 Mb/s           346.65 Mb/s       24.46
   1024 Kb        198.93 Mb/s           287.77 Mb/s       44.66
   2048 Kb        178.24 Mb/s           286.34 Mb/s       60.65
   4096 Kb        180.72 Mb/s           287.40 Mb/s       59.03
   8192 Kb        181.48 Mb/s           283.83 Mb/s       56.40
  16384 Kb        162.13 Mb/s           288.29 Mb/s       77.8

fiero

 Mi cpu con nombres y apellidos (antes me he colao en los MHz, ya no sé ni lo que tengo...):

----------------------
 CPU-Z version 1.26
----------------------

CPUID Output
------------------------------------------------------------------------------

Number of CPUs   1
Name    Intel Pentium III E
Code name   Coppermine-T
Specification   Intel Pentium III E 850 MHz
Family/Model/Stepping  68A
Extended Family/Model  0/0
Brand ID   2
Package    BGA/Micro-PGA
Core Stepping   cD0
Technology   0.18µ
Instructions Sets  MMX, SSE
Clock Speed   845.7 MHz
Clock multiplier  x8.5
Front Side Bus Frequency 99.5 MHz
Bus Speed   99.5 MHz
L1 Data Cache   16 KBytes, 4-way set associative, 32 Bytes line size
L1 Instruction Cache  16 KBytes, 4-way set associative, 32 Bytes line size
L2 Cache   256 KBytes, 8-way set associative, 32 Bytes line size
L2 Latency   0
L2 Speed   845.7 MHz (Full)
L2 Location   On Chip
L2 ECC Check   enabled
L2 Data Prefetch Logic  no
L2 Bus Width   256 bits


Si quieres que pruebe algo ya me dirás
www.videopanoramas.com Videopanoramas 3D player

ethernet

 Un benchmark de este tipo no sé qué sentido tiene la verdad y mucho menos si los que lo hacen únicamente especifican qué prorcesador tienen. No deberían comentar qué política de caché tienen, tamaño de la misma,  niveles... por no comentar el sistema operativo etc.  Otro tipo de especificaciones que se deberían dar son las condiciones del test (número de veces, intervalo entre ellas, etc).
Sin más recomendar dos cosas:
- Hennesy&Paterson - arquitectura de ordenadores (cualquier edición , anteriores al 2004 para conceptos básicos) muy recomendable
- SPEC:  conocidos benchmarks

Por otro lado me gustaría abrir hacer una pregunta acerca de este tipo de optimizaciones: alguna vez habeis usado optimizaciones para la transferencia de datos y realmente han optimizado algo la aplicación. Siempre que yo he hecho alguna transferencia de una cantidad de datos interesante (una imagen) ha sido más costoso el procesado de los datos que la propia transferencia. Qué pensais?

un saludo

fiero

 Estoy de acuerdo en casi todo lo que has dicho ethernet. Sin embargo hay cosas que para una prueba de velocidad de transferencia de memoria no creo que importen. Por ejemplo el sistema operativo. Transferir 256K de memoria de un sitio a otro en memoria RAM da igual en w98, w2000, XP o linux. Otra cosa diferente es el rendimiento global de una aplicación compleja como un procesador de texto, etc, entonces si hay diferencias segun el sistema operativo.

A la hora de transferencia de imagenes el verdadero cuello de botella según mi experiencia es la memoria de video. He visto mi motor correr más rápido en un PII a 266 con una Matrox G400 que en un PIII a 500 MHZ con una tarjeta normalita.
www.videopanoramas.com Videopanoramas 3D player

TheAzazel

 Vayamos por partes...

el unico sentido que tenia era descubrir si en algun procesador habia algun problema GRAVE de funcionamiento... , no me interesa la cantidad de memoria, el sistema operativo, tan solo micro y velocidad ya que con eso, ya se que arquitectura es...salvo la excepcion del fiero que el p3 800 habia varias versiones(aunq su micro, es el mas avanzado... la cache es ATC...) y por eso le pregunte...si de primeras pido la salida del cpu-z o wcpuid... la gente se habria echao para atras y necesitaba el maximo numero de test posibles en el menor tiempo posible(lo empece ayer, dedique menos de 1h y hoy ya lo termino en menos de 20min).
Tambien me da igual la diferencia en la salida, como ya comente anteriormente, varia y es sencillo, no es un Sandra Sisoft ni tampoco una Spec2005...
Luego, resumiendo: EL OBJETIVO ERA DESCUBRIR ALGUNA ANOMALIA GRAVE EN ALGUN PROCESADOR. Y asi ha sido, los p4 willamette antiguos y los P3 necesitan un leve ajuste para no perder una media de la mitad de rendimiento..., luego, objetivo logrado :).

Ahora otra cosa... la razon de ser de la optimizacion de memoria... yo si he notado cambios tremendos de velocidad de ejecucion  en aplicaciones optimizando las copias... pero no hablare del pasado, no te pongo el profile pq es mazo tocho pero, un jueguecillo sencillo, 2D, con varios sprites (sin alpha eh?) moviendose por la pantalla, 32bits de color y a 1024x768... bien, si lo haces por hardware...tal y como dijo fiero...la tarjeta de video lo hara volar... pero.. y si no? y si se hace por software? muy sencillo, coges la aplicacion, mides los tiempos y leches...el 90% se lo consume el SDL_Blitxxx... y eso??? ahora bien... optimiza esa funcion al doble de velocidad (de media que saka los memcpy optimizados) y voila! reduces casi a la mitad el tiempo de ejecucion de los SDL_blit... y... estoy de acuerdo, que a veces, las propias transformaciones de los datos son mas costosas que las copias pero..a un sprite(sin alpha)..no le aplicas ninguna transformacion..es solo copiar y copiar lo mas rapido posible.

Si teneis alguna otra preguntilla, o pensais que estoy colgaoo jeje, podeis decirlo abiertamente... pero a mi me gusta optimizar las cosillas una vez terminada, para algunos puede tener mas o menos sentido pero... para mi lo tiene :). Y para terminar, muxas gracias a todos los que han posteado sus resultados, un saludo

fiero

 ok, tienes razón. Aunque utilizo rutinas por soft para poner los sprites, el volcado de pantalla lo hago con un BitBlt de DX así que las tarjetas buenas lo harán por hardware.

un saludo
www.videopanoramas.com Videopanoramas 3D player

TheAzazel

Cita de: "fiero"ok, tienes razón. Aunque utilizo rutinas por soft para poner los sprites, el volcado de pantalla lo hago con un BitBlt de DX así que las tarjetas buenas lo harán por hardware.

un saludo
No si...SDL (cuando utiliza el backend de DX) tambien hace el blit final a video y normalmente las tarjetas de video se encargan de ello... pero... todas las copias y  preparacion del framebuffer cuando estas en modo software..las haces en la memoria RAM y usando CPU...
Estoy comentando un poco los ejemplos de la libreria, cuando lo suba, tambien ira un test de sprites dnd se vera en pruebas si al final...se gana algo...o si no se gana jeje.
Fiero... mas tarde colgare la version modificada a ver si me la puedes ejecutar en el p3 y asi comprobar en practica q mejoro (pq como no tengo ningun p3..todo es teoria de caches jiji).
Ethernet...dime algo... :), en parte te entiendo pero.... anda q no me gusta a mi optimizar las cosas :), es un vicio de la epoca del msdos ;)

ethernet

 Como librería o trozo de código no pongo objección, simplemente no veo con buenos ojos la forma de testearla aunque es visible que es notablemente mas rápida que memcpy con lo cual para lo usos que has comentado es muy válida.

un saludp

rrc2soft

 Intel Centrino (Pentium M) 1300 Mhz, 512 MB RAM.

PASADA No 1
Citar
  Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

      4 Kb        951.58 Mb/s           1775.57 Mb/s       86.59
      8 Kb        963.32 Mb/s           1771.54 Mb/s       83.90
     16 Kb        975.34 Mb/s           1771.54 Mb/s       81.63
     32 Kb        3396.74 Mb/s           3241.70 Mb/s       -4.56
     64 Kb        987.67 Mb/s           848.26 Mb/s       -14.12
    128 Kb        987.67 Mb/s           886.78 Mb/s       -10.22
    256 Kb        986.43 Mb/s           1562.50 Mb/s       58.40
    512 Kb        3240.66 Mb/s           1531.37 Mb/s       -52.75
   1024 Kb        623.80 Mb/s           820.38 Mb/s       31.51
   2048 Kb        556.35 Mb/s           811.65 Mb/s       45.89
   4096 Kb        522.79 Mb/s           794.30 Mb/s       51.93
   8192 Kb        516.64 Mb/s           783.05 Mb/s       51.56
  16384 Kb        511.32 Mb/s           790.12 Mb/s       54.53

PASADA No 2
Citar
Memory block    Normal memcpy()    Optimized memcpy()    % Diff
------------    ---------------    ------------------    -------

      4 Kb        940.13 Mb/s           1775.57 Mb/s       88.86
      8 Kb        963.32 Mb/s           1771.54 Mb/s       83.90
     16 Kb        975.34 Mb/s           1771.54 Mb/s       81.63
     32 Kb        3396.74 Mb/s           3112.55 Mb/s       -8.37
     64 Kb        975.34 Mb/s           750.48 Mb/s       -23.05
    128 Kb        987.67 Mb/s           866.13 Mb/s       -12.31
    256 Kb        975.34 Mb/s           1591.14 Mb/s       63.14
    512 Kb        3124.00 Mb/s           1558.88 Mb/s       -50.10
   1024 Kb        624.30 Mb/s           820.38 Mb/s       31.41
   2048 Kb        552.41 Mb/s           803.30 Mb/s       45.42
   4096 Kb        519.31 Mb/s           794.30 Mb/s       52.95
   8192 Kb        513.23 Mb/s           791.03 Mb/s       54.13
  16384 Kb        510.98 Mb/s           790.94 Mb/s       54.79






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.