nixp.ru v3.0

22 января 2017,
воскресенье,
19:14:49 MSK

DevOps с компанией «Флант»
aeuo написал 12 сентября 2007 года в 08:13 (369 просмотров) Ведет себя неопределенно; открыл 5 тем в форуме, оставил 18 комментариев на сайте.

Привет!

Кто-нибудь писал что-нибудь на pthreads? подскажите, пожалуйста, где можно почитать как система распределяет нити в случае многопроцессорной платформы?Если имеется два процессора и две нити, то в каком случае эти нити буду работать одновременно на обоих процессорах?

aeuo

И ещё вопрос. Почему на однопроцессорной системе потоки дают выйгрыш даже если они не суспендятся I/O и делают одну и ту же работу?

myst

Интересные вопросы. Для защиты лаб, да?

decvar

начини читать от сюда

http://en.wikipedia.org/wiki/Thread_%28computer_science%29

aeuo
myst
Интересные вопросы. Для защиты лаб, да?

нет я 3 года назад закончил институт. проект пишу, по работе надо

aeuo
aeuo
как система распределяет нити в случае многопроцессорной платформы?Если имеется два процессора и две нити, то в каком случае эти нити буду работать одновременно на обоих процессорах?

С этим всё понятно это зависит от операционки.

aeuo
почему на однопроцессорной системе потоки дают выйгрыш даже если они не суспендятся I/O и делают одну и ту же работу?

А что вы думаете по поводу вот этого вопроса?

myst

Не совсем понял вопрос. Выигрыш в более плотном использовании ресурсов. Например, пока поток спит, DMA идёт.

aeuo
myst
Не совсем понял вопрос. Выигрыш в более плотном использовании ресурсов. Например, пока поток спит, DMA идёт.

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

void calc1() {

double a = 9.12;

int i=0;

for(; i < 10000; ++i)

a*=a;

}

void calc2() {

double a = 1.03;

int i=0;

for(; i < 10000; ++i)

a*=a;

}

void calc3() {

double a = 3.2;

int i=0;

for(; i < 10000; ++i)

a*=a;

}

если я запущу их последовательно:

calc1();

calc2();

calc3();

и затем параллельно — каждое вычисление в отдельном потоке, то есть три потока на каждую функцию, то параллельное вычисление будет работать быстрее даже на однопроцессорной машине.

Почему так?

myst

Не будет оно быстрее. Кто сказал, что оно будет быстрее? На UP оно будет, в лучшем случаее, не медленне.

aeuo
myst
Не будет оно быстрее. Кто сказал, что оно будет быстрее? На UP оно будет, в лучшем случаее, не медленне.

Я попробовал на солярке.

использовал time для замерения, запускал несколько раз и то и другое.

Я запускал с OpenMP директивами и указывал явно сколько должно использоваться потоков.

metal

Это может быть особенностью планировщика «солярки», который даст процессу с тремя потоками больше процессорного времени чем однопоточному. Но в общем случае это быстрее не будет.

aeuo

ясно. спасибо

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.