Rápido algoritmo para calcular Pi en paralelo.

Estoy empezando a aprender CUDA y creo que calcular dígitos largos de pi sería un proyecto agradable e introductorio.

Ya he implementado el método simple de Monte Carlo que se puede paralelizar fácilmente. Simplemente hago que cada hilo genere puntos al azar en el cuadrado de la unidad, averigüe cuántos se encuentran dentro del círculo de la unidad y cuente los resultados mediante una operación de reducción.

Pero ciertamente este no es el algoritmo más rápido para calcular la constante. Antes, cuando hice este ejercicio en una CPU de un solo hilo, utilicéFórmulas similares a la máquina para hacer el cálculo para una convergencia mucho más rápida. Para aquellos interesados, esto implica expresar pi como la suma de los elementos y usar series de Taylor para evaluar la expresión.

Un ejemplo de tal fórmula:

Desafortunadamente, encontré que paralelizar esta técnica con miles de subprocesos de GPU no es fácil. El problema es que la mayoría de las operaciones simplemente hacen cálculos matemáticos de alta precisión en lugar de realizar operaciones de punto flotante en largos vectores de datos.

Así que me pregunto,¿Cuál es la forma más eficiente de calcular dígitos de pi arbitrariamente largos en una GPU?

Respuestas a la pregunta(1)

Su respuesta a la pregunta