This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: AutoFDO profile toolchain is open-sourced


We also needed to adjust the gcov_version in autofdo/gcov.cc to read
0x1 for dev branches of gcc (instead of the current 0x3430372a for
some released version of GCC):

-DEFINE_uint64(gcov_version, 0x3430372a,
+DEFINE_uint64(gcov_version, 0x1,

Sebastian

On Tue, Apr 21, 2015 at 3:33 PM, Aditya K <hiraditya@msn.com> wrote:
> 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: andi@firstfloor.org
>> To: i.palachev@samsung.com
>> CC: dnovillo@google.com; gcc@gcc.gnu.org; davidxl@google.com; hubicka@ucw.cz; sebpop@gmail.com; dehao@google.com; v.barinov@samsung.com
>> Subject: Re: AutoFDO profile toolchain is open-sourced
>> Date: Tue, 21 Apr 2015 07:25:10 -0700
>>
>> Ilya Palachev <i.palachev@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
>>
>> --
>> ak@linux.intel.com -- Speaking for myself only
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]