Envío erróneo o controvertido, por favor lee los comentarios.
Imagínate que una línea de código pudiera acabar con el negocio de NVidia y transformar la industria de los videojuegos... Pues algo parecido ocurrió en los años 90 con la línea de código que te presentamos en este post/curiosidad.
|
etiquetas: silicon graphics , cálculo 3d , campusmvp
en.wikipedia.org/wiki/Fast_inverse_square_root
Y la autoría de Carmack en la implementación es discutible , esta aproximación ya corría desde hace tiempo. El artículo es semierróneo.
Bueno. XFS sigue siendo importantísimo, solo superado en fiabilidad y features, que no en rendimiento, por ZFS.
en.wikipedia.org/wiki/Fast_inverse_square_root
Y la autoría de Carmack en la implementación es discutible , esta aproximación ya corría desde hace tiempo. El artículo es semierróneo.
Y sin tener ni idea de programación, era flipante
Un código mio para exponenciacion modular en microcontroladores PIC estuvo años en la web del fabricante que puta maravilla de la optimización jeje
Esa fórmula es una manera aparentemente "mágica" de calcular la raíz cuadrada inversa aproximada, una operación común para determinar distancias entre vectores en modelado 3D en tiempo real. Este cálculo normalmente requiere una aritmética de punto flotante que es muy intensiva en cómputo, utilizando la fórmula de aproximación original de Isaac Newton.
Wow, entiendo menos que una página de memes argentina
Del 96 al 2006 se pasó de infovia a mas o menos lo que hay ahora: mp3, codecs de video, internet con fibra, ...
No sé de donde ha sacado el autor que esa aproximación "hizo que SGI perdiese su ventaja competitiva", luego más adelante veo que es una "adaptación" de una respuesta sacada de Quora , así que ya es que ni me molesto.
Vaya desastre de artículo y envío.
Uno de tantos porque hay muchos que han contribuido. No obstante no le quita merito a Carmack que el tío sobre sus hombros llevó el peso de la industria y los avances durante una década al menos. Es otro genio sin duda.
En cuánto a los hatajos matemáticos había que cogerlos porque se exprimía cada ciclo de reloj para que maquinas muy modestas trabajasen dando el 100% de lo que podían o como es el caso incluso mas. Al revés de lo que sucede ahora con esta industria de vagos aprovechados y sinvergüenzas y el triunfo de cánceres para la programación estructurada y eficiente como el Java.
Para un cierto intervalo puedes aproximar lo que quieras con un desarrollo en serie de Taylor (es.wikipedia.org/wiki/Serie_de_Taylor), se suele estudiar en clases de introducción al cálculo infinitesimal.
Las series de Taylor tienen su origen en otros trabajos matemáticos anteriores, pero Taylor definió el método general para construirlas.
Hay personas que de verdad han sido endiosadas para lo que realmente han hecho y otras que al revés, como la gente de Bell Labs.
Hubo matemáticos con soluciones parecidas a casos específicos, pero Taylor se llevó el gato al agua con la generalización.
Los juegos anteriores a Quake se consideraban 2.5D y utilizan una técnica conocida como Ray casting es.wikipedia.org/wiki/Ray_casting
Si quieres resolver una ecuación de fórmula f(x) = 0 partiendo de un valor aproximado inicial x1 el siguiente valor aproximado es x2 = x1 - f(x1) / f'(x1).
Por ejemplo para hallar la raíz cuadrada de 101, x, esta cumple que x*x - 101 = 0. f(x) = x*x - 101. Como sabes que la raíz cuadrada de 100 es 10 aproximas la raíz cuadrada de 101 por 10, le aplicas el método de Newton y tienes que la raíz cuadrada de 101 es aproximadamente 10 - f(10)/f'(10) = 10 - (100 - 101) / (2 * 10).
El artículo es un sinsentido. Desprópositos e invenciones a partes iguales.
- Los juegos semi 3D se llevaban haciendo desde hace años.
- Habla de código de DOOM cuando no es de DOOM sino de Quake Arena en 1999.
- Habla de la desaparición de Silicon Graphics por culpa de esta linea cuando fue más por el avance de Intel con la arquitectura X86 y los Pentium y el desarrollo para Windows de software profesional muy bueno para 3D (Softimage, Digital Studio, etc). Los PC's eran más baratos y con software bueno. Además de 3Dfx y Vodoo.
Resumen:
- No es de John Carmack
en.wikipedia.org/wiki/Fast_inverse_square_root
William Kahan and K.C. Ng at Berkeley wrote an unpublished paper in May 1986 describing how to calculate the square root using bit-fiddling techniques followed by Newton iterations.[4] In the late 1980s, Cleve Moler at Ardent Computer learned about this technique[5] and passed it along to his coworker Greg Walsh. Greg Walsh devised the now-famous constant and fast inverse square root algorithm. Gary Tarolli was consulting for Kubota, the company funding Ardent at the time, and likely brought the algorithm to 3dfx Interactive circa 1994
- El código con el comentario no es de Doom sino de Quake Arena
en.wikipedia.org/wiki/Fast_inverse_square_root
"The following code is the fast inverse square root implementation from Quake III Arena, stripped of C preprocessor directives, but including the exact original comment text"
El código fuente de los juegos suele ser privativo y no público. Por lo que afecta solo a su empresa y no al resto, salvo que pase a ser de dominio público. Se publicó el 23 de diciembre 1997 el código fuente de Doom.
Doom no es realmente 3D sino 2.5D, mezcla elementos 2D como los sprites para enemigos y disparos con maps 3D (que realmente se calcula como pseudo3D).
es.wikipedia.org/wiki/Doom_Engine
- La línea de código poco tuvo que ver con la desaparición de Silicon Graphics.
Tuvo más importancia el avance de Intel con los Pentiums, tarjetas gráficas como 3D Graphics o Vodoo. Software 3D potente para windows.
www.beyond3d.com/content/articles/15/
Aunque es verdad que el artículo no dice que sea de Carmack, sino que él fue el autor del comentario // what the fuck?, pero sí que es erróneo porque inventa datos.
Ken Thompson - Bell Labs
github.com/dspinellis/unix-history-repo/blob/Research-V6/usr/sys/ken/s
en.wikipedia.org/wiki/Bhāskara_I's_sine_approximation_formula
Era al seno y no al coseno pero luego la transformación seno - coseno es trivial.
Y era hindú, no persa, cosas de la memoria
«La cantidad de energía necesaria para refutar bullshit (falsedades, estupideces) es un orden de magnitud mayor que la necesaria para producirlo»
Poca broma con los matemáticos hindúes.
Y el comentario que mencionas es porque hay que saber en profundidad sobre sistemas operativos y las diferentes optimizaciones (más bien guarradas/truquis a nivel mental sobre la arquitectura) para entender ese comentario. Es útil, pero es como un "aviso a navegantes, es complejo y no hay forma de explicarlo para todos los públicos no expertos nivel 9999".
Para terminar, me he leído un poco el contexto y no apostaría nada, pero creo que ESA parte justamente es para "alinear" el stack a su estado inicial previo a que el scheduler del sistema operativo se lo cepille pero eso, que algo es algo, no es un "yeah, madafaka, número mágico el que tengo aquí colgado".
Saludos!
En Quake todos los elementos son objetos 3D en el sentido que están formado por polígonos y tratados como tales por el motor gráfico.
Edito: en #30 ya lo habían descrito
...caballerete..no venga aquí a insultar,
Está muy bien saber teoría, o valorar no preocuparse o gastar recursos en nimiedades, pero también se nota mucho una aplicación optimizada, una que no te haga perder un montón de décimas de segundo en un montón de sitios, y para ello sólo sirven los programadores que siempre le dan una vuelta más a todo.
"Este simple hack de código lo cambió todo e hizo que SGI perdiese su ventaja competitiva. De repente, un ordenador barato con hardware corriente podía realizar gráficos 3D similares a las estaciones de trabajo que costaban más de 100.000 dólares. SGI tuvo que cambiar de rumbo y centrarse en su negocio de servidores, que posteriormente fracasó. "
Es que SGI estuvo siempre centrada en el negocio de estaciones gráficas (software y hardware 3D). Su mercado era empresas de películas de animación como Pixar (Toy Story se hizo con estaciones de SGI), empresas de efectos especiales para hacer cosas como Terminator 2, ayudar en videojuegos haciendo CGI como las de Final Fantasy VII de PSX, etc.
La fórmula esa sirve para acelerar los cálculos quitando algo de precisión. En las CGI de efectos especiales, películas o CGI de videojuegos no se hacen en tiempo real, por lo que es más importante la precisión de que quede bien a que se haga en tiempo real.
¿Perdió la ventaja competitiva con quién? Es que no tiene sentido la comparación del artículo. Las estaciones SGI no eran para tenerlas en casa para jugar a videojuegos, no era el usuario de videojuegos el que iba a comprar esas máquinas.
Nunca se metió de lleno en el negocio de los videojuegos, aunque estuvo a punto de entrar con Nintendo haciendo el chip para la N64 que luego se decantó por NEC (NEC VR4300).
Es sobre un escándalo que salpicó a Bell Labs a principio de los 2000s pero refleja muy bien la crisis en la que se encontraba en esa época después de años de gloria.
Tiene otros muchos de temática similar, el canal merece mucho la pena.
Una cosa es que a SGI le comieran la tostada por el lado hardware (la mejora y popularización de las CPU Intel) y el del software (la muerte de IRIX y en general de casi todo Unix propieratorio con el ascenso de Linux), y otra muy distinta es que seas una empres multimillonaria porque calculabas muy bien raíces cuadradas hasta que alguien encontró un truqui mejor.
Por hablar de algo positivo .. qué bonitas eran las estaciones de trabajo SGI de los 90
Fast Inverse Square Root — A Quake III Algorithm In this video we will take an in depth look at the fast inverse square root and see where the mysterious number 0x5f3759df comes from. This algorithm became famous after id Software open sourced the engine for Quake III. On the way we will also learn about floating point numbers and newton's method.
Eso si, una vez que la entiendes es magia
Efectivamente, yo jugué al Quake (aunque no fuese la versión III Arena) y mi PC no tenía nada especial... (no tenía una tarjeta especial para 3D).
Pero el comentario #30 dijo FPU, no GPU.
Creo que FPU se refiere "Floating Point Unit", es decir, algún chip que haga operaciones con números reales, expresados en formato de punto flotante... Más conocido como "coprocesador matemático".
Al parecer en videojuegos anteriores como el DOOM no se usaban números de punto flotante sino enteros.
GPU es otra cosa: Graphics Processing Unit, y es lo que tienen las tarjetas gráficas 3D
Es un comentario de broma ¿no?
es.wikipedia.org/wiki/Chiptune
No conseguimos grandes premios, pero nos lo pasamos muy bien (CC #8)
Fui a "investigar" un poco...
El artículo meneado dice que se basa en una respuesta de Quora, y da el enlace:
www.quora.com/What-line-of-code-changed-the-world-of-programming/answe
Miré esa respuesta de Quora y varios comentarios corrigen lo que dice la respuesta, que no es de Doom sino de Quake... Otro corrige al corrector diciendo que no es Quake tampoco sino Quake III Arena.
La respuesta de Quora vi que es de finales de mayo de 2023, es decir, hace unos 8 meses, y los comentarios que lo "corrigen" dice que son de "hace 8 meses".
¿En qué fecha se escribió el artículo meneado? Pues según mis "investigaciones", encontré que el artículo fue enviado a LinkedIn "hace 3 semanas". En otros sitios vi "4 de enero".
Reconstrucción de los hechos:
* Mayo de 2023 : Un "fulano" que dice ser CEO y tener unos 20 años de experiencia en informática... Escribe una respuesta en Quora, hablando de algo de hace unos 25 años, a modo "batallita" de cuando era joven. Nótese que 25 años son muchos años.
* Mayo de 2023 : Al poco de escribir esa respuesta, otros usuarios de Quora le comentan que dijo cosas mal... El autor de la respuesta, teniendo 8 meses para corregirla no la ha corregido.
* Pocos días después: La respuesta tiene el tipo de características para ser bien valorada por los lectores: relata acontecimientos sorprendentes, lenguaje grandilocuente... Vamos, lo que se suele llamar "sensacionalismo" de toda la vida. Por cómo está escrita, lo asombroso del relato, la palabrota en el código fuente ("what de fuck" / hostias / qué cojones es esto), la mención a un videojuego muy popular (Doom fue más conocido que Quake)... y a un famoso (mítico) programador... El caso es que esa respuesta tuvo miles de positivos.
Nota: dudo seriamente que quien escribió la respuesta de Quora dijese "Doom" a sabiendas de que era Quake... Más bien lo atribuyo a que han pasado 25 años y no se acordaba. Pero resalto el hecho de que decir Doom hace que muchos hayan jugado a ese juego (y no a Quake) y votan positivo "porque les gusta recordar ese juego mítico".
Así se expanden los bulos.
Como dirían los italianos: "si non e vero, e ben trovato" (o algo así) : si no es verdad está bien relatado... Es decir, en las "batallitas" / anécdotas se suele exagerar para que suene todo más espectacular... o a… » ver todo el comentario
Al final no era un polinomio (como el de Taylor) sino una división de polinomios, lo que a veces se llama "función algebraica", por estar formada por operaciones comunes (del álgebra): suma, resta, multiplicación y división... Estas operaciones son las únicas operaciones (funciones) que hacen los ordenadores de forma verdadera (en los circuitos), el resto (logaritmos, senos, cosenos... ) no las hacen los circuitos y por eso interesa aproximar las que no hacen los circuitos en una combinación de operaciones algebraicas, más concretamente una "función racional", una división de polinomios (o un polinomio), la cual tiene unos ceros y unos polos.
No era un polinomio, no era persa... Por cierto, palabras como "álgebra" y "algoritmo" sí vienen de un persa, la primera por un libro suyo, basado por cierto en conocimiento que aprendieron de la India, y la segunda de su nombre: Al-Kwarizmi, a veces romanizado como Al-Juarismi.
Esto de la memoria es lo que creo que le pasó al autor de la respuesta de Quora, tal como relaté en mi comentario #76
Algo ocurrido hace quizá 25 años no se recuerda bien, y el cerebro rellena esa información desgastada por el paso del tiempo, algo así como la restauradora del Ecce Homo de Borja. Nos pasa a todos, a mi también: cuando no se recuerda bien algo nos inventamos la mitad que falta, y a veces sin darnos cuenta de que es invento nuestro.
Cc: #1 #18
La memoria no es como una cinta de video, almacena cuatro pistas y el resto lo reconstruye el cerebro.
El entender ese concepto ayudaría a evitar errores en juicios y a muchas cosas. Por eso mismo, cuando trabajaba y tenía alguna reunión, lo primero que hacía al terminar es redactar un acta o un resumen y enviarlo a todos los asistentes, pasa un año y si no hay nada escrito cada uno recuerda la reunión de una forma diferente.
El articulista ha visto algo en reddit que le ha hecho un mínimo de gracia, le mete Google translator, y si tienes suerte y ha hecho el esfuerzo de entender lo que ha visto (si es que le ha gustado mucho) hasta comenta algo interesante. Sino, algo de relleno con chatgpt y a correr.
en.wikipedia.org/wiki/Fast_inverse_square_root
Yo he jugado en un 286 sin coprocesador al Alone in the dark en este juego se usaban vectores.
#4 #31 #15
Me ha recordado a los metodos para multiplicar mas rapido.
youtube.com/watch?v=7V4E_GK1dt8
Tambien las IA, encontro metodos de optimizar operaciones
youtube.com/watch?v=ulBEE30G3SE
#39 No se Hay algun gen superdotado para las matematicas en India, pero tambien habia uno llamado Ramanuhan que era clarividente para las formulas. Creo que saco la mejor formula para sacar los decimales de pi .
No era un calculadora humana, sino que resolvia problemas matematicos que nadie resolvia de forma natural.
es.wikipedia.org/wiki/Srinivasa_Ramanujan