Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: XÑA en 18 de Octubre de 2013, 09:58:50 AM

Título: Recursion y problemas con la Pila en C#
Publicado por: XÑA en 18 de Octubre de 2013, 09:58:50 AM
Buenas a todos. Estoy convirtiendo el programita smallPT ( Path Tracing) de C++ a .Net y me he encontrado con un problema.
En RayTracing, la recursión es muy utilizada, y en C# me salta enseguida StackOverflow.  ???
He conseguido salvarlo utilizando un Thread y asignando la pila. El problema ha venido cuando he querido utilizar el Parallel.For. Por lo visto aquí lo que hace es ir creando tareas, pero NO hay forma de especificar el tamaño de la pila, si no es con EditBin.
Así que he añadido esto al postProcess de compilación:
call "$(DevEnvDir)..\tools\vsvars32.bat"

editbin /stack:60097152 "$(TargetPath)"

Pero no me funciona....

¿alguna idea?
Título: Re:Recursion y problemas con la Pila en C#
Publicado por: Vicente en 18 de Octubre de 2013, 04:04:58 PM
Seria muy complicado no hacerlo recursivo? Es lo mejor que puedes hacer creo yo...
Título: Re:Recursion y problemas con la Pila en C#
Publicado por: XÑA en 18 de Octubre de 2013, 05:05:33 PM
Tengo la versión sin recursividad, pero no conocía esta limitación. 1 MB me parece muy poco para la pila, y que esto esté limitado tampoco parece tener mucho sentido. Mi ordenador es de 64 bits y tiene 8 GB.... Puedo dedicar perfectamente 50 MB de pila, aunque sé que es una barbaridad. Además se permite hacer por código simplemente creando un Thread, así que...¿Porqué no facilitarlo?

Bueno, la semana que viene subiré el código convertido a .Net, que es el único que falta!!!  :D

Increible un programa que hace Path Tracing en sólo 99 líneas!!!
Título: Re:Recursion y problemas con la Pila en C#
Publicado por: Vicente en 18 de Octubre de 2013, 05:22:31 PM
Esto es un raytracer en 1 línea de código (muy larga eso sí :p)

http://blogs.msdn.com/b/lukeh/archive/2007/10/01/taking-linq-to-objects-to-extremes-a-fully-linqified-raytracer.aspx