Alters

Schweppes Sorting Algotihm - Conceptos básicos

Buenas a todos y todas!

Tras el pequeño parón, volvemos a la carga... y mientras termino de pulir BigInteger en versión CUDA (ya queda poco!), vamos a ver un pequeño algoritmo de ordenado que me vino a la mente, después de estudiar una curiosa paradoja.

¡Vamos allá!


Estrenamos Twitter!

 Buenos días!

¿Como va el calor? En breve entramos ya en septiembre, lo que significa que ya se acaba! (se nota que odio el verano?)

Yo sigo aquí, peleándome con CUDA, a la vez que he dejado "Ready to test" la versión 4.0 de BigInteger...

En fin, hoy os traigo una entrada cortita, más bien un anuncio...

¡He abierto un Twitter para el blog!

Creo que ya iba siendo hora de establecer un canal de comunicación más directo con los lectores, y qué mejor manera, ¿no?

Desde aquí podéis dar conmigo siempre que queráis :-D


¡Nos vemos!

Felices 100 años!

Buenos días!

Este pasado 13/08, el blog cumplió sus primeros... ¡100 años! 

Sí, usando código binario... son 100, aunque en realidad son... ¡10 años!

Os he vuelto a engañar... en código octal son 10 años. Realmente, el blog cumple 8 añitos :-)


Así que hoy os voy a traer 8 curiosidades varias, para cambiar un poco de tercio.


  1. Si aplicamos la norma "a / a = 1", obtendremos que "0 / 0 = 1".
  2. Según la lógica formal, en un queso tipo emmental, "cuanto más queso, menos queso".
  3. Tenemos el mismo resultado calculando "2 + 2", que "2 * 2", y que "2^2".
  4. El lenguaje COBOL fue impulsado por el ejército estadounidense, particularmente por una mujer (aún cuando siempre las han mostrado como "auxiliares" en esa época, es bien sabido que siempre han sido parte esencial de esta industria).
  5. Excel es Turing Complete (puede realizar cualquier algoritmo)
  6. Seguramente en algún momento de tu vida te hayas buscado en Google, pillín
  7. Hay más probabilidades de morir por un impacto de meteorito que de ganar el gordo de la lotería (y aún así, nadie muere por el impacto de un meteorito)
  8. Realmente, nadie sabe lo que significa mi nickname (DoHITB), excepto yo ;-)

Bueno, amigos... no son las mejores curiosidades pero sí son curiosidades.

Que sepáis que sigo avanzando con BigInteger + CUDA, a la vez que paralelamente estoy trabajando en la versión 4.0 de BigInteger :-)

Por otros (al menos 8, 10, o 100 años más)!


BigInteger - Codificación de la arquitectura: Creación de BigInteger

 Buenas!


Otro fin de semana que llega, cada vez hace más calor... (menos mal que ya termina el verano :-) )

Pues aquí seguimos, con la buena racha. De momento, he conseguido rehacer todo el setup de CUDA, y de momento he conseguido avanzar (no prometo un avance semanal, así que tengo alguna entrada guardada en la recámara!).

Vamos a entrar de lleno en la codificación paralela con CUDA. En concreto, empezamos con la creación de BigInteger.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Calculando los límites del clúster

Hola!

¿Qué tal? ¿Mucho calor? Apenas se nota, ¿verdad?
Pues nada, amigos y amigas, hoy os traigo la entrada final, antes de revisar los últimos cambios de BigInteger y ponernos, por fin, a programar.

Vamos entonces a calcular el límite de clúster, es decir, los valores máximos que podemos dar a la arquitectura CUDA para que todo funcione de manera óptima.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Funciones auxiliares

Muy buenas!

Oficialmente, este año es el tercero con más entradas de la historia del blog, y este pasado julio ha sido el mes con más entradas publicadas en el blog de toda la historia! 16 entradas, lo que supone prácticamente una entrada cada dos días!

Está bien ver este crecimiento en el blog, gracias en gran parte al proyecto BigInteger, que ha monopolizado el blog durante todo el mes (y lo que nos queda ;-)).

