# chiedo aiuto

## max_1975

Ciao a tutti! Ho bisogno di due consigli:

1) Come faccio per masterizzare un CD bootable con le immagini iso di Gentoo? ho poca dimistichezza con questo tipo di programmi...

2)Lavorando su macchine SMP, avrei la necessità di abilitare nel g++/gcc la possibilità di avere un codice parallelizzato (lavoro nell'ambito della ricerca scientifica)...quali opzioni devo indicare? (leggendo il man di gcc/g++ non ho trovato nulla al riguardo).

Grazie

----------

## enx89

1)non ho capito cosa intendi per:  *Quote:*   

> masterizzare un CD bootable con le immagini iso di Gentoo?

 ?

vuoi masterizzare le iso di gentoo?

2) c'è un opzione del gcc/g++ che specifica quante compilazioni parallele deve fare:

```
-jx
```

dove x di solito è il numero di processori +1.

Nel make.conf c'è un' opzione specifica:

```
MAKEOPTS="-j2"
```

che però funziona solo quando usi portage.

Ciao ENx

----------

## cerri

1) Da windows puoi usare nero. Da Linux puoi usare un qualsiasi tool (cdrecord via shell).

2) Se non erro l'SMP va abilitato nel kernel, non e' necessario passare al compilatore nessuna opzione (ma non sono ferrato in materia). Per compilare piu' velocemente puoi usare MAKEOPTS in /etc/make.conf settabdolo a -j3 (# ossia il numero di CPU +1).

CHIUNQUE e' autorizzato a smentirmi  :Very Happy: 

----------

## max_1975

Il problema che ho è che non riesco a fare il boot dal cd su cui ho copiato il file gentoo-basic-x86-1.4_rc4.iso ... mi chiedevo quindi se non avessi sbagliato a fornire qualche parametro al programma che ho utilizzato per masterizzare (Nero per winzozz)

Per quanto riguarda la compilazione con -jx volevo chiederti: questa opzione parallelizza solo il processo di compilazione oppure anche l'eseguibile?

grazie[/quote]

----------

## enx89

 *Quote:*   

> Il problema che ho è che non riesco a fare il boot dal cd su cui ho copiato il file gentoo-basic-x86-1.4_rc4.iso ... mi chiedevo quindi se non avessi sbagliato a fornire qualche parametro al programma che ho utilizzato per masterizzare (Nero per winzozz) 

 

Beh in teoria non dovresti dargli nessun parametro, anche perchè non te ne chiede! Cmq se puoi usa linux per la masterizzazione delle iso (o cdrecord per win), anche se nero dovrebbe farcela tranquillamente!!

la sintassi di cdrecord è:

```
cdrecord dev=x,y,z speed=t -v immagine.iso
```

dove x,y,z identifica il tuo masterizzatore ( lo trovi con "cdrecord -scanbus"), il -v ti serve per avere più dettagli in output, mentre invece la t è la velocità di masterizzazione.

 *Quote:*   

> Per quanto riguarda la compilazione con -jx volevo chiederti: questa opzione parallelizza solo il processo di compilazione oppure anche l'eseguibile?

 

-jx parallelizza solo la compilazione, per l'esecuzione ci dovrebbe pensare il kernel, a cui tu avrai abilitato il supporto per l'SMP. Inoltre dovresti usare i threads (ovvero programmazione concorrente) per avere l' esecuizione parallela di un unico programma, ma queste sono cose che forse già sai!!   :Very Happy:   :Very Happy:   :Very Happy: 

ENx

----------

## cerri

 *max_1975 wrote:*   

> Il problema che ho è che non riesco a fare il boot dal cd su cui ho copiato il file gentoo-basic-x86-1.4_rc4.iso

 

Non devi fare un cd con quel file ma devi usare quel file come immagine.

 *max_1975 wrote:*   

>  ... mi chiedevo quindi se non avessi sbagliato a fornire qualche parametro al programma che ho utilizzato per masterizzare (Nero per winzozz)

 

Si. Non ricordo qual'e' l'opzione giusta, ma ripeto quel file e' un'immagine che contiene un filesystem, quindi devi creare un cd DA quel file non CON quel file.

 *max_1975 wrote:*   

> Per quanto riguarda la compilazione con -jx volevo chiederti: questa opzione parallelizza solo il processo di compilazione oppure anche l'eseguibile?

 

Quell'opzione e' passata al make, non al gcc.

Dal man di make:

```
       -j jobs

            Specifies the number of jobs (commands) to run simultaneously.  If

            there  is  more than one -j option, the last one is effective.  If

            the -j option is given without an argument, make  will  not  limit

            the number of jobs that can run simultaneously.
```

In sostanza, velocizza il make, non l'eseguibile. IMHO la funzione SMP e' kernel.

----------

## cerri

enx89, manco ci mettessimo d'accordo  :Very Happy:   :Very Happy:   :Very Happy: 

----------

## max_1975

Non posso utilizzare i threads (in sostanza il programma deve fare una sola cosa un sacco di volte...ovvero cicli for innestati su array multidimensionali)...mi ricordo che quando lavoravo su macchine Digital Alpha (con compilatore proprietario) bisognava specificare al compilatore esattamente il numero di processori su cui il programma avrebbe girato...

Vedrò di informarmi meglio...

Grazie comunque

----------

## cerri

PARLO PERCHE' CREDO CHE SIA COSì... FORSE

In linux un processo NON puo' girare su piu' processori contemporaneamente, pertanto il "trick" sta nello scrivere l'applicazione in modo da forkare piu' processi. Inoltre, il GCC non ha nessuna opzione per ottimizzare un'applicazione in base alle CPU, ma soltanto per l'architettura sulla quale dovra' girare.

Prova a dare un'occhiata a questo pdf.

----------

## max_1975

Credevo che anche il compilatore fosse capace di spezzare cicli for in più processi indipendenti da distribuire ai vari processori...credo che il compilatore Intel per Fortran 90/95 (ifc) si capace di farlo...

----------

## enx89

 *cerri wrote:*   

> In linux un processo NON puo' girare su piu' processori contemporaneamente, pertanto il "trick" sta nello scrivere l'applicazione in modo da forkare piu' processi

 

Sono d' accordo!!!!!!!  :Very Happy:   :Very Happy:   :Very Happy:   Normalmente un processo gira su un processore, ma se il processo usa i threads questi vengono fatti girare su più processori. 

 *max_1975 wrote:*   

> Non posso utilizzare i threads (in sostanza il programma deve fare una sola cosa un sacco di volte...ovvero cicli for innestati su array multidimensionali)

 

non riesci proprio a trasformare la tua appilcazione per usare i threads, vero?

Purtroppo non so darti altri consigli  :Sad:   :Sad:   :Sad:   :Sad:   :Sad: 

ENx

----------

