Многоядерная параллелизация J

Есть ли способ заставить J использовать несколько ядер? Я думал, что часть преимуществ APL/J заключалась в том, что языковые конструкции хорошо подходили для параллельных решений.

Глядя на использование моего процессора (у меня OSX), ясно, что используется только один процессор.

У меня есть тяжелая функция f, действующая на список, и я не понимаю, почему она не может разделить список на 4 части и повторно собрать результаты?


person user1202733    schedule 29.03.2015    source источник
comment
К сожалению, нет, но если вы написали свое решение, ориентированное на массивы, вы можете запускать несколько экземпляров своей программы для разных сегментов ваших массивов.   -  person Eelvex    schedule 29.03.2015
comment
Какая жалость. Работает ли какой-либо диалект APL в многоядерном режиме?   -  person user1202733    schedule 29.03.2015
comment
Я столкнулся в основном с той же проблемой, поэтому я применил немного более радикальный подход, я решил написать компилятор для языка, который в основном является J. Цели включают многоядерную поддержку, поддержку GPGPU (CUDA/OpenCL) и распределение задачи по локальной сети. Он еще не закончен, но вы можете следить за прогрессом на github.com/Synthetica9/HyperJ.   -  person Synthetica    schedule 01.05.2015
comment
@Synthetica, это круто. Будет следить за этим.   -  person Alex Shroyer    schedule 18.05.2015


Ответы (1)


ArrayFire, возможно, стоит изучить. Это OpenCL с поддержкой AMD/nvidia и обратным переходом на CPU. Его обработка массива. Он должен легко связываться с J, как это делается в Matlab.

person pascalJ    schedule 20.09.2015