Войти
ПрограммированиеФорумГрафика

Нужен выигрыш от двух праоцессоров (3 стр)

Страницы: 1 2 3 4 518 Следующая »
#30
2:22, 17 янв. 2005

Это не шутка про WinMainN, ..., WinMain0?
Неужели так просто пишется программа, использующая несколько процессоров?


#31
3:04, 17 янв. 2005

Inquisitive
Вообще под Юниксом, с которого все пошло, нужно так:

int main()
{
#define USE_CPU1
#define USE_CPU2
// здесь два цпу работают
#undef USE_CPU2
// здесь один
#undef USE_CPU1
// здесь пауза, чтобы процессоры отдохнули
// для полного охлаждения лучше еще добавить
  _asm {
     nop
     nop
     nop
  }
// а теперь снова на двух
#define USE_CPU1
#define USE_CPU2
}
и Винда такое должна поддерживать.
Важно, чтобы CPU2 стартовал после CPU1, а-то пойдет рассинхронизация и оба проца могут накрыться.
#32
3:13, 17 янв. 2005

Inquisitive
>Неужели так просто пишется программа, использующая несколько процессоров?
А ты разве не знал?

IronPeter
>Да, для процессоров от Интел в случае гипер-фридинга оптимальна другая
>архитектура кода:
>void main0() void main1()
>{ {
>
>}; };
Угу.
А если перед этим поставить #pragma parallel, то обе функции скомпилятся в одну инструкцию, которую оба процессора разобьют на две микрооперации, и первый процессор будет выполнять первую mop, а второй вторую, после чего вызовется исключение #OE (operation executed) , чтобы программа обработала окончание выполнения инструкции.

#33
7:11, 17 янв. 2005

не забудьте, что глобальные переменные разных майнов должны лежать в разный неймспейсах.

#34
7:58, 17 янв. 2005

Чё вы людям мозги пудрите? На самом деле нужно разные мейны положить в разные модули трансляции и назвать их всех одинаково, а какой мейн какому процу достанется решает планировщик задач, вот. И обязательно количество процев равно кол. мейнов, а то обдилённый обидется и сделает резет системе.

#35
10:47, 17 янв. 2005

Вообщето маины должны в коде распологаться так же как и процессоры установлены на материнке относительно AGP или PCIE слота

Например если процы расположены по диагонали, то и маины должны располагаться по диагонали. и не забываем писать соответствующие pragm'ы

#pragma optimize(code_diagonal)

void main0()
{
};
                      void main1()
                      {
                      };

#36
11:06, 17 янв. 2005

All
а если у меня два однопроцессорных компьютера по сетке связаны, то я могу так же писать? Или там надо какие-то спецальные опции компилятору указывать, чтобы сэмулировать двухпроцессорную систему?

з.ы. а то что один процессор Celeron, а второй Athlon не помещает? Правда операционки одинаковые.
з.ы.ы. пробовал делать как говорит IronPeter, но не срабатывает наверно из-за разных типов процессоров.

#37
12:19, 17 янв. 2005

dub
верно копаешь.
надо
mainIntel и mainAMD.

а если вдруг обнаружится две видяхи, то renderGPU0 и renderGPU1, это где-то в GDI было

#38
12:24, 17 янв. 2005

>но не срабатывает наверно из-за разных типов процессоров.

Ну дык ты чего хотел? Тут явно имеет место инверсия основных носителей между процессорами, то есть если первая main, то вторая очевидно должна называться niam, короче смотри MSDN

#39
12:24, 17 янв. 2005

из-вра-сче-нцы :)

#40
12:25, 17 янв. 2005

>renderGPU0 и renderGPU1

Точно! А я-то думал как эти видюхи программировать...

#41
12:29, 17 янв. 2005

Rageous

>> из-вра-сче-нцы :)

мы, такие :)

#42
12:37, 17 янв. 2005

A_K, я это знал, конечно - но не думал, что настолько :)))))

#43
13:06, 17 янв. 2005

Rageous
>из-вра-сче-нцы :)
зато сколько позитива! 8)

#44
13:35, 17 янв. 2005

General GDA

"Диагональное программирование":

#pragma optimize(code_diagonal)

void main0()
{
};
                      void main1()
                      {
                      };

Я плакаль-

Страницы: 1 2 3 4 518 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.