Καλησπέρα σας,
Έχοντας φτάσει μέχρι το 5ο βήμα της εκφώνησης, έχω εκτελέσει την εντολή του παραδείγματος χρήσης του simulator pintool
/home/giannis/Λήψεις/pin-3.2-81205-gcc-linux/pin -t /home/giannis/Λήψεις/advcomparch-2016-17-ex1-helpcode/pintool/obj-intel64/simulator.so -o my_output.out -L1c 64 -L1a 8 -L1b 64 -L2c 256 -L2a 8 -L2b 64 -TLBe 64 -TLBa 4 -TLBp 4096 -- /home/giannis/Λήψεις/parsec-3.0/parsec_workspace/executables/blackscholes 1 /home/giannis/Λήψεις/parsec-3.0/parsec_workspace/inputs/in_64K.txt
και μου εμφανίζει το παρακάτω αποτέλεσμα το σε αρχείο εξόδου, και το οποίο μου φαίνεται φυσιολογικό.
-------- Total Statistics -------- Total Instructions: 0 Total Cycles: 0 IPC: nan
-------- Single level Tlb hierarchy -------- Data Tlb: Entries: 64 Page Size(B): 4096 Associativity: 4
Latencies: 0 50 Tlb-Sets: 16 - LRU - assoc: 4
Tlb Stats: Tlb-Load-Hits: 0 nan% Tlb-Load-Misses: 0 nan% Tlb-Load-Accesses: 0 nan%
Tlb-Store-Hits: 0 nan% Tlb-Store-Misses: 0 nan% Tlb-Store-Accesses: 0 nan%
Tlb-Total-Hits: 0 nan% Tlb-Total-Misses: 0 nan% Tlb-Total-Accesses: 0 nan%
-------- Two level Cache hierarchy -------- L1-Data Cache: Size(KB): 64 Block Size(B): 64 Associativity: 8
L2-Data Cache: Size(KB): 256 Block Size(B): 64 Associativity: 8
Latencies: 1 10 150 L1-Sets: 128 - LRU - assoc: 8 L2-Sets: 512 - LRU - assoc: 8 Store_allocation: Yes L2_inclusive: Yes L2_prefetching: No
L1 Cache Stats: L1-Load-Hits: 0 nan% L1-Load-Misses: 0 nan% L1-Load-Accesses: 0 nan%
L1-Store-Hits: 0 nan% L1-Store-Misses: 0 nan% L1-Store-Accesses: 0 nan%
L1-Total-Hits: 0 nan% L1-Total-Misses: 0 nan% L1-Total-Accesses: 0 nan%
L2 Cache Stats: L2-Load-Hits: 0 nan% L2-Load-Misses: 0 nan% L2-Load-Accesses: 0 nan%
L2-Store-Hits: 0 nan% L2-Store-Misses: 0 nan% L2-Store-Accesses: 0 nan%
L2-Total-Hits: 0 nan% L2-Total-Misses: 0 nan% L2-Total-Accesses: 0 nan%
Στην συνέχεια, υποθέτω ότι η παραπάνω εντολή εκτέλεσης αντικαθιστάται από την run_l1.sh ή την run_l2.sh αντίστοιχα για τις L1 και L2 αντίστοιχα. Για την run_l2.sh για παράδειγμα, την έχω συμπληρώσει ώς εξής
:#!/bin/bash
## Modify the following paths appropriately PARSEC_PATH=/home/giannis/Λήψεις/parsec-3.0 PIN_EXE=/home/giannis/Λήψεις/pin-3.2-81205-gcc-linux/pin PIN_TOOL=/home/giannis/Λήψεις/advcomparch-2016-17-ex1-helpcode/pintool/obj-intel64/simulator.so
CMDS_FILE=./cmds_simlarge.txt outDir="./outputs/"
export LD_LIBRARY_PATH=$PARSEC_PATH/pkgs/libs/hooks/inst/amd64-linux.gcc-serial/lib/
## Triples of <cache_size>_<associativity>_<block_size> CONFS="16_4_64 32_4_64"
L1size=32 L1assoc=8 L1bsize=64 TLBe=64 TLBp=4096 TLBa=4 L1prf=0
for BENCH in $@; do cmd=$(cat ${CMDS_FILE} | grep "$BENCH") for conf in $CONFS; do ## Get parameters L2size=$(echo $conf | cut -d'_' -256) L2assoc=$(echo $conf | cut -d'_' -4) L2bsize=$(echo $conf | cut -d'_' -128)
outFile=$(printf "%s.dcache_cslab.L2_%04d_%02d_%03d.out" $BENCH ${L2size} ${L2assoc} ${L2bsize}) outFile="$outDir/$outFile"
pin_cmd="$PIN_EXE -t $PIN_TOOL -o $outFile -L1c ${L1size} -L1a ${L1assoc} -L1b ${L1bsize} -L2c ${L2size} -L2a ${L2assoc} -L2b ${L2bsize} -TLBe ${TLBe} -TLBp ${TLBp} -TLBa ${TLBa} -L2prf ${L2prf} -- $cmd" time $pin_cmd done done
Και η εντολή που πληκτρολογώ είναι η
./run_l2.sh ./executables/blackscholes 1 inputs/in_64K.txt prices.txt
Αν μπορείτε να μου πείτε για το πόσο λάθος είναι η διαδικασία, και για το αν χρειάζεται κάτι άλλο που δεν έχω καταλάβει. Ευχαριστώ.
advcomparch@lists.cslab.ece.ntua.gr