Algoritmo rápido para calcular Pi em paralelo

Estou começando a aprender CUDA e acho que calcular dígitos longos de pi seria um bom projeto introdutório.

Eu já implementei o método simples de Monte Carlo, que é facilmente capaz de paralelizar. Eu simplesmente tenho cada thread gerar aleatoriamente pontos no quadrado da unidade, descobrir quantos estão dentro do círculo unitário e calcular os resultados usando uma operação de redução.

Mas esse não é certamente o algoritmo mais rápido para calcular a constante. Antes, quando eu fazia este exercício em um único processador, eu usavaFórmulas semelhantes a máquinas para fazer o cálculo para uma convergência muito mais rápida. Para os interessados, isso envolve expressar pi como a soma dos arctangents e usar a série de Taylor para avaliar a expressão.

Um exemplo de tal fórmula:

Infelizmente, descobri que o paralelismo dessa técnica para milhares de threads de GPU não é fácil. O problema é que a maioria das operações está simplesmente fazendo cálculos matemáticos de alta precisão, em vez de fazer operações de ponto flutuante em longos vetores de dados.

Então eu estou querendo saberQual é a maneira mais eficiente de calcular dígitos arbitrariamente longos de pi em uma GPU?

questionAnswers(1)

yourAnswerToTheQuestion