-
1. Data: 2013-06-26 14:47:08
Temat: *.bat i więcej rdzeni
Od: Peter <k...@w...pl>
W czasach procesorów 1-rdzeniowych wszytko było jasne.
np taki plik *.bat
prog.exe par1
prog.exe par2
prog.exe par3
prog.exe par4
wykonywał się kolejno, po zakończeniu 1-go wykonywał się 2-gi, itd
Obecnie gdy większość komputerów posiada 2,4,6..rdzeni istnieje potrzebna by
wykonywały się równolegle. Jak
obecnie pisze się skrypty by te programy wykonywały się równolegle?
Drugi problem.
Procesy równoległe są rozdzielane na wszystkie rdzenie cyklicznie. Jak przypisać żeby
prog.exe par1 wykonywał
się na konkretnym rdzeniu
Jeżeli to ma jakieś znaczenie to OS to Vista
--
Peter
-
2. Data: 2013-06-26 15:02:20
Temat: Re: *.bat i więcej rdzeni
Od: bartekltg <b...@g...com>
W dniu 2013-06-26 14:47, Peter pisze:
> W czasach procesorów 1-rdzeniowych wszytko było jasne.
> np taki plik *.bat
> prog.exe par1
> prog.exe par2
> prog.exe par3
> prog.exe par4
> wykonywał się kolejno, po zakończeniu 1-go wykonywał się 2-gi, itd
> Obecnie gdy większość komputerów posiada 2,4,6..rdzeni istnieje
> potrzebna by wykonywały się równolegle. Jak obecnie pisze się skrypty by
> te programy wykonywały się równolegle?
Pod bash jest $, którym kończy się polecenie.
Pod windowsem
start prog.exe par1
start prog.exe par2
start prog.exe par3
start prog.exe par4
nawet ładniej, bo każdy dostanie własną konsolę.
To był pierwszy wynik w wyszukiwaniu [non blocking bat windows] ;p
> Drugi problem.
> Procesy równoległe są rozdzielane na wszystkie rdzenie cyklicznie. Jak
> przypisać żeby prog.exe par1 wykonywał się na konkretnym rdzeniu
Np użyć bibliotek do wątków (std thread? leniuchy dalej nie zrobily
tego na win32, a emulacja posix wolna:) lub do 'zrównoleglania'
(openMP, MPI). Temat dość rozległy;)
> Jeżeli to ma jakieś znaczenie to OS to Vista
Ma, większy lub mniejszy, zależy czego używasz.
pzdr
bartekltg
-
3. Data: 2013-06-26 15:30:07
Temat: Re: *.bat i więcej rdzeni
Od: Michoo <m...@v...pl>
On 26.06.2013 14:47, Peter wrote:
> W czasach procesorów 1-rdzeniowych wszytko było jasne.
> np taki plik *.bat
> prog.exe par1
> prog.exe par2
> prog.exe par3
> prog.exe par4
> wykonywał się kolejno, po zakończeniu 1-go wykonywał się 2-gi, itd
>
> Obecnie gdy większość komputerów posiada 2,4,6..rdzeni istnieje
> potrzebna by wykonywały się równolegle. Jak obecnie pisze się skrypty by
> te programy wykonywały się równolegle?
Zazwyczaj masz jakieś zależności między tymi wywołaniami. Jak możesz to
imo użyj gnu MAKE i zestawu skryptów.
>
> Drugi problem.
> Procesy równoległe są rozdzielane na wszystkie rdzenie cyklicznie. Jak
> przypisać żeby prog.exe par1 wykonywał się na konkretnym rdzeniu
Po co?
--
Pozdrawiam
Michoo
-
4. Data: 2013-06-26 16:41:22
Temat: Re: *.bat i więcej rdzeni
Od: bartekltg <b...@g...com>
W dniu 2013-06-26 15:02, bartekltg pisze:
> W dniu 2013-06-26 14:47, Peter pisze:
>> W czasach procesorów 1-rdzeniowych wszytko było jasne.
>> np taki plik *.bat
>> prog.exe par1
>> prog.exe par2
>> prog.exe par3
>> prog.exe par4
>> wykonywał się kolejno, po zakończeniu 1-go wykonywał się 2-gi, itd
>
>
> > Obecnie gdy większość komputerów posiada 2,4,6..rdzeni istnieje
> > potrzebna by wykonywały się równolegle. Jak obecnie pisze się skrypty by
> > te programy wykonywały się równolegle?
>
>
> Pod bash jest $, którym kończy się polecenie.
> Pod windowsem
>
> start prog.exe par1
> start prog.exe par2
> start prog.exe par3
> start prog.exe par4
>
> nawet ładniej, bo każdy dostanie własną konsolę.
>
> To był pierwszy wynik w wyszukiwaniu [non blocking bat windows] ;p
>
>> Drugi problem.
>> Procesy równoległe są rozdzielane na wszystkie rdzenie cyklicznie. Jak
>> przypisać żeby prog.exe par1 wykonywał się na konkretnym rdzeniu
Ciach
Nie doczytałem pytania.
start z parematrem /AFFINITY, szczegóły w helpie.
Pytanie, na co to komu, pozostaje.
pzdr
bartekltg
-
5. Data: 2013-06-26 22:26:07
Temat: Re: *.bat i więcej rdzeni
Od: Peter <k...@w...pl>
bartekltg napisał:
> W dniu 2013-06-26 15:02, bartekltg pisze:
>> W dniu 2013-06-26 14:47, Peter pisze:
>>> W czasach procesorów 1-rdzeniowych wszytko było jasne.
>>> np taki plik *.bat
>>> prog.exe par1
>>> prog.exe par2
>> Pod windowsem
>>
>> start prog.exe par1
>> start prog.exe par2
>>
>> nawet ładniej, bo każdy dostanie własną konsolę.
Proste. Dziękuję. Sprawdzone.
Ma jeden dziwny feler
prog.exe par1 > out.txt wysyła oczywiście wydruk ekranu do pliku
a
start prog.exe par1 > out.txt zakłada plik out.txt i nic do niego nie wpisuje. Dziwne
>>> Procesy równoległe są rozdzielane na wszystkie rdzenie cyklicznie. Jak
>>> przypisać żeby prog.exe par1 wykonywał się na konkretnym rdzeniu
>
> start z parematrem /AFFINITY, szczegóły w helpie.
Tego na razie nie mogę sprawdzić bo maszyna teraz ma obciążone wszystkie rdzenie i
dopiero w sobotę gdy będzie
wolna będę mógł poeksperymentować. Mam nadzieje, że będzie działać zgodnie z opisem
>
> Pytanie, na co to komu, pozostaje.
Jak są np 3 procesy to rozrzuca się je na 4 rdzenie, żeby średnie obciążenie były
jednakowe. I to ma sens.
Ale jak są 4 identyczne procesy numeryczne, które wykorzystują 100% mocy rdzenia to
nie ma potrzeby, żeby je
przerzucać pomiędzy rdzeniami co powoduje pewne straty czasu. Ile nie wiem i chcę to
sprawdzić.
--
Peter
-
6. Data: 2013-06-26 23:00:22
Temat: Re: *.bat i więcej rdzeni
Od: Edek <e...@g...com>
Dnia pamiętnego Wed, 26 Jun 2013 22:26:07 +0200, Peter wyjmując peta
oznajmił:
> bartekltg napisał:
>> W dniu 2013-06-26 15:02, bartekltg pisze:
>>> W dniu 2013-06-26 14:47, Peter pisze:
>>>> W czasach procesorów 1-rdzeniowych wszytko było jasne.
>>>> np taki plik *.bat prog.exe par1 prog.exe par2
>
>>> Pod windowsem
>>>
>>> start prog.exe par1 start prog.exe par2
>>>
>>> nawet ładniej, bo każdy dostanie własną konsolę.
>
> Proste. Dziękuję. Sprawdzone.
>
> Ma jeden dziwny feler prog.exe par1 > out.txt wysyła oczywiście wydruk
> ekranu do pliku a
> start prog.exe par1 > out.txt zakłada plik out.txt i nic do niego nie
> wpisuje. Dziwne
Nie wiem czy tak samo jest w tym shellu, ale w bash trzeba napisać coś
w tym stylu:
start "prog.exe > out.txt"
>> Pytanie, na co to komu, pozostaje.
>
> Jak są np 3 procesy to rozrzuca się je na 4 rdzenie, żeby średnie
> obciążenie były jednakowe. I to ma sens. Ale jak są 4 identyczne procesy
> numeryczne, które wykorzystują 100% mocy rdzenia to nie ma potrzeby,
> żeby je przerzucać pomiędzy rdzeniami co powoduje pewne straty czasu.
> Ile nie wiem i chcę to sprawdzić.
Pół żartem pół serio, sprawdź jeszcze ile zmienia działanie sprzętu
i czy przy aktywnym poruszaniu myszką nie będzie spowolnienia. Powinno
być bardziej zauważalne niż to o czym piszesz jak masz myszkę przez usb,
już zupełnie serio.
--
Edek
-
7. Data: 2013-06-27 15:51:19
Temat: Re: *.bat i więcej rdzeni
Od: Peter <k...@w...pl>
Użytkownik Edek napisał:
>>>> start prog.exe par1
>>>> start prog.exe par2
>> Ma jeden dziwny feler prog.exe par1 > out.txt wysyła oczywiście wydruk
>> ekranu do pliku a
>> start prog.exe par1 > out.txt zakłada plik out.txt i nic do niego nie
>> wpisuje. Dziwne
>
> Nie wiem czy tak samo jest w tym shellu, ale w bash trzeba napisać coś
> w tym stylu:
> start "prog.exe > out.txt"
Niestety to windows a nie linux, tutaj wyświetli się jedynie tytuł okna 'prog.exe >
out.txt'
Stosowałem już różne kombinacje.
można tak start "tytuł okna" "prog.exe" par1 > out.txt
Tytuł okna musi mieć cudzysłów, program może mieć cudzysłów a parametry i dalsze nie
można stosować cudzysłów
I niestety tylko zakłada plik i nic do niego nie wpisuje.
problem ominąć można tak. W pliku b0.bat piszemy
start b1.bat
start b2.bat
a w plikach
b1.bat piszemy prog.exe par1 > b1.txt
b2.bat piszemy prog.exe par1 > b2.txt
Teraz wyniki z ekranu zostaną wpisane odpowiednio do pliku b1 i b2.txt
ale.. okna nie zamykają się samoczynnie po zakończeniu pracy!!.
>> Ale jak są 4 identyczne procesy
>> numeryczne, które wykorzystują 100% mocy rdzenia to nie ma potrzeby,
>> żeby je przerzucać pomiędzy rdzeniami co powoduje pewne straty czasu.
>> Ile nie wiem i chcę to sprawdzić.
>
> Pół żartem pół serio, sprawdź jeszcze ile zmienia działanie sprzętu
> i czy przy aktywnym poruszaniu myszką nie będzie spowolnienia. Powinno
> być bardziej zauważalne niż to o czym piszesz jak masz myszkę przez usb,
> już zupełnie serio.
Masz rację przy aktywnym machaniu myszką procesy się spowolnią o jakieś 2-4%, ale kto
macha bez przerwy
myszką?. Ja kilka razy dziennie macham myszką gdy podglądam postęp obliczeń a nocy
śpię ;)
Czy skierowanie procesu tylko do konkretnego rdzenia skróci czas nie wiem. Dowiem się
gdy zrobię testy w sobotę.
--
Peter
-
8. Data: 2013-06-27 17:36:53
Temat: Re: *.bat i więcej rdzeni
Od: bartekltg <b...@g...com>
W dniu 2013-06-26 22:26, Peter pisze:
> bartekltg napisał:
>> W dniu 2013-06-26 15:02, bartekltg pisze:
>>> W dniu 2013-06-26 14:47, Peter pisze:
>>>> W czasach procesorów 1-rdzeniowych wszytko było jasne.
>>>> np taki plik *.bat
>>>> prog.exe par1
>>>> prog.exe par2
>
>>> Pod windowsem
>>>
>>> start prog.exe par1
>>> start prog.exe par2
>>>
>>> nawet ładniej, bo każdy dostanie własną konsolę.
>
> Proste. Dziękuję. Sprawdzone.
>
> Ma jeden dziwny feler
> prog.exe par1 > out.txt wysyła oczywiście wydruk ekranu do pliku
> a
> start prog.exe par1 > out.txt zakłada plik out.txt i nic do niego nie
> wpisuje. Dziwne
Trzeba zapytać googla i poszperać po forach, na szybko nie widzę.
Ale z przełącznikiem /B (nie uruchamiaj własnej konsoli, tylko w tle,
a, że przekierowujemy wyjście, to konsola niepotrzebna) działa jak
trzeba.
start /B prog.exe par1 > out.txt
>> Pytanie, na co to komu, pozostaje.
>
> Jak są np 3 procesy to rozrzuca się je na 4 rdzenie, żeby średnie
> obciążenie były jednakowe. I to ma sens.
> Ale jak są 4 identyczne procesy numeryczne, które wykorzystują 100% mocy
> rdzenia to nie ma potrzeby, żeby je przerzucać pomiędzy rdzeniami co
> powoduje pewne straty czasu. Ile nie wiem i chcę to sprawdzić.
Eee.
Podnieś piorytet, są przełączniki do tego, tylko ciężko będzie się
dogadać wtedy z interfejsem:) Nie używaj realtime;-)
pzdr
bartekltg