Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

потоки и ядра


toropoff ©   (2011-11-29 19:51:00) 

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


Сергей М.   (2011-11-29 20:44:00) [1]

Как пример:

var
 pam, sam: DWord;
 FSubThreadsCount: Integer;
..

procedure TNeuralNetExploit.CreateSubThreads;

function GetNonZeroBitCount(Mask: DWord): Integer;
const
 m1 = $55555555;
 m2 = $33333333;
 m3 = $0F0F0F0F;
begin
 Mask := (Mask and m1) + ((Mask shr 1) and m1);
 Mask := (Mask and m2) + ((Mask shr 2) and m2);
 Mask := (Mask + (Mask shr 4)) and m3;
 Result := (Mask + (Mask shr 8) + (Mask shr 16) + (Mask shr 24)) and $3F;
end;

var
 i,n: Integer;
begin
 FSubThreadsCount := GetNonZeroBitCount(pam);
 SetLength(FSubThreads, FSubThreadsCount);
 SetLength(FSubThreadsEvents, FSubThreadsCount);
 i := 0;
 n := 1;
 while i < FSubThreadsCount do
   begin
     while (n and pam) = 0 do
       n := n shl 1;
..
     FSubThreads[i] := TNNComputeThread.Create(..);
     with FSubThreads[i] do
       begin
         SetThreadAffinityMask(Handle, n);
         ..
       end;
     n := n shl 1;
     Inc(i);
   end;
end;
..
initialization
 GetProcessAffinityMask(GetCurrentProcess, pam, sam);
 SetProcessAffinityMask(GetCurrentProcess, sam);
 GetProcessAffinityMask(GetCurrentProcess, pam, sam);

end.


Разбирайся.


toropoff   (2011-11-29 20:11:00) [2]

примерно понял, спасибо!


Rouse_   (2011-11-29 20:03:00) [3]

Полноценно разнести не получится, можно лишь указать системе что для определенной нити желательно использовать определенное ядро через SetThreadAffinityMask, ну а дальше, как уже сказали - система сама разберется.


Dennis I. Komarov   (2011-11-29 20:01:00) [4]

Оставь сию работу окнам, они вряд ли хуже с этим справятся...


Palladin   (2011-11-29 20:00:00) [5]

Зачем тебе это? Система сама разберется.


MBo   (2011-11-29 20:00:00) [6]

SetThreadAffinityMask и далее по ссылкам


Наверх

Титульная страница Поиск, карта сайта Написать письмо