Перейти к публикации

Как написать UDF для параллельного счета?


Игорь (Москва)

Рекомендованные сообщения

Добрый день!

Озадачился следующим вопросом. Как сделать, чтобы UDF считала одновременно несколько областей?

В этой программе сделан двойной цикл по всем ячейкам - для каждой ячейки считается объемный интеграл по всем остальным ячейкам.

Таким образом количество операций =N^2 от числа ячеек.

Если область разделить например на четыре подобласти- то каждую подобласть можно считать отдельно своим ядром процессора.

Вопрос - если я разделю область внутренними линиями на подобласти - что и как написать в UDF чтобы подобласти считались одновременно?

Или как-то вообще по другому надо делать?

Программка сейчас считает... но... получается что на одном ядре. Если запускаю четыре потока - то какой-то бред с выводом. Как будто UDF отрабатывает четыре раза.

В общем вот. Нужна помощь всезнающего All.

DEFINE_ON_DEMAND(Bsl)

{

Domain *d;

Thread *t,*t1;

cell_t c,c1;

face_t f;

double r,z,r1,z1;

d = Get_Domain(1);

printf("Start calculation...\n");

thread_loop_c (t,d)

{

double x[ND_ND];

if (NULL != THREAD_STORAGE(t,SV_UDS_I(0)))

{

begin_c_loop (c,t) //Внешний цикл - его хорошо бы распараллелить.

{

C_CENTROID(x,c,t);

r=x[1];

z=x[0];

begin_c_loop (c1,t) //Внутренний цикл

{

C_CENTROID(x,c1,t);

r1=x[1];

z1=x[0];

...

...

//Что-то считается

}

end_c_loop (c1,t);

}

}

end_c_loop (c,t)

}

}

С уважением,

Игорь

Ссылка на сообщение
Поделиться на других сайтах


Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...