Ya que la parte de programación en CUDA todavía no la tengo empezada, es posible que abra la veda a otro tipo de entradas de temas que ya tengo medio preparados, para así no perder la racha del blog.

Pero, volviendo al presente, hoy nos toca finalizar el análisis de los puntos críticos de BigInteger, revisando todas las funciones de apoyo.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Raíz de BigInteger

Hola a todos y todas!

Como siempre, aquí ando, a vueltas... "disfrutando" de este fin de semana... Calor y Confinamiento, la combinación ideal para estas vacaciones, ¿verdad?

Por suerte (o desgracia) para vosotros, eso me da cierto tiempo para escribir, así que... Otra entrada para BigInteger!

Como os prometí en la entrada anterior, en esta vamos a ver algo más de contenido (la potenciación quedó un poco escasa, lo reconozco), así que vamos a analizar los puntos críticos de la operación de raíz de BigInteger.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Potenciación de BigInteger

Hola!

De nuevo por aquí, una semana más... esperando que me leáis con ganas.

Como viene siendo costumbre (creo que esta es la saga más larga que estoy haciendo), vamos a seguir con BigInteger.

En esta ocasión, toca revisar los puntos críticos de la potenciación de BigInteger.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: División de BigInteger

Muy buenas!

Chicos y chicas, se va acercando el fin del fin de semana... lo que significa que es hora de descansar, y por supuesto de aprender un poco conmigo :D

Vamos a seguir con la identificación de puntos críticos para implementar la arquitectura BigInteger en CUDA. En este caso, nos toca la división.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Multiplicación de BigInteger

Buenas a todos y a todas.

Otro fin de semana, otra entrada más en el blog :-)
Se está volviendo a convertir en un hábito, y eso está bien... así se mantiene uno entretenido un ratillo!

Desde ya os anuncio que tengo preparada otra saga de entregas... así que la idea es terminar esta, terminar un tema que tengo a medias (precisamente relacionado con BigInteger), y ponerme con la nueva saga... ¡esto promete!

En fin, hoy toca seguir con los puntos críticos de BigInteger, en concreto, los de la multiplicación.

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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Resta de BigInteger

Bienvenidos un día más!

¿Cómo os trata el verano? Espero que estés bien fresquitos y a la sombra :-)

Yo por mi parte estoy bastante contento, ya que todavía estamos a Julio y este año ya es el tercero con más entradas en el blog! Me alegra ver que poco a poco he ido retomando la escritura, siendo que incluso en 2018 estuve todo el año sin escribir...

En fin, vamos a entrar en materia... vamos a seguir con la identificación de puntos críticos en la arquitectura BigInteger para realizar la paralelizazión.

En esta entrada, trataremos la resta.

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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Suma de BigInteger

¡Hola de nuevo!

¿Qué tal lo lleváis? Vamos a seguir con el análisis de puntos críticos de la arquitectura BigInteger.
En esta ocasión, vamos a analizar los puntos críticos de la suma.


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

¡Vamos allá!

BigInteger - Identificación de puntos paralelos y críticos: Creación de BigInteger

¡Hola a todos!

¿Qué os parece todo el entramado de funciones que componen BigInteger? Seguro que no creíais que se podía sacar tanto jugo a unas simples operaciones matemáticas...

La verdad, estoy muy contento, porque ahora empieza la parte de la explicación que dará lugar a un cambio, a investigación...

Por otra parte, es posible que en próximas entregas se ralentice un poco el ritmo (la verdad es que estas semanas ha sido frenético el ritmo de las publicaciones), ya que voy a tener que ir investigando y realizando pruebas de los diferentes puntos que vayan surgiendo... todo sea para daros un buen contenido :)

En fin, en esta entrada vamos a entrar de lleno en la identificación de puntos críticos y paralelos de la creación de BigInteger.

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

¡Vamos allá!

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á!

BigInteger - Funciones auxiliaries

Hola de nuevo!

En esta entrada, vamos a seguir ahondando en la arquitectura de BigInteger.
En este caso, vamos a revisar las funciones auxiliares de BigInteger.

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

¡Vamos allá!

BigInteger - Funciones complejas: Raíz de BigInteger

