This is an old revision of the document!
Table of Contents
Parsery
Závislostní parsery
- Maximum Spanning Tree Parser (Ryan McDonald)
Danovo parsing repository
Verzovaná složka, která zatím obsahuje stanfordský parser, Charniakův parser, Johnsonův reranker a řadu drobných nástrojů pro manipulaci s treebanky. Pokud chcete s uvedenými parsery či nástroji pracovat, musíte si nejprve z repozitáře vytáhnout svou vlastní pracovní kopii nástrojů (návod následuje). V případě potřeby můžete opravovat chyby nebo přidávat vlastní nástroje a změny odesílat zpátky do repozitáře. V takovém případě se ale nejdřív důkladně seznamte se správou verzí, abyste se uměli vyhnout konfliktům; nezapomeňte také ke každému svn commit
popsat, v čem změna spočívá!
Nikdy se nehrabte přímo (tj. bez prostřednictví příkazů svn) v úložišti repozitáře!
Jak získat svou vlastní pracovní kopii
Do proměnné PARSINGROOT
níže nastavte cestu ke složce, ve které chcete svou pracovní kopii mít, nejlépe asi do /net/work/people/$USER
nebo někam na místní disk. (Složka parsing
zatím neexistuje, ale nadřazené složky pochopitelně existovat musí.) Ve všech návodech souvisejících s parsingem budeme na vaši pracovní kopii odkazovat jako na $PARSINGROOT
.
setenv PARSINGROOT /net/work/people/$USER/parsing svn checkout -q file:///net/work/public/SVN/parsing/trunk $PARSINGROOT cd $PARSINGROOT make
Než zavoláte make
, budete možná chtít otevřít $PARSINGROOT/brown-reranking-parser/Makefile
a zkontrolovat nastavení proměnné GCCFLAGS
. Některé části Brown reranking parseru jsou výpočetně velmi náročné a stojí za to je přeložit s optimalizacemi pro procesor, na kterém je budete pouštět. (Pokud chcete trénovat Johnsonův reranker na Penn Treebanku nebo srovnatelných datech, měli byste podle údajů z README
mít také aspoň 8 GB paměti, což rovnou diskvalifikuje většinu neclusterovaných počítačů.) Buďte opatrní, protože maximální optimalizace získáte jen za cenu toho, že parser nepoběží na slabších nebo jiných architekturách. Máte tyto možnosti:
GCCFLAGS = -march=pentium4 -mfpmath=sse -msse2 -mmmx
- 32bitové Xeony ležící mimo clustery, např. belzebub, freki, geri, anette, euler, sakuraGCCFLAGS = -march=opteron -m64
- Opterony (sol cluster, kentaur, troll, zlobr)GCCFLAGS = -march=nocona -mfpmath=sse -msse3 -mmmx
- 64bitové Xeony (orion cluster)
Dáváte-li přednost kompatibilitě s ostatními architekturami za cenu slabší optimalizace, použijte -mcpu
místo -march
, popř. nechte GCCFLAGS
úplně prázdné.
Knihovny Boost C++, PETSc a TAO
Céčkové / Cplusplusové knihovny Boost C++, PETSc a TAO jsou potřeba pro trénování rerankeru Marka Johnsona (reranker zřejmě přímo využívá jen TAO, ale PETSc potřebujeme taky, protože TAO je nadstavba PETSc). Tyto knihovny nejsou součástí parsing repository. Zde shrnujeme poznámky o jejich instalaci.
Boost C++ údajně “bývá součástí moderních distribucí Linuxu.”
PETSc je knihovna pro vědecké výpočty založené na parciálních diferenciálních rovnicích. Domovská stránka projektu je http://www-unix.mcs.anl.gov/petsc/petsc-2/. My máme verzi 2.3.2, vybalenou v /net/work/public/lib/petsc-2.3.2-p7
. Před instalací, jakož i později při používání knihovny, je potřeba mít cestu ke knihovně uloženou v systémové proměnné PETSC_DIR
. Pak je třeba uvnitř složky s knihovnou zavolat config/configure.py
. Pozor! Návod na instalaci na stránkách PETSc uvádí trochu jiné parametry pro configure
, než jaké doporučují stránky TAO! Pokud nenakonfigurujete PETSc tak, jak požaduje TAO, nepodaří se vám později nainstalovat TAO. My jsme použili tyto parametry:
setenv PETSC_DIR /net/work/public/lib/petsc-2.3.2-p7 cd $PETSC_DIR ./config/configure.py --with-clanguage=C++ --with-cc=gcc --with-fc=gfortran \ --download-f-blas-lapack=1 --with-mpi=0 --with-x=0 --with-shared=0
Stránky PETSc a TAO v příkladech uvádějí –with-fc=g77
; tento překladač Fortranu u nás nemáme, místo něj máme gfortran
. Konfigurační procedura sama stáhne a nainstaluje další knihovny (napsané ve Fortranu), které nejsou běžným příslušenstvím Linuxu, ale PETSc je potřebuje: BLAS (Basic Linear Algebra Subprograms) a LAPACK (Linear Algebra Package).
Na konci úspěšné konfigurace se dozvíme, jak máme mít nastavenou (při volání make
, ale i při pozdějším linkování knihoven ke svým programům) proměnnou PETSC_ARCH
. Hodnota použitá v následujícím příkladu platila na počítači zen; nejsem si jist, zda na 64bitových procesorech na clusteru nebude jiná. (Po přeložení knihovny proměnná PETSC_ARCH
pravděpodobně slouží jen jako odkaz na správnou podsložku knihovny. Otázkou ale zůstává, zda pro 64bitové Opterony nebude nutné knihovnu přeložit znova do jiné podsložky.)
setenv PETSC_ARCH linux-gnu-cxx-debug make all test
Kromě PETSC_ARCH
si na konci hlášení o konfiguraci všimněte ještě několikařádkové informace o BLAS/LAPACK. Jsou to údaje, které by měl dostat linker vašeho (resp. Johnsonova) programu, který bude používat TAO, potažmo PETSc, LAPACK a BLAS. Dost možná budete potřebovat podle této řádky upravit makefile klíčové části rerankeru Marka Johnsona (brown-reranking-parser/second-stage/programs/wlle/Makefile
). Původní Markův Makefile obsahoval prostě odkazy -llapack -lblas
, které fungovaly, protože BLAS a LAPACK byly na jeho systému nainstalovány ve standardních cestách nezávisle na PETSc. Podobně jsme to měli v Marylandu, proto jsem na potíže narazil až tady na ÚFALu: BLAS a LAPACK ve standardní výbavě nemáme, musíme tedy nalinkovat ten, který se nám stáhne jako “external package” do podstromu knihovny PETSc. Všimněte si také -lgfortran
na konci, to tam Mark taky neměl, ale bez toho se -lflapack
u nás nechytá.
BLAS_LAPACK_LIBS = -Wl,-rpath,${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} \ -L${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} -lflapack \ -Wl,-rpath,${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} \ -L${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} -lfblas \ -lgfortran TAO_PETSC_LIBS = -Wl,-rpath,${TAO_DIR}/lib/${PETSC_ARCH} \ -L${TAO_DIR}/lib/${PETSC_ARCH} -ltaopetsc -ltao \ -Wl,-rpath,${PETSC_DIR}/lib/${PETSC_ARCH} \ -L${PETSC_DIR}/lib/${PETSC_ARCH} \ -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc \ -lmpiuni ${BLAS_LAPACK_LIBS} -lm -lstdc++ -lgcc_s
TAO je zkratka za Toolkit for Advanced Optimization. Domovská stránka projektu je http://www-unix.mcs.anl.gov/tao/. My máme verzi 1.8.2, vybalenou v /net/work/public/lib/tao-1.8.2
. Před instalací, jakož i později při používání knihovny, je potřeba mít cestu ke knihovně uloženou v systémové proměnné TAO_DIR
.
setenv TAO_DIR /net/work/public/lib/tao-1.8.2 cd $TAO_DIR make all