Καλησπέρα σας,
Κατ' αρχήν να επισημάνω πως έχω σχετικά παλιό υπολογιστή (διπύρηνο αλλά των *32 bit*).
Επίσης για λόγους που έχουν να κάνουν με δουλειά έχω μείνει εσκεμμένα στην έκδοση *11.04 (natty)* του Ubuntu με έκδοση πυρήνα *2.6.38-16-generic* και δεν έχω μεταβεί σε κάποια νεότερη.
Αυτά τα χαρακτηριστικά είναι λογικά η πηγή των δεινών μου...
Κατ' αρχήν η εγκατάσταση του PIN ολοκληρώθηκε κανονικά (για να το επιβεβαιώσω χρειάστηκε να εκτελέσω το pin με το παράδειγμα παραλλαγμένο ως "*./pin.sh -injection child -t ./source/tools/ManualExamples/obj-ia32/inscount0.so -o ls.inscount0.output -- /bin/ls -aF*").
Κατόπιν, με την εκτέλεση της εντολής "*sudo apt-get update*" έλαβα κάποια αποτελέσματα του στιλ:
*Err http://gr.archive.ubuntu.com http://gr.archive.ubuntu.com natty/main Sources 404 Not FoundErr http://security.ubuntu.com http://security.ubuntu.com natty-security/restricted Sources 404 Not Found [IP: 2001:67c:1560:8001::11 80]W: Failed to fetch http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease* κλπ.
Προχωρώντας στην επόμενη εντολή " *sudo apt-get install make g++ libx11-dev libxext-dev libxaw7 \x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev*"
μετά από κάποιες σωστές εγκαταστάσεις έλαβα τις παρακάτω επισημάνσεις:
*You might want to run 'apt-get -f install' to correct these:The following packages have unmet dependencies: libglu1-mesa-dev : Depends: libgl1-mesa-dev but it is not going to be installed or libgl-dev libxi-dev : Depends: xorg-sgml-doctools (>= 1:1.5) but it is not going to be installed virtualbox-4.1 : Depends: libqt4-network (>= 4:4.5.3) but it is not going to be installed Depends: libqt4-opengl (>= 4:4.7.0~rc1) but it is not going to be installed Depends: libqtcore4 (>= 4:4.7.0~beta1) but it is not going to be installed Depends: libqtgui4 (>= 4:4.7.0~beta1) but it is not going to be installed Recommends: libsdl-ttf2.0-0 but it is not going to be installedE: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).*
Να σημειώσω ότι παρόμοιες απαντήσεις είχα λάβει και με την εντολή της αρχικής εκφώνησης της άσκησης όπου κάποιες βιβλιοθήκες ήταν διαφορετικές.
Μετά την σχετική προτροπή εκτέλεσα την εντολή "*apt-get -f install*" οπότε έλαβα:
*E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?*
Εκτελώντας την ξανά σαν root (μετά από *sudo su*) έλαβα παρόμοιες απαντήσεις με νωρίτερα:
*WARNING: The following packages cannot be authenticated! libqtcore4 libqt4-xml libqt4-dbus libqt4-network libqtgui4 libqt4-opengl libdbusmenu-qt2 appmenu-qtInstall these packages without verification [y/N]? yErr http://gr.archive.ubuntu.com/ubuntu/ http://gr.archive.ubuntu.com/ubuntu/ natty-updates/main libqtcore4 i386 4:4.7.2-0ubuntu6.4 404 Not FoundErr http://gr.archive.ubuntu.com/ubuntu/ http://gr.archive.ubuntu.com/ubuntu/ natty/main libdbusmenu-qt2 i386 0.8.2-0ubuntu2 404 Not FoundFailed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubun... http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubuntu6.4_i386.deb 404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubun... http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubuntu6.4_i386.deb 404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubu... http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubuntu6.4_i386.deb 404 Not Found [IP: 2001:67c:1562::15 80]* κλπ (δεν αντιγράφω όλο το κατεβατό).
Ευχόμενος να μπορώ να προχωρήσω παρ' όλα αυτά, εκτέλεσα την "*./bin/parsecmgmt -a build -c gcc-serial -p blackscholes bodytrack canneal facesim ferret fluidanimate freqmine raytrace swaptions streamcluster*" όπου το αρχικό build των packages φαινόταν να ολοκληρώνεται κανονικά αλλά στο τέλος έλαβα
*checking pkg-config files for X11 are available... yeschecking for XLIBGL... yeschecking for GLW... yeschecking for GLUT... configure: error: Package requirements (x11 xmu xi) were not met:No package 'xi' foundConsider adjusting the PKG_CONFIG_PATH environment variable if youinstalled software in a non-standard prefix.Alternatively, you may set the environment variables GLUT_CFLAGSand GLUT_LIBS to avoid the need to call pkg-config.See the pkg-config man page for more details.[PARSEC] Error: 'env ./configure --with-driver=xlib --enable-glut --enable-static --disable-shared --prefix=/home/giannis/parsec-3.0/pkgs/libs/mesa/inst/i686-linux.gcc-serial' failed.*
Τα επόμενα βήματα σχετικά με το "*cslab_create_parsec_workspace.sh*" κύλισαν κανονικά (δημιουργήθηκε ο φάκελος parsec_workspace με τα εκτελέσιμα και με την εκτέλεση της εντολής "*cat cmds_simlarge.txt*" έλαβα τα αποτελέσματα που αναγράφονται και στην εκφώνηση).
Κατόπιν όρισα την μεταβλητή περιβάλλοντος LD_LIBRARY_PATH με την τροποποίηση "*i686-linux.gcc-serial*" καθώς είδα ότι υπήρχε αυτός ο φάκελος αντί του "*amd64-linux.gcc*" όπου και φαίνεται πως έγινε κανονικά.
Όσον αφορά την μεταγλώττιση του cslab_cache.cpp, δίνοντας "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-intel64/cslab_cache.so*" έλαβα
*make: *** No rule to make target `obj-intel64/cslab_cache.so'. Stop.*
Αντιλαμβανόμενος (νομίζω...) τι συνέβαινε δημιούργησα φάκελο με την ονομασία "obj-ia32" μέσα στον φάκελο "pintool" και εκτέλεσα ξανά την εντολή παραλλαγμένη ως "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so*"
Η μεταγλώττιση φαίνεται πως πέτυχε και στον φάκελο "*obj-ia32*" δημιουργήθηκαν τα αρχεία *cslab_cache.o* και *cslab_cache.so*. Στο terminal έλαβα
*g++ -DBIGARRAY_MULTIPLIER=1 -Wall -Werror -Wno-unknown-pragmas -fno-stack-protector -DTARGET_IA32 -DHOST_IA32 -DTARGET_LINUX -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -O3 -fomit-frame-pointer -fno-strict-aliasing -c -o obj-ia32/cslab_cache.o cslab_cache.cppg++ -shared -Wl,--hash-style=sysv -Wl,-Bsymbolic -Wl,--version-script=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/pintool.ver -o obj-ia32/cslab_cache.so obj-ia32/cslab_cache.o -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib-ext -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/runtime/glibc -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/lib -lpin -lxed -lpindwarf -ldl*
Προσπαθώντας πλέον να χρησιμοποιήσω το cslab_cache pintool με την εντολή "*/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/pin.sh -t /home/giannis/advcomparch-2015-16-ex1-helpcode/pintool/obj-ia32/cslab_cache.so -o my_output.out -L1c 64 -L1a 8 -L1b 64 -L2c 256 -L2a 8 -L2b 64 -- /home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes 1 /home/giannis/parsec-3.0/parsec_workspace/inputs/in_64K.txt prices.txt*"
έλαβα
*E: Attach to pid 4209 failed. E: The Operating System configuration prevents Pin from using the default (parent) injection mode.E: To resolve this, either execute the following (as root):E: $ echo 0 > /proc/sys/kernel/yama/ptrace_scopeE: Or use the "-injection child" option.E: For more information, regarding child injection, see Injection section in the Pin User Manual.E: Killed*
Προσθέτοντας την παράμετρο "*-injection child*" και εκτελώντας ξανά την προηγούμενη εντολή έλαβα:
*/home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes : No such file or directory*
Γενικώς ο φάκελος executables είναι άδειος οπότε φαντάζομαι πως δεν έχουν δημιουργηθεί τα απαιτούμενα εκτελέσιμα.
Τι έχει συμβεί και πως το ξεπερνάω; Έχει σχέση με τις βιβλιοθήκες που δεν εγκαταστάθηκαν ή με την δημιουργία των packages; Μήπως αφού έχω παλαιότερο σύστημα έπρεπε να χρησιμοποιήσω κάποια παλαιότερη έκδοση του PIN και όχι την 71313;
Γενικώς οποιαδήποτε βοήθεια προς εμάς που έχουμε 32-bit μηχανήματα ή/και παλαιότερη έκδοση Linux θα ήταν ιδιαίτερα ευπρόσδεκτη!
Σας ευχαριστώ - με εκτίμηση,
Γιάννης Χορτομάνης
Καλησπέρα Γιάννη,
Καλησπέρα σας,
Κατ' αρχήν να επισημάνω πως έχω σχετικά παλιό υπολογιστή (διπύρηνο αλλά των *32 bit*).
Επίσης για λόγους που έχουν να κάνουν με δουλειά έχω μείνει εσκεμμένα στην έκδοση *11.04 (natty)* του Ubuntu με έκδοση πυρήνα *2.6.38-16-generic* και δεν έχω μεταβεί σε κάποια νεότερη.
Αυτά τα χαρακτηριστικά είναι λογικά η πηγή των δεινών μου...
Ναι, αυτή είναι η πηγή των δεινών σου αλλά ας τα πάρουμε με τη σειρά :)
Κατ' αρχήν η εγκατάσταση του PIN ολοκληρώθηκε κανονικά (για να το επιβεβαιώσω χρειάστηκε να εκτελέσω το pin με το παράδειγμα παραλλαγμένο ως "*./pin.sh -injection child -t ./source/tools/ManualExamples/obj-ia32/inscount0.so -o ls.inscount0.output -- /bin/ls -aF*").
Μιά χαρά ως εδώ, το PIN εκτελείται χωρίς πρόβλημα και σε 32-bit αρχιτεκτονικές. Το μόνο που αλλάζει όπως φαίνεται και από το παράδειγμά που δίνεις είναι το όνομα του φακέλου στον οποίο μεταγλωττίζονται τα pintools. Σε 32-bit cpu είναι obj-ia32 αντί για obj-intel64 που είναι σε 64-bit cpu.
Κατόπιν, με την εκτέλεση της εντολής "*sudo apt-get update*" έλαβα κάποια αποτελέσματα του στιλ:
*Err http://gr.archive.ubuntu.com http://gr.archive.ubuntu.com natty/main Sources 404 Not FoundErr http://security.ubuntu.com http://security.ubuntu.com natty-security/restricted Sources 404 Not Found [IP: 2001:67c:1560:8001::11 80]W: Failed to fetch http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease* κλπ.
Προχωρώντας στην επόμενη εντολή " *sudo apt-get install make g++ libx11-dev libxext-dev libxaw7 \x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev*"
μετά από κάποιες σωστές εγκαταστάσεις έλαβα τις παρακάτω επισημάνσεις:
*You might want to run 'apt-get -f install' to correct these:The following packages have unmet dependencies: libglu1-mesa-dev : Depends: libgl1-mesa-dev but it is not going to be installed or libgl-dev libxi-dev : Depends: xorg-sgml-doctools (>= 1:1.5) but it is not going to be installed virtualbox-4.1 : Depends: libqt4-network (>= 4:4.5.3) but it is not going to be installed Depends: libqt4-opengl (>= 4:4.7.0~rc1) but it is not going to be installed Depends: libqtcore4 (>= 4:4.7.0~beta1) but it is not going to be installed Depends: libqtgui4 (>= 4:4.7.0~beta1) but it is not going to be installed Recommends: libsdl-ttf2.0-0 but it is not going to be installedE: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).*
Να σημειώσω ότι παρόμοιες απαντήσεις είχα λάβει και με την εντολή της αρχικής εκφώνησης της άσκησης όπου κάποιες βιβλιοθήκες ήταν διαφορετικές.
Μετά την σχετική προτροπή εκτέλεσα την εντολή "*apt-get -f install*" οπότε έλαβα:
*E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?*
Εκτελώντας την ξανά σαν root (μετά από *sudo su*) έλαβα παρόμοιες απαντήσεις με νωρίτερα:
*WARNING: The following packages cannot be authenticated! libqtcore4 libqt4-xml libqt4-dbus libqt4-network libqtgui4 libqt4-opengl libdbusmenu-qt2 appmenu-qtInstall these packages without verification [y/N]? yErr http://gr.archive.ubuntu.com/ubuntu/ http://gr.archive.ubuntu.com/ubuntu/ natty-updates/main libqtcore4 i386 4:4.7.2-0ubuntu6.4 404 Not FoundErr http://gr.archive.ubuntu.com/ubuntu/ http://gr.archive.ubuntu.com/ubuntu/ natty/main libdbusmenu-qt2 i386 0.8.2-0ubuntu2 404 Not FoundFailed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubun... http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubuntu6.4_i386.deb 404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubun... http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubuntu6.4_i386.deb 404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubu... http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubuntu6.4_i386.deb 404 Not Found [IP: 2001:67c:1562::15 80]* κλπ (δεν αντιγράφω όλο το κατεβατό).
Εδώ το πρόβλημα έχει να κάνει με το ότι το natty ubuntu είναι τόσο παλιό που έχουν μεταφερθεί όλα τα repositories του. Δες και το παρακάτω thread από τα ubuntu forums: http://ubuntuforums.org/showthread.php?t=2150989
Σε 32-bit VM με natty ubuntu κατάφερα να εγκαταστήσω όλα τα απαιτούμενα πακέτα αλλάζοντας στο αρχείο /etc/apt/sources.list όλα τα entries 'http://gr.archive.ubuntu.com/ubuntu/' σε 'http://old-releases.ubuntu.com/ubuntu/'
Ευχόμενος να μπορώ να προχωρήσω παρ' όλα αυτά, εκτέλεσα την "*./bin/parsecmgmt -a build -c gcc-serial -p blackscholes bodytrack canneal facesim ferret fluidanimate freqmine raytrace swaptions streamcluster*" όπου το αρχικό build των packages φαινόταν να ολοκληρώνεται κανονικά αλλά στο τέλος έλαβα
*checking pkg-config files for X11 are available... yeschecking for XLIBGL... yeschecking for GLW... yeschecking for GLUT... configure: error: Package requirements (x11 xmu xi) were not met:No package 'xi' foundConsider adjusting the PKG_CONFIG_PATH environment variable if youinstalled software in a non-standard prefix.Alternatively, you may set the environment variables GLUT_CFLAGSand GLUT_LIBS to avoid the need to call pkg-config.See the pkg-config man page for more details.[PARSEC] Error: 'env ./configure --with-driver=xlib --enable-glut --enable-static --disable-shared --prefix=/home/giannis/parsec-3.0/pkgs/libs/mesa/inst/i686-linux.gcc-serial' failed.*
Αυτό σημαίνει πως λείπουν κάποια πακέτα, προφανώς κάποια που δεν βρέθηκαν κατά το 'apt-get install ...'. Για ξαναδοκίμασε να κάνεις build έχοντας επιτυχώς εγκαταστήσει όλα τα απαιτούμενα πακέτα.
Τα επόμενα βήματα σχετικά με το "*cslab_create_parsec_workspace.sh*" κύλισαν κανονικά (δημιουργήθηκε ο φάκελος parsec_workspace με τα εκτελέσιμα και με την εκτέλεση της εντολής "*cat cmds_simlarge.txt*" έλαβα τα αποτελέσματα που αναγράφονται και στην εκφώνηση).
Κατόπιν όρισα την μεταβλητή περιβάλλοντος LD_LIBRARY_PATH με την τροποποίηση "*i686-linux.gcc-serial*" καθώς είδα ότι υπήρχε αυτός ο φάκελος αντί του "*amd64-linux.gcc*" όπου και φαίνεται πως έγινε κανονικά.
Εδώ χρειάζεται να κάνεις μία αλλαγή στο script cslab_create_parsec_workspace.sh. Συγκεκριμένα, μέσα στο script θα πρέπει να αλλάξεις τη γραμμή 14:
από cp pkgs/{apps,kernels}/*/inst/amd64-linux.gcc-serial/bin/* ${WORKSPACE_DIR}/executables/
σε cp pkgs/{apps,kernels}/*/inst/i686-linux.gcc-serial/bin/* ${WORKSPACE_DIR}/executables/
ώστε να πάει στους σωστούς φακέλους και να πάρει τα εκτελέσιμα.
Επίσης, όπως σωστά αναφέρεις η εντολή: export LD_LIBRARY_PATH=~/parsec-3.0/pkgs/libs/hooks/inst/amd64-linux.gcc-serial/lib
σε 32-bit μηχάνημα πρέπει να γίνει: export LD_LIBRARY_PATH=~/parsec-3.0/pkgs/libs/hooks/inst/i686-linux.gcc-serial/lib
Θυμήσου να κάνεις την ίδια αλλαγή και στο run_l1.sh που δίνεται στον βοηθητικό κώδικα.
Όσον αφορά την μεταγλώττιση του cslab_cache.cpp, δίνοντας "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-intel64/cslab_cache.so*" έλαβα
*make: *** No rule to make target `obj-intel64/cslab_cache.so'. Stop.*
Αντιλαμβανόμενος (νομίζω...) τι συνέβαινε δημιούργησα φάκελο με την ονομασία "obj-ia32" μέσα στον φάκελο "pintool" και εκτέλεσα ξανά την εντολή παραλλαγμένη ως "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so*"
Η μεταγλώττιση φαίνεται πως πέτυχε και στον φάκελο "*obj-ia32*" δημιουργήθηκαν τα αρχεία *cslab_cache.o* και *cslab_cache.so*. Στο terminal έλαβα
Πολύ σωστά έπραξες εδώ. Για να μεταγλωττιστεί το cslab_cache.so για 32-bit αρχιτεκτονική θα πρέπει να φτιάξετε έναν φάκελο obj-ia32 και να δώσετε
PIN_ROOT=/path/to/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so
*g++ -DBIGARRAY_MULTIPLIER=1 -Wall -Werror -Wno-unknown-pragmas -fno-stack-protector -DTARGET_IA32 -DHOST_IA32 -DTARGET_LINUX -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -O3 -fomit-frame-pointer -fno-strict-aliasing -c -o obj-ia32/cslab_cache.o cslab_cache.cppg++ -shared -Wl,--hash-style=sysv -Wl,-Bsymbolic -Wl,--version-script=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/pintool.ver -o obj-ia32/cslab_cache.so obj-ia32/cslab_cache.o -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib-ext -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/runtime/glibc -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/lib -lpin -lxed -lpindwarf -ldl*
Προσπαθώντας πλέον να χρησιμοποιήσω το cslab_cache pintool με την εντολή "*/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/pin.sh -t /home/giannis/advcomparch-2015-16-ex1-helpcode/pintool/obj-ia32/cslab_cache.so -o my_output.out -L1c 64 -L1a 8 -L1b 64 -L2c 256 -L2a 8 -L2b 64 -- /home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes 1 /home/giannis/parsec-3.0/parsec_workspace/inputs/in_64K.txt prices.txt*"
έλαβα
*E: Attach to pid 4209 failed. E: The Operating System configuration prevents Pin from using the default (parent) injection mode.E: To resolve this, either execute the following (as root):E: $ echo 0 > /proc/sys/kernel/yama/ptrace_scopeE: Or use the "-injection child" option.E: For more information, regarding child injection, see Injection section in the Pin User Manual.E: Killed*
Προσθέτοντας την παράμετρο "*-injection child*" και εκτελώντας ξανά την προηγούμενη εντολή έλαβα:
*/home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes : No such file or directory*
Γενικώς ο φάκελος executables είναι άδειος οπότε φαντάζομαι πως δεν έχουν δημιουργηθεί τα απαιτούμενα εκτελέσιμα.
Νομίζω πως έχοντας ακολουθήσει τα βήματα που σου προτείνω παραπάνω πλέον δεν πρέπει να έχεις αυτά τα προβήματα(;)
Τι έχει συμβεί και πως το ξεπερνάω; Έχει σχέση με τις βιβλιοθήκες που δεν εγκαταστάθηκαν ή με την δημιουργία των packages; Μήπως αφού έχω παλαιότερο σύστημα έπρεπε να χρησιμοποιήσω κάποια παλαιότερη έκδοση του PIN και όχι την 71313;
Γενικώς οποιαδήποτε βοήθεια προς εμάς που έχουμε 32-bit μηχανήματα ή/και παλαιότερη έκδοση Linux θα ήταν ιδιαίτερα ευπρόσδεκτη!
Σας ευχαριστώ - με εκτίμηση,
Γιάννης Χορτομάνης _______________________________________________ Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
Καλή συνέχεια, Δημήτρης
Να ενημερώσω πως ακολουθώντας τα προτεινόμενα βήματα η εγκατάσταση ολοκληρώθηκε ομαλά (χρειάστηκε όμως να εγκαταστήσω και τα επιπλέον πακέτα libxtst-dev και xorg-dev).
Ευχαριστώ πολύ για την άμεση βοήθεια κύριε Σιακαβάρα!
Με εκτίμηση,
Γιάννης Χορτομάνης
Στις 21 Μαρτίου 2016 - 11:42 μ.μ., ο χρήστης Dimitrios Siakavaras < jimsiak@cslab.ece.ntua.gr> έγραψε:
Καλησπέρα Γιάννη,
Καλησπέρα σας,
Κατ' αρχήν να επισημάνω πως έχω σχετικά παλιό υπολογιστή (διπύρηνο αλλά των *32 bit*).
Επίσης για λόγους που έχουν να κάνουν με δουλειά έχω μείνει εσκεμμένα στην έκδοση *11.04 (natty)* του Ubuntu με έκδοση πυρήνα *2.6.38-16-generic* και δεν έχω μεταβεί σε κάποια νεότερη.
Αυτά τα χαρακτηριστικά είναι λογικά η πηγή των δεινών μου...
Ναι, αυτή είναι η πηγή των δεινών σου αλλά ας τα πάρουμε με τη σειρά :)
Κατ' αρχήν η εγκατάσταση του PIN ολοκληρώθηκε κανονικά (για να το επιβεβαιώσω χρειάστηκε να εκτελέσω το pin με το παράδειγμα παραλλαγμένο ως "*./pin.sh -injection child -t ./source/tools/ManualExamples/obj-ia32/inscount0.so -o ls.inscount0.output -- /bin/ls -aF*").
Μιά χαρά ως εδώ, το PIN εκτελείται χωρίς πρόβλημα και σε 32-bit αρχιτεκτονικές. Το μόνο που αλλάζει όπως φαίνεται και από το παράδειγμά που δίνεις είναι το όνομα του φακέλου στον οποίο μεταγλωττίζονται τα pintools. Σε 32-bit cpu είναι obj-ia32 αντί για obj-intel64 που είναι σε 64-bit cpu.
Κατόπιν, με την εκτέλεση της εντολής "*sudo apt-get update*" έλαβα κάποια αποτελέσματα του στιλ:
*Err http://gr.archive.ubuntu.com http://gr.archive.ubuntu.com natty/main Sources 404 Not FoundErr http://security.ubuntu.com http://security.ubuntu.com natty-security/restricted Sources 404 Not Found [IP: 2001:67c:1560:8001::11 80]W: Failed to fetch
http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease
<
http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease
κλπ.
Προχωρώντας στην επόμενη εντολή " *sudo apt-get install make g++ libx11-dev libxext-dev libxaw7 \x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev*"
μετά από κάποιες σωστές εγκαταστάσεις έλαβα τις παρακάτω επισημάνσεις:
*You might want to run 'apt-get -f install' to correct these:The following packages have unmet dependencies: libglu1-mesa-dev : Depends: libgl1-mesa-dev but it is not going to be installed or libgl-dev libxi-dev : Depends: xorg-sgml-doctools (>= 1:1.5) but it is not going to be installed virtualbox-4.1 : Depends: libqt4-network (>= 4:4.5.3) but it is not going to be installed Depends: libqt4-opengl (>= 4:4.7.0~rc1) but it is not going to be installed Depends: libqtcore4 (>= 4:4.7.0~beta1) but it is not going to be installed Depends: libqtgui4 (>= 4:4.7.0~beta1) but it is not going to be installed Recommends: libsdl-ttf2.0-0 but it is not going to be installedE: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).*
Να σημειώσω ότι παρόμοιες απαντήσεις είχα λάβει και με την εντολή της αρχικής εκφώνησης της άσκησης όπου κάποιες βιβλιοθήκες ήταν διαφορετικές.
Μετά την σχετική προτροπή εκτέλεσα την εντολή "*apt-get -f install*" οπότε έλαβα:
*E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?*
Εκτελώντας την ξανά σαν root (μετά από *sudo su*) έλαβα παρόμοιες απαντήσεις με νωρίτερα:
*WARNING: The following packages cannot be authenticated! libqtcore4 libqt4-xml libqt4-dbus libqt4-network libqtgui4 libqt4-opengl libdbusmenu-qt2 appmenu-qtInstall these packages without verification [y/N]? yErr http://gr.archive.ubuntu.com/ubuntu/ http://gr.archive.ubuntu.com/ubuntu/ natty-updates/main libqtcore4
i386
4:4.7.2-0ubuntu6.4 404 Not FoundErr http://gr.archive.ubuntu.com/ubuntu/ http://gr.archive.ubuntu.com/ubuntu/ natty/main libdbusmenu-qt2 i386 0.8.2-0ubuntu2 404 Not FoundFailed to fetch
http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubun...
<
http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubun...
404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch
http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubun...
<
http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubun...
404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch
http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubu...
<
http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubu...
404 Not Found [IP: 2001:67c:1562::15 80]* κλπ (δεν αντιγράφω όλο το κατεβατό).
Εδώ το πρόβλημα έχει να κάνει με το ότι το natty ubuntu είναι τόσο παλιό που έχουν μεταφερθεί όλα τα repositories του. Δες και το παρακάτω thread από τα ubuntu forums: http://ubuntuforums.org/showthread.php?t=2150989
Σε 32-bit VM με natty ubuntu κατάφερα να εγκαταστήσω όλα τα απαιτούμενα πακέτα αλλάζοντας στο αρχείο /etc/apt/sources.list όλα τα entries 'http://gr.archive.ubuntu.com/ubuntu/' σε 'http://old-releases.ubuntu.com/ubuntu/'
Ευχόμενος να μπορώ να προχωρήσω παρ' όλα αυτά, εκτέλεσα την "*./bin/parsecmgmt -a build -c gcc-serial -p blackscholes bodytrack canneal facesim ferret fluidanimate freqmine raytrace swaptions streamcluster*" όπου το αρχικό build των packages φαινόταν να ολοκληρώνεται κανονικά αλλά στο τέλος έλαβα
*checking pkg-config files for X11 are available... yeschecking for XLIBGL... yeschecking for GLW... yeschecking for GLUT... configure: error: Package requirements (x11 xmu xi) were not met:No package 'xi' foundConsider adjusting the PKG_CONFIG_PATH environment variable if youinstalled software in a non-standard prefix.Alternatively, you may set the environment variables GLUT_CFLAGSand GLUT_LIBS to avoid the need to call pkg-config.See the pkg-config man page for more details.[PARSEC] Error: 'env ./configure --with-driver=xlib --enable-glut --enable-static --disable-shared
--prefix=/home/giannis/parsec-3.0/pkgs/libs/mesa/inst/i686-linux.gcc-serial'
failed.*
Αυτό σημαίνει πως λείπουν κάποια πακέτα, προφανώς κάποια που δεν βρέθηκαν κατά το 'apt-get install ...'. Για ξαναδοκίμασε να κάνεις build έχοντας επιτυχώς εγκαταστήσει όλα τα απαιτούμενα πακέτα.
Τα επόμενα βήματα σχετικά με το "*cslab_create_parsec_workspace.sh*" κύλισαν κανονικά (δημιουργήθηκε ο φάκελος parsec_workspace με τα εκτελέσιμα και με την εκτέλεση της εντολής "*cat cmds_simlarge.txt*" έλαβα τα αποτελέσματα που αναγράφονται και στην εκφώνηση).
Κατόπιν όρισα την μεταβλητή περιβάλλοντος LD_LIBRARY_PATH με την τροποποίηση "*i686-linux.gcc-serial*" καθώς είδα ότι υπήρχε αυτός ο φάκελος αντί του "*amd64-linux.gcc*" όπου και φαίνεται πως έγινε κανονικά.
Εδώ χρειάζεται να κάνεις μία αλλαγή στο script cslab_create_parsec_workspace.sh. Συγκεκριμένα, μέσα στο script θα πρέπει να αλλάξεις τη γραμμή 14:
από cp pkgs/{apps,kernels}/*/inst/amd64-linux.gcc-serial/bin/* ${WORKSPACE_DIR}/executables/
σε cp pkgs/{apps,kernels}/*/inst/i686-linux.gcc-serial/bin/* ${WORKSPACE_DIR}/executables/
ώστε να πάει στους σωστούς φακέλους και να πάρει τα εκτελέσιμα.
Επίσης, όπως σωστά αναφέρεις η εντολή: export
LD_LIBRARY_PATH=~/parsec-3.0/pkgs/libs/hooks/inst/amd64-linux.gcc-serial/lib
σε 32-bit μηχάνημα πρέπει να γίνει: export LD_LIBRARY_PATH=~/parsec-3.0/pkgs/libs/hooks/inst/i686-linux.gcc-serial/lib
Θυμήσου να κάνεις την ίδια αλλαγή και στο run_l1.sh που δίνεται στον βοηθητικό κώδικα.
Όσον αφορά την μεταγλώττιση του cslab_cache.cpp, δίνοντας "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-intel64/cslab_cache.so*" έλαβα
*make: *** No rule to make target `obj-intel64/cslab_cache.so'. Stop.*
Αντιλαμβανόμενος (νομίζω...) τι συνέβαινε δημιούργησα φάκελο με την ονομασία "obj-ia32" μέσα στον φάκελο "pintool" και εκτέλεσα ξανά την εντολή παραλλαγμένη ως "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so*"
Η μεταγλώττιση φαίνεται πως πέτυχε και στον φάκελο "*obj-ia32*" δημιουργήθηκαν τα αρχεία *cslab_cache.o* και *cslab_cache.so*. Στο terminal έλαβα
Πολύ σωστά έπραξες εδώ. Για να μεταγλωττιστεί το cslab_cache.so για 32-bit αρχιτεκτονική θα πρέπει να φτιάξετε έναν φάκελο obj-ia32 και να δώσετε
PIN_ROOT=/path/to/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so
*g++ -DBIGARRAY_MULTIPLIER=1 -Wall -Werror -Wno-unknown-pragmas -fno-stack-protector -DTARGET_IA32 -DHOST_IA32 -DTARGET_LINUX -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -O3 -fomit-frame-pointer -fno-strict-aliasing -c -o obj-ia32/cslab_cache.o cslab_cache.cppg++ -shared -Wl,--hash-style=sysv -Wl,-Bsymbolic
-Wl,--version-script=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/pintool.ver
-o obj-ia32/cslab_cache.so obj-ia32/cslab_cache.o -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib-ext -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/runtime/glibc -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/lib -lpin -lxed -lpindwarf -ldl*
Προσπαθώντας πλέον να χρησιμοποιήσω το cslab_cache pintool με την εντολή "*/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/pin.sh -t
/home/giannis/advcomparch-2015-16-ex1-helpcode/pintool/obj-ia32/cslab_cache.so
-o my_output.out -L1c 64 -L1a 8 -L1b 64 -L2c 256 -L2a 8 -L2b 64 -- /home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes 1 /home/giannis/parsec-3.0/parsec_workspace/inputs/in_64K.txt prices.txt*"
έλαβα
*E: Attach to pid 4209 failed. E: The Operating System configuration prevents Pin from using the default (parent) injection mode.E: To resolve this, either execute the following (as root):E: $ echo 0 > /proc/sys/kernel/yama/ptrace_scopeE: Or use the "-injection child" option.E: For more information, regarding child injection, see Injection section in the Pin User Manual.E: Killed*
Προσθέτοντας την παράμετρο "*-injection child*" και εκτελώντας ξανά την προηγούμενη εντολή έλαβα:
*/home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes : No such file or directory*
Γενικώς ο φάκελος executables είναι άδειος οπότε φαντάζομαι πως δεν έχουν δημιουργηθεί τα απαιτούμενα εκτελέσιμα.
Νομίζω πως έχοντας ακολουθήσει τα βήματα που σου προτείνω παραπάνω πλέον δεν πρέπει να έχεις αυτά τα προβήματα(;)
Τι έχει συμβεί και πως το ξεπερνάω; Έχει σχέση με τις βιβλιοθήκες που δεν εγκαταστάθηκαν ή με την δημιουργία των packages; Μήπως αφού έχω παλαιότερο σύστημα έπρεπε να χρησιμοποιήσω κάποια παλαιότερη έκδοση του PIN και όχι την 71313;
Γενικώς οποιαδήποτε βοήθεια προς εμάς που έχουμε 32-bit μηχανήματα ή/και παλαιότερη έκδοση Linux θα ήταν ιδιαίτερα ευπρόσδεκτη!
Σας ευχαριστώ - με εκτίμηση,
Γιάννης Χορτομάνης _______________________________________________ Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
Καλή συνέχεια, Δημήτρης
advcomparch@lists.cslab.ece.ntua.gr