Re[4]: параллельный РЕФА


Subject: Re[4]: параллельный РЕФА
From: Sergei M. Abramov (abram@botik.ru)
Date: Mon Apr 05 2004 - 08:27:15 MSD


Понял, что не совсем прав:

> ... Например:
>
> (еOld1)(eOld2) : (e1 eX) (eX eX eX)
>
> я бы компилировал бы вот в такой последовательный код:
>
> L = length(eOld2);
> if !(L mod 3 == 0) then goto fail;
> еX = subexpr(eOld2, 0, L/3);
> if (еX != subexpr(eOld2, L/3, L/3)) then goto fail;
> if (еX != subexpr(eOld2, 2*L/3, L/3)) then goto fail;
> L1 = length(eOld1);
> if !(L1 >= L2) then goto fail;
> if (еX != subexpr(eOld1, L1-L/3, L/3)) then goto fail;
> е1 = subexpr(eOld1, 0, L1-L/3);
>
> Не вижу здесь никаких основаниой для параллелизма...

Мелкие основания есть, если переписать код так:

      L = length(eOld2);
      L1 = length(eOld1);
      if !(L mod 3 == 0) then goto fail;
      еX = subexpr(eOld2, 0, L/3);
      if !( (еX == subexpr(eOld2, L/3, L/3)) /* 1 */
             && (еX == subexpr(eOld2, 2*L/3, L/3) /* 2 */
             && (L1 >= L2 && еX == subexpr(eOld1, L1-L/3, L/3) /* 3 */
      ) then goto fail;
      е1 = subexpr(eOld1, 0, L1-L/3);

Три условия в конъянкции можно считать в параллель.

Однако, думаю, это слишком мелкие гранулы, для организации параллельного
счета.

С.



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:25:00 MSD