Supporto alla compilazione parallela: è predefinito in Slackware?

Se avete problemi con l'installazione e la configurazione di Slackware64 postate qui. Non usate questo forum per argomenti che trattano la Slackware32 o generali... per quelli usate rispettivamente il forum Slackware e Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da gian_d »

Sto testando uno slackbuild (saga-gis) attivando o meno il supporto a dipendenze opzionali. Fra queste c'è OpenMP. In genere non mi sono mai posto il problema perché nel mio sistema è installato OpenMPI (da slackbuilds.org) e ho sempre pensato che fosse l'unico pacchetto a fornire questo supporto.

Ma così non è. L'ho disinstallato per fare una prova ma la compilazione di Saga-gis parte ugualmente con il supporto alla parallelizzazione. Il modulo findpackage di cmake, infatti, restituisce questo risultato:

Codice: Seleziona tutto

-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
A questo punto mi sorge un dubbio e qui mi perdo. Questo supporto è dato da un pacchetto ufficiale della Slackware oppure da software di terze parti?
Cercando in rete mi viene il sospetto che l'attivazione del flag possa essere una funzionalità fornita da llvm (rilasciato nella Slackware ufficiale) oppure dal driver proprietario di Nvidia (CUDA non è installato). A questo punto potrei fare delle prove disinstallando a turno questi pacchetti, magari con il risultato di perdermi perché alla fine procederei alla cieca per tentativi.

Qualcuno ne sa qualcosa? Alla fine mi chiedo se effettivamente serva tenere installato OpenMPI visto che in SlackBuilds.org è in genere indicato come pacchetto necessario per il software che richiede il supporto a OpenMP. Preciso che OpenMPI è l'unico pacchetto che ho installato fra quelli disponibili su SBo.

Naturalmente la via più logica sarebbe quella di fare una verifica in un sistema pulito, ma la cosa si complicherebbe per me perché quelli che ho in macchina virtuale hanno già software di terze parti installato.

erio
Linux 4.x
Linux 4.x
Messaggi: 1354
Iscritto il: ven 9 ott 2009, 19:25
Slackware: 13.37
Kernel: 3.0.7
Desktop: kde

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da erio »

in slackware current /d c'e' parallel ma non so se parte in automatico o lo devi inpostare.

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da gian_d »

Sì, parallel è la prima cosa a cui ho pensato dal momento che è installato nel mio sistema, ma non sono in grado di verificare se il flag è fornito da questo pacchetto. In sostanza lo script findpackage di cmake verifica se funziona il flag -fopenmp ma poi non si capisce (almeno io) l'origine di questo flag. A meno che, ripeto, non provi per tentativi disinstallando i pacchetti presunti.

Ma sinceramente non so se il gioco vale la candela. Ho preso in carico questo slackbuild perché è orfano, ho già adattato lo script all'ultima versione e con la mia configurazione funziona, volevo però verificare se i vari script findpackage di cmake nei sorgenti di questo pacchetto funzionano per intercettare eventuali errori contestuali a specifiche configurazioni.

Ad esempio, questo software supporta la libreria qhull, ma anche se è installata cmake non la rileva, non so se per un difetto della configurazione di installazione di qhull o per un difetto nei sorgenti di saga-gis. Individuare in anticipo questi inconvenienti è utile in modo che si possano segnalare in README.

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da gian_d »

PS: in ogni modo parallel è già rilasciato anche nella Slackware 15 stable, non solo nella current.

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3026
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da ponce »

prova a dare un'occhiata al contenuto dei file risultanti da questa ricerca

Codice: Seleziona tutto

grep -i openmp /var/log/packages/* | grep -i cmake$
entrambi i file (piu' un terzo se hai multilib) fanno riferimento al supporto di OpenMP da parte del compilatore ma e' qualcosa che viene usato dal codice compilato a runtime per una esecuzione piu' efficace, non e' usato per accelerare la fase di compilazione.
il supporto ad openmp da parte del compilatore si riferisce alla possibilita' di parallelizzare alcune chiamate tramite una API, ma dipende tutto da come e' scritto il software che stai compilando: sono disponibili delle specifiche da seguire https://www.openmp.org/specifications/

openmpi invece e' richiesto (come dipendenza obbligatoria o opzionale) da alcuni software che sono su SBo: nel caso tu lo rimuova e' probabile che smettano di funzionare (a meno che non aggiungano libmpi al loro interno staticamente).

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da gian_d »

Grazie Ponce, ora è più chiaro: l'incriminato è proprio llvm!

Codice: Seleziona tutto

/var/log/packages/cmake-3.26.3-x86_64-1:usr/share/cmake-3.26/Modules/FindOpenMP.cmake
/var/log/packages/llvm-16.0.3-x86_64-1:usr/lib64/cmake/openmp/FindOpenMPTarget.cmake
In ogni modo la rimozione era temporanea: openmpi l'ho installato come dipendenza obbligatoria di tauDEM (un applicativo Gis) e, visto che ce l'ho nel sistema, come dipendenza opzionale di VTK. Quando faccio queste disinstallazioni lo faccio solo temporaneamente per testare uno slackbuild in differenti contesti. Infatti conservo sempre una copia dei pacchetti compilati per non dover ripetere la compilazione quando voglio rimuovere temporaneamente un pacchetto.

Sul fatto che una dipendenza sia obbligatoria in runtime o in compilazione è un altro paio di maniche. Nel dubbio io lascio installate tutte le dipendenze anche quelle che in runtime non sarebbero necessarie

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da 414N »

In realtà gcc ne contiene una sua implementazione (la libgomp) e forse viene rilevata anch'essa dal modulo FindOpenMP di cmake.

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da gian_d »

può darsi, per appurarlo forse bisognerebbe riguardarsi il codice sorgente del modulo, ma non mi sembra il caso, si trattava di una semplice curiosità

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Supporto alla compilazione parallela: è predefinito in Slackware?

Messaggio da 414N »

Non importa, basta un semplice programma di test in C con OpenMP:

Codice: Seleziona tutto

#include <stdio.h>
#include "omp.h"
int main()
{
#pragma omp parallel
	{
		printf ("hello from thread %d\n", omp_get_thread_num());
	}
	return 0;
}
Compilandolo con

Codice: Seleziona tutto

gcc -fopenmp -o test_omp test_omp.c
ottengo:

Codice: Seleziona tutto

hello from thread 3
hello from thread 0
hello from thread 7
hello from thread 6
hello from thread 2
hello from thread 1
hello from thread 5
hello from thread 4

Rispondi