Hola de nuevo!

En esta entrada, vamos a seguir ahondando en la arquitectura de BigInteger.
En este caso, vamos a entrar en la operación de raíz de BigInteger.

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

¡Vamos allá!

BigInteger - Funciones complejas: Potenciación de BigInteger

Hola de nuevo!

En esta entrada, vamos a seguir ahondando en la arquitectura de BigInteger.
En este caso, vamos a entrar en la operación de potenciación de BigInteger.

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

¡Vamos allá!

BigInteger - Funciones básicas: División de BigInteger

Hola de nuevo!

En esta entrada, vamos a seguir ahondando en la arquitectura de BigInteger.
En este caso, vamos a entrar en la operación de división de BigInteger.

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

¡Vamos allá!

BigInteger - Funciones básicas: Multiplicación de BigInteger

Hola de nuevo!
Pues seguimos dando la tabarra con la arquitectura BigInteger.
En este caso, vamos a entrar en la operación de multiplicación de BigInteger.

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

¡Vamos allá!

BigInteger - Funciones básicas: Resta de BigInteger

Buenas!
Vamos a seguir con la documentación de la arquitectura BigInteger.
En esta ocasión, vamos a explicar la resta de dos BigInteger.

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

BigInteger - Funciones básicas: Suma de BigInteger

Buenas!
Vamos a seguir con la documentación de la arquitectura BigInteger.
En esta ocasión, vamos a explicar la suma de dos BigInteger.

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

BigInteger - Funciones básicas: Creación de BigInteger

Buenas!

Vamos a empezar a explicar el desarrollo de la arquitectura para grandes números "BigInteger".

En esta ocasión, nos toca explicar la función de creación de BigInteger.

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

BigInteger - Introducción

Buenas!

Hace tiempo os comenté que tenía cosillas entre manos, y aquí os traigo una buena veta de entradas... vamos a revisar una arquitectura creada para trabajar con enteros grandes, desarrollada íntegramente en C.

La arquitectura, llamada "BigInteger" (por la Clase de Java), fue un desarrollo realizado como parte de mi TFG (Trabajo de Fin de Grado), pero con el tiempo la he ido manteniendo y mejorando.

Actualmente se encuentra publicada en GitHub bajo licencia MIT. Podéis darle un vistazo al código fuente aquí.

Hacking COBOL: Data Poisoning (II)

Buenas!

De nuevo por aquí... después de una semana de vacaciones en la que he estado apurando una investigación muy prometedora (tengo ganas de contaros, podría llenar unas diez entradas explicando todos los detalles de la investigación y el desarrollo - y los planes de futuro - pero, ya llegará...).

Hoy vengo a terminar de explicaros el asunto del "Data Poisoning".

¡Vamos allá!

La potencia de las potencias

Buenas!

Vaya, este año parece que estoy algo más presente por el blog, y yo que me alegro... resulta que estoy haciendo algunos avances en una librería que cree para mi TFG, y hoy os voy a compartir una cosilla un tanto curiosa que seguro os gustará

¡Vamos allá!

Hacking COBOL: Data Poisoning (I)

Buenas!

Vaya cacao que tenemos montado, ¿eh? Espero que estéis todos bien :)
Yo, aquí sigo... a tope con el trabajo, y aprovechando que esta semana hay vacaciones para traeros una buena entrada (también acabo de subir un nuevo repositorio en GitHub)!

Hoy os comentaré un poco sobre el Data Poisoning en COBOL, para variar un poquito.

¡Vamos allá!


Hacer DELTA con java

Buenas!

¡Dos entradas en dos días! ¿Qué puedo decir?...

Creo que este fin de semana estoy inspirado, y eso es bueno :D
En fin, vamos a pasar a otro temilla rápido que nos ocupará una nueva entrada en este blog... y es el trabajar con DELTA en java.

¡Vamos allá!


Curiosidades del split en Java

Buenas a todos!

Estuve el otro día peleando con el método split de Java, y me topé con una situación que no me había dado problemas... hasta que me los dio :P

Así pues, me decidí a darle una vuelta a todo, y encontré una solución que me gustaría compartir con vosotros.