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

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

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

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

17 янв. 2005


#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, а-то пойдет рассинхронизация и оба проца могут накрыться.

17 янв. 2005

#32

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

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

17 янв. 2005

#33

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

17 янв. 2005

#34

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

17 янв. 2005

#35

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

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

#pragma optimize(code_diagonal)

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

17 янв. 2005

#36

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

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

17 янв. 2005

#37

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

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

17 янв. 2005

#38

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

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

17 янв. 2005

#39

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

17 янв. 2005

#40

>renderGPU0 и renderGPU1

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

17 янв. 2005

#41

Rageous

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

мы, такие :)

17 янв. 2005

#42

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

17 янв. 2005

#43

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

17 янв. 2005

#44

General GDA

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

#pragma optimize(code_diagonal)

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

Я плакаль-

17 янв. 2005

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

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