Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Нужен выигрыш от двух праоцессоров (3 стр)

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

Страницы: 1 2 3 4 518 Следующая »
InquisitiveНовичокwww17 янв. 20052:22#30
Это не шутка про WinMainN, ..., WinMain0?
Неужели так просто пишется программа, использующая несколько процессоров?
crazy25Постоялецwww17 янв. 20053:04#31
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, а-то пойдет рассинхронизация и оба проца могут накрыться.
tavПостоялецwww17 янв. 20053:13#32
Inquisitive
>Неужели так просто пишется программа, использующая несколько процессоров?
А ты разве не знал?

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

MegaПостоялецwww17 янв. 20057:11#33
не забудьте, что глобальные переменные разных майнов должны лежать в разный неймспейсах.
УпНовичокwww17 янв. 20057:58#34
Чё вы людям мозги пудрите? На самом деле нужно разные мейны положить в разные модули трансляции и назвать их всех одинаково, а какой мейн какому процу достанется решает планировщик задач, вот. И обязательно количество процев равно кол. мейнов, а то обдилённый обидется и сделает резет системе.
General GDAПостоялецwww17 янв. 200510:47#35
Вообщето маины должны в коде распологаться так же как и процессоры установлены на материнке относительно AGP или PCIE слота

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

#pragma optimize(code_diagonal)

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

dubПостоялецwww17 янв. 200511:06#36
All
а если у меня два однопроцессорных компьютера по сетке связаны, то я могу так же писать? Или там надо какие-то спецальные опции компилятору указывать, чтобы сэмулировать двухпроцессорную систему?

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

KrollПостоялецwww17 янв. 200512:19#37
dub
верно копаешь.
надо
mainIntel и mainAMD.

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

УпНовичокwww17 янв. 200512:24#38
>но не срабатывает наверно из-за разных типов процессоров.

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

RageousПостоялецwww17 янв. 200512:24#39
из-вра-сче-нцы :)
УпНовичокwww17 янв. 200512:25#40
>renderGPU0 и renderGPU1

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

A_KНовичокwww17 янв. 200512:29#41
Rageous

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

мы, такие :)

RageousПостоялецwww17 янв. 200512:37#42
A_K, я это знал, конечно - но не думал, что настолько :)))))
dubПостоялецwww17 янв. 200513:06#43
Rageous
>из-вра-сче-нцы :)
зато сколько позитива! 8)
О. ФедорПостоялецwww17 янв. 200513:35#44
General GDA

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

#pragma optimize(code_diagonal)

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

Я плакаль-

Страницы: 1 2 3 4 518 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр