The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > High Level Programming
.
google unix.com



High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Forking i flertrådade program skyrulz UNIX för avancerade & Expertanvändare 0 04-22-2009 02:57
köra kommandot flertrådade util utan programmering umen Shell-programmering och Skript 0 12-07-2008 06:01
Har du problem med att skriva en grundläggande tanken program SeanWuzHere Shell-programmering och Skript 3 11-30-2006 01:41
grundläggande matematiska program 4 barn perleo High Level Programming 9 10-22-2002 04:51
Få errno i en flertrådade program S. Vishwanath High Level Programming 2 03-25-2002 09:58

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 06-14-2009
CRGreathouse CRGreathouse is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 104
Grundläggande flertrådade program

Jag skulle vilja skriva ett program (jag är flexibel på språk, C / C + + var min ursprungliga idé, men ett skriptspråk som sannolikt skulle vara bättre) som löper hundratals program, men bara N \u003d 4 (exempelvis) i taget. Tanken är att hålla alla kärnor på en Flerledarkablar maskin upptagen.

Hur kan jag göra detta? Framför allt vill jag ett bibliotek samtal jag kan göra på något lämpligt språk som kan
  • Starta en ny tråd
  • Starta en kommando-rad i tråden med godtyckliga argument
  • Igen när processen är klar, återvänder information till de viktigaste Tråd och avsluta hjälpare / slavej tråd
  • Idealet är att skicka och ta emot information om standard in / ut
Detta verkar vara en mycket enkel sak att fråga, jag är bara ute efter något som skulle göra det enkelt. Jag är troligen kommer att skriva många program som detta för olika arbetsuppgifter, och jag trodde det skulle vara bra att fråga runt innan dykning till något som inte är helt lämpligt. Jag började läsa om den (ny) Python gäng tidigare innan jag trodde att be om råd / hjälp.
  #2 (permalänk)  
Old 06-14-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Ort:. Tillhör
Inlägg: 1857
Kan du ge oss lite mer information?
  • Hur får man listan över program som ska köras?
  • Finns det några beroenden mellan program? Om ja, hur skulle du beskriva dem?
  • Vad ska hända med stdout / stderr? Utgång till konsolen eller sparad någonstans?
  • Har programmen kräver någon form av bidrag när de är igång?
  #3 (permalänk)  
Old 06-14-2009
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Ort: Florida
Inlägg: 1.924
Vilket OS är du planerar att använda det här programmet om? Kan du kontrollera processor affinitet på detta OS?
  #4 (permalänk)  
Old 06-14-2009
CRGreathouse CRGreathouse is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 104
Citat:
Ursprungligen postat av pludi View Post
Hur får man listan över program som ska köras?
Programmet kommer att läsas i en textfil med en massa siffror, göra lite bearbetning på dem och sedan skapa en matris som bygger på dessa siffror. Varje del av kedjan kommer att passera genom en funktion som kommer att skapa en lämplig uppsättning data för den posten. Uppgifterna kommer att användas för att skapa en temporär fil och en kommandorad argument använder den filen.

Jag trodde inte att detta var relevant innan så jag inte nämnde det. I grund och botten programmet innebär ett visst arbete och kommer med en lista med kommandon för att köra.

Citat:
Ursprungligen postat av pludi View Post
Finns det några beroenden mellan program? Om ja, hur skulle du beskriva dem?
Ah, det är en ganska viktig fråga som jag glömde att ta itu med! Programmen är oberoende. Beroenden göra för komplicerat program, min är bara en grundläggande ett.

Citat:
Ursprungligen postat av pludi View Post
Vad ska hända med stdout / stderr? Utgång till konsolen eller sparad någonstans?
Jag vill att den skall föras tillbaka till det program som en sträng, om det är möjligt. Man får inte visas.

Citat:
Ursprungligen postat av pludi View Post
Har programmen kräver någon form av bidrag när de är igång?
Detta ett jag arbetar med inte, men jag vill ha en metod som kan skicka inmatning eftersom andra liknande program jag skriver kommer antagligen behöva göra detta.

----- Post Update -----

Citat:
Ursprungligen postat av fpmurphy View Post
Vilket OS är du planerar att använda det här programmet om? Kan du kontrollera processor affinitet på detta OS?
Jag har just ändrat min OS för 64-bitars Ubuntu 9.04. Programmen är processor-intensiva 64-bitars program med små och medelstora minne fotspår.
  #5 (permalänk)  
Old 06-14-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Ort:. Tillhör
Inlägg: 1857
Citat:
Ursprungligen postat av CRGreathouse View Post
Programmet kommer att läsas i en textfil med en massa siffror, göra lite bearbetning på dem och sedan skapa en matris som bygger på dessa siffror. Varje del av kedjan kommer att passera genom en funktion som kommer att skapa en lämplig uppsättning data för den posten. Uppgifterna kommer att användas för att skapa en temporär fil och en kommandorad argument använder den filen.
Så du har en massa data, överföra det till en annan form och då processen ytterligare, eller hur? Om du har tillgång till källkoden för den sista delen av behandlingen, kan det vara möjligt att skriva om den med OpenMP (Wikipedia)? Det sätt på vilket det skulle vara portabel mellan olika operativsystem, processorer och antal kärnor, och du skulle eliminera behovet av en central styrning programmet.
  #6 (permalänk)  
Old 06-14-2009
CRGreathouse CRGreathouse is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 104
Citat:
Ursprungligen postat av pludi View Post
Så du har en massa data, överföra det till en annan form och då processen ytterligare, eller hur? Om du har tillgång till källkoden för den sista delen av behandlingen, kan det vara möjligt att skriva om den med OpenMP (Wikipedia)? Det sätt på vilket det skulle vara portabel mellan olika operativsystem, processorer och antal kärnor, och du skulle eliminera behovet av en central styrning programmet.
De individuella programmen är inte riktigt parallelizable. (I CS jargong, they're conjectured att P-komplettUtanför NC.) They're gör många följdnummer verksamheten till en enda del av uppgifter. Det är därför jag vill köra dem individuellt.

Så istället skriver jag ett program för att hitta den mest effektiva lösningen för varje del, beräkna dess sannolika runtime, lösa en ungefärlig bin-förpackning problem, och tidsplan var över en användarprogrammerade avstämbar antal processorer.
  #7 (permalänk)  
Old 06-14-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Ort:. Tillhör
Inlägg: 1857
OK, från vad du har lagt upp "tills nu, den grundläggande strukturen skulle vara ungefär så här (pseudo-kod)
Kod:
Read numbers from file
Process them
Create output files
Create array of commands to run
Total processes=0
While there are commands left
    pop a command from the stack
    fork() a subprocess
    In the child
        system() the command
    In the parent
        Total processes++
    If total processes >= 4
        wait() until any process returns
Input är egentligen inte ett problem här, eftersom gaffel () ed processer ärva föräldrarnas fil deskriptorer. Produktionen, eftersom så vitt jag vet är det svårt att gå från barn till förälder utan delat minne eller något liknande. Du kan spara utdata till en fil i varje barn mitt förändras stdout strax innan systemet ().
Alternativt kan du köra exec () programmet själv, för att minska gaffelgrepp ränta, men jag är inte säker på hur bra detta skulle fungera.
Plus, med shed_setaffinity Du kan ställa in affinitet av de processer (direkt det som CPU att använda), men du har för att spåra vilken CPU den sista processen används.

Alla som har mer erfarenhet av algoritmer har en bättre idé?
Reply

Komihåglista

Taggar
Flerledarkablar, trådning

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 08:01.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0