After patching linux perf. This script collects creates a coverage file (e.g., for linpack) which can be used for fdo.
gcov=linpack-x86.gcov MAKE='make' # x86 x86() { CC=/usr/bin/gcc CXX=/usr/bin/g++ export CFLAGS="-Ofast -g3 -static" export CPPFLAGS=$CFLAGS $MAKE -C $SRC/SingleSource/Benchmarks/Linpack clean $MAKE -C $SRC/SingleSource/Benchmarks/Linpack -k TEST=simple TARGET_LLVMGCC=$CC TARGET_CXX=$CXX LLI_OPTFLAGS= TARGET_CC=$CC TARGET_LLVMGXX=$CXX CC_UNDER_TEST_IS_GCC=1 TARGET_FLAGS= USE_REFERENCE_OUTPUT=1 CC_UNDER_TEST_TARGET_IS_AARCH64=1 OPTFLAGS= LLC_OPTFLAGS= ENABLE_OPTIMIZED=1 ARCH=x86_64 ENABLE_HASHED_PROGRAM_OUTPUT=1 DISABLE_JIT=1 perfdata=autofdo-linpack/perf-x86.data perf record -b -e branch-instructions -o $perfdata $SRC/SingleSource/Benchmarks/Linpack/Output/linpack-pc.simple autofdo/usr/bin/create_gcov --binary=$SRC/SingleSource/Benchmarks/Linpack/Output/linpack-pc.simple --profile=$perfdata --gcov=$gcov } hth, -Aditya ---------------------------------------- > From: a...@firstfloor.org > To: i.palac...@samsung.com > CC: dnovi...@google.com; gcc@gcc.gnu.org; davi...@google.com; hubi...@ucw.cz; > seb...@gmail.com; de...@google.com; v.bari...@samsung.com > Subject: Re: AutoFDO profile toolchain is open-sourced > Date: Tue, 21 Apr 2015 07:25:10 -0700 > > Ilya Palachev <i.palac...@samsung.com> writes: >> >> But why create_gcov does not inform about that (no branch events were >> found)? It creates empty gcov file and says nothing :( >> >> Moreover, in the mentioned README it is said that perf should also be >> executed with option -e BR_INST_RETIRED:TAKEN. > > Standard perf doesn't have a full event list > This assumes a perf patched with the libpfm patch. > > Also I suspect it really wants to use PEBS events, so pp should be added. > > Alternatively you can use ocperf (from > http://github.com/andikleen/pmu-tools) which is just a wrapper: > > ocperf.py record -e br_inst_retired.near_taken:pp -b ... > > or specify the event manually (depending on your CPU, like) > > perf record -e > cpu/event=0xc4,umask=0x20,name=br_inst_retired_near_taken,period=400009/pp > -b ... > > BTW the biggest problem with autofdo currently is that it is > quite bitrotten and supports only several years old perf. > So all of this above will only work with old distributions, > unless you compile an old perf utility first. > > -Andi > > -- > a...@linux.intel.com -- Speaking for myself only