Alters

BigInteger - Notas de BigInteger v3.0

Muy buenas!

Después de revisar a fondo el funcionamiento de BigInteger, nos toca ir a por el último esfuerzo.
Vamos a entrar en una serie de entradas donde analizaremos los puntos donde podemos incrementar el rendimiento de la arquitectura haciendo uso de la paralelización a través de GPU.

No obstante, antes de pasar a la acción, hay un par de notas previas a enumerar, y es que a medida que fuimos repasando la arquitectura, aproveché para ponerla al día...

  • ¿No es la entrada que buscabas? Entra en el índice
  • ¿Buscas el código fuente? Aquí lo tienes

¡Vamos allá!


Se han hecho algunos cambios en la arquitectura para incrementar el rendimiento.
Principalmente, hemos eliminado dos funciones que no se usaban, y hemos hecho un par de cambios en la multiplicación y en el acarreo de la suma.

Multiplicación

Hasta ahora, grosso modo, se reservaba un array de memoria, y se realizaban los productos y acto seguido se hacia el sumatorio.

Para ahorrar memoria (y tiempo de computación), ahora la multiplicación funciona de manera más sencilla: se obtiene un producto parcial, y se suma al total; de esta manera, no hace falta reservar tanta memoria, y el rendimiento se incrementa (ya que el hecho de reservar tanta memoria era costoso a nivel de computación).


Acarreo de la suma

El cambio realizado en esta función es todavía más sencillo.

Se ha eliminado el bucle "Do / While", ya que es innecesario. Ya que calculamos el acarreo como "BigInteger.n / 10", siempre nos llevaremos el acarreo completo.

Por otra parte, el único motivo que pueda llevar a tener que volver a realizar el acarreo, sería si el último dígito de BigInteger diera un acarreo de dos dígitos - pero esto no puede ocurrir ya que no existe ninguna operación de dos operandos de un dígito que dé como resultado un número de tres cifras (9 * 9 = 81).

Tener en cuenta que este mismo comportamiento también afecta al acarreo de la resta.


Tras estos breves comentarios, ahora sí, tenemos toda la documentación necesaria para embarcarnos en el siguiente paso... la paralelización de la arquitectura!

¡Nos vemos!

No hay comentarios:

Publicar un comentario