Вычисление Pi с использованием массивов Float или Integer

Я использую Aparapi, чтобы сделать число хруст в моей программе
Java на графическом процессоре. Из того, что я понимаю, Апарапи
отлично играет с плавающими массивами.

Я хочу вычислить Pi до N-го десятичного числа, используя
Aparapi. Я думаю об использовании метода Лейбница, но я не уверен,
как бы я работал с представлением и хранением длинных десятичных
знаков в форме float или integer.

Будет ли массив целых чисел работать, причем размер массива
равен N числу десятичных знаков?

```
int[] digits = new int[N];

```

Если бы я использовал это с методом Лейбница, мне нужно было бы
вычислить массив из N целых чисел для M терминов, которые я нахожу
(Liebniz говорит, что pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 ....), а
затем добавьте их вместе и умножьте полученное число на 4. Но это
означало бы, что мне нужно было бы выделить M много целых чисел для
КАЖДОГО термина, который я вычислил, что бы скомпоновать и
действительно отразиться на памяти.

tl; dr: Как я могу вычислить Pi, используя циклы операций с
float, чтобы я мог сделать это с Aparapi?

Огромное спасибо!

Вам нужно уменьшить, чтобы частично добавить m элементов в
аннотированный массив @Local (используется для локальной памяти в
aparapi). Допустим, что существует N общих элементов, поэтому вам
нужны N/m частичные суммы, которым требуется более высокая
пропускная способность (поэтому в локальной памяти).

Также вы должны использовать localBarrier (); для синхронизации
ядер в вычислительных единицах или рабочих единицах в местных
рабочих группах. Затем отправьте данные в основную память.

Очень короткий пример:

Вам нужно 1 + 2 + 3 + 4 + 5 + 6 + ..... и у вас есть 3 ядра на
вычислительную единицу gpu.

1 + 2 выполняется в ядре № 1

3 + 4 выполняется в ядре номер 2

5 + 6 выполняется в ядре № 3

то вы добавляете выходы ядра в локальной памяти, которые
разделяются всеми соседними ядрами этого вычислительного блока.

Наконец, вы получите 3,7,11 в массиве, который суммируется до 21
в локальной памяти.

Все эти данные всех вычислительных единиц в основной памяти,
такие как 21,57, ... тогда вы можете добавить их все просто в
CPU.

Конечно, будет (+/-) (1/(2 * n + 1)) вместо 1,2,3,4,5