2010-12-27 6 views
2

Я написал фрактальный плоттер Forth Mandelbrot, а также как техническое упражнение, как что-либо еще, я хотел бы попытаться ускорить его с некоторой параллельной обработкой.Gforth параллельная обработка

На данный момент я был бы счастлив, если бы мог использовать оба моих ядра (один ядро ​​делает одну половину изображения, а другую вторую половину).

Я заметил, что Windows XP вполне успешно управляет двумя экземплярами Gforth и пытается использовать как можно больше процессорной мощности, поэтому запуск двух процессов может быть запуском. Однако я не уверен, что они могут обмениваться памятью, или если они могут одновременно записывать в файл (или как сказать одному процессу начать запись в x байтах с начала файла).

В целом, как я могу выполнять параллельную обработку с использованием Gforth в Windows XP?

ответ

0

См. GForth Pipes.

+0

Возможно, это пробел в моем понимании, но как я могу использовать трубы, чтобы помочь? – sheepez

+0

@sheepez Вы можете создать экземпляр GForth из работающего GForth, соединить их с трубами и заставить их обмениваться данными по трубам. Таким образом, вы можете избежать менее надежного совместного использования памяти/файла. –

+0

@ Vijay Mathew До сих пор мой код вычисляет цвет пикселя и записывает его в растровый файл. Мне нужно изменить способ, которым он работает, чтобы с пользой включить трубы, я спрашиваю, как синхронизация вещей выглядит сложнее. – sheepez

2

Возможно, каждая программа выполняет сетку пикселей, а не один пиксель, а затем рекомбинирует их в конце.

AFAIK, пиксели в наборах Мандельброта не зависят друг от друга (кто-то исправляет меня, если я ошибаюсь), однако вычисление каждого из них является недетерминированным, что затрудняет правильное распараллеливание, не имея какого-либо рода из центральной диспетчерской нити (тогда снова вы сталкиваетесь с потенциальными проблемами с соперничеством).

+1

Я думаю, что вы правы в независимости от пикселей, хотя я не уверен, каким образом они не детерминированы. В любом случае, насколько я могу сказать, gforth не делает системные вызовы должным образом в Windows, поэтому я немного застрял. – sheepez