From 911f57ed5dca1f32870896afa6b397364e1e20f4 Mon Sep 17 00:00:00 2001 From: clac <clac16@inf.ufpr.br> Date: Tue, 15 Apr 2025 01:42:08 -0300 Subject: [PATCH] Texto mais longo --- .../completo/comparacao-compiladores-x86.bbl | 245 ++ .../completo/comparacao-compiladores-x86.bcf | 2392 +++++++++++++++++ .../completo/comparacao-compiladores-x86.bib | 35 + .../completo/comparacao-compiladores-x86.blg | 15 + .../completo/comparacao-compiladores-x86.tex | 528 ++++ 5 files changed, 3215 insertions(+) create mode 100644 texto/completo/comparacao-compiladores-x86.bbl create mode 100644 texto/completo/comparacao-compiladores-x86.bcf create mode 100644 texto/completo/comparacao-compiladores-x86.bib create mode 100644 texto/completo/comparacao-compiladores-x86.blg create mode 100644 texto/completo/comparacao-compiladores-x86.tex diff --git a/texto/completo/comparacao-compiladores-x86.bbl b/texto/completo/comparacao-compiladores-x86.bbl new file mode 100644 index 0000000..3a53d35 --- /dev/null +++ b/texto/completo/comparacao-compiladores-x86.bbl @@ -0,0 +1,245 @@ +% $ biblatex auxiliary file $ +% $ biblatex bbl format version 3.1 $ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber as required. +% +\begingroup +\makeatletter +\@ifundefined{ver@biblatex.sty} + {\@latex@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \aftergroup\endinput} + {} +\endgroup + + +\refsection{0} + \datalist[entry]{nyt/global//global/global} + \entry{che2009rodinia}{inproceedings}{} + \name{author}{7}{}{% + {{un=0,uniquepart=base,hash=5f1a24ad070c5277dbfd9b81ca36d9b8}{% + family={Che}, + familyi={C\bibinitperiod}, + given={Shuai}, + giveni={S\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=b4c47ac4ad095c6f39adfbd9993e768a}{% + family={Boyer}, + familyi={B\bibinitperiod}, + given={Michael}, + giveni={M\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=fe2fe2592080c4df993aef0cc83fd3c5}{% + family={Meng}, + familyi={M\bibinitperiod}, + given={Jiayuan}, + giveni={J\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=f7aca205f8bfdd4460bc270a00089def}{% + family={Tarjan}, + familyi={T\bibinitperiod}, + given={David}, + giveni={D\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=0f5844a258a964c849fec00f42aaa764}{% + family={Sheaffer}, + familyi={S\bibinitperiod}, + given={Jeremy\bibnamedelima W}, + giveni={J\bibinitperiod\bibinitdelim W\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=25ec81dfbc525a6e0c473f6fee2d3bcd}{% + family={Lee}, + familyi={L\bibinitperiod}, + given={Sang-Ha}, + giveni={S\bibinithyphendelim H\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=892a3e33d25b9ce399f8972f67cf93a6}{% + family={Skadron}, + familyi={S\bibinitperiod}, + given={Kevin}, + giveni={K\bibinitperiod}, + givenun=0}}% + } + \list{organization}{1}{% + {Ieee}% + } + \strng{namehash}{50d4c677fffb489c801423c72194456e} + \strng{fullhash}{497d001edfde52414e28b7299df44bbd} + \strng{bibnamehash}{50d4c677fffb489c801423c72194456e} + \strng{authorbibnamehash}{50d4c677fffb489c801423c72194456e} + \strng{authornamehash}{50d4c677fffb489c801423c72194456e} + \strng{authorfullhash}{497d001edfde52414e28b7299df44bbd} + \field{sortinit}{C} + \field{sortinithash}{4c244ceae61406cdc0cc2ce1cb1ff703} + \field{extradatescope}{labelyear} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{2009 IEEE international symposium on workload characterization (IISWC)} + \field{title}{Rodinia: A benchmark suite for heterogeneous computing} + \field{year}{2009} + \field{pages}{44\bibrangedash 54} + \range{pages}{11} + \endentry + \entry{davis2021performance}{inproceedings}{} + \name{author}{6}{}{% + {{un=0,uniquepart=base,hash=cfa60e2432e83119bd4fe48574e1e8b2}{% + family={Davis}, + familyi={D\bibinitperiod}, + given={Joshua\bibnamedelima Hoke}, + giveni={J\bibinitperiod\bibinitdelim H\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=17a848571a05d3051faa19c088f63a20}{% + family={Daley}, + familyi={D\bibinitperiod}, + given={Christopher}, + giveni={C\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=9652e1fdad4715b65558db66fec53801}{% + family={Pophale}, + familyi={P\bibinitperiod}, + given={Swaroop}, + giveni={S\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=5fcf29051ac2df95c4217fd3c0d12156}{% + family={Huber}, + familyi={H\bibinitperiod}, + given={Thomas}, + giveni={T\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=efae532f5f0fe654cd42ef2e9665e58d}{% + family={Chandrasekaran}, + familyi={C\bibinitperiod}, + given={Sunita}, + giveni={S\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=4763a976f92d9dd2b741bbb4def90521}{% + family={Wright}, + familyi={W\bibinitperiod}, + given={Nicholas\bibnamedelima J}, + giveni={N\bibinitperiod\bibinitdelim J\bibinitperiod}, + givenun=0}}% + } + \list{organization}{1}{% + {Springer}% + } + \strng{namehash}{69ac9abadd60cc35fde2f1841d8f6082} + \strng{fullhash}{c34aeca0dde57d88701d89377b9dffb4} + \strng{bibnamehash}{69ac9abadd60cc35fde2f1841d8f6082} + \strng{authorbibnamehash}{69ac9abadd60cc35fde2f1841d8f6082} + \strng{authornamehash}{69ac9abadd60cc35fde2f1841d8f6082} + \strng{authorfullhash}{c34aeca0dde57d88701d89377b9dffb4} + \field{sortinit}{D} + \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradatescope}{labelyear} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{Accelerator Programming Using Directives: 7th International Workshop, WACCPD 2020, Virtual Event, November 20, 2020, Proceedings 7} + \field{title}{Performance assessment of OpenMP compilers targeting NVIDIA V100 GPUs} + \field{year}{2021} + \field{pages}{25\bibrangedash 44} + \range{pages}{20} + \endentry + \entry{halbiniak2022performance}{article}{} + \name{author}{6}{}{% + {{un=0,uniquepart=base,hash=8ff743e974be8aa661c77dc35fa02b47}{% + family={Halbiniak}, + familyi={H\bibinitperiod}, + given={Kamil}, + giveni={K\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=de8f7c87bd9ed0ae83267411335030bd}{% + family={Wyrzykowski}, + familyi={W\bibinitperiod}, + given={Roman}, + giveni={R\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=e9b8429ed7558750ac9618235ed83d6b}{% + family={Szustak}, + familyi={S\bibinitperiod}, + given={Lukasz}, + giveni={L\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=78d092caf6a9a02439ec6372ec959d9d}{% + family={Kulawik}, + familyi={K\bibinitperiod}, + given={Adam}, + giveni={A\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=51f48d98a3f9a02f3ce2030dc5b36de8}{% + family={Meyer}, + familyi={M\bibinitperiod}, + given={Norbert}, + giveni={N\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=3a619f998339b97af17744b5760acce8}{% + family={Gepner}, + familyi={G\bibinitperiod}, + given={Pawel}, + giveni={P\bibinitperiod}, + givenun=0}}% + } + \list{publisher}{1}{% + {Elsevier}% + } + \strng{namehash}{989028bf32c78f2b28e51d373d358578} + \strng{fullhash}{c02cda4bfee09156a6f1f0035d485ef1} + \strng{bibnamehash}{989028bf32c78f2b28e51d373d358578} + \strng{authorbibnamehash}{989028bf32c78f2b28e51d373d358578} + \strng{authornamehash}{989028bf32c78f2b28e51d373d358578} + \strng{authorfullhash}{c02cda4bfee09156a6f1f0035d485ef1} + \field{sortinit}{H} + \field{sortinithash}{6db6145dae8dc9e1271a8d556090b50a} + \field{extradatescope}{labelyear} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{journaltitle}{Advances in Engineering Software} + \field{title}{Performance exploration of various C/C++ compilers for AMD EPYC processors in numerical modeling of solidification} + \field{volume}{166} + \field{year}{2022} + \field{pages}{103078} + \range{pages}{1} + \endentry + \entry{kasliwal2017performance}{misc}{} + \name{author}{2}{}{% + {{un=0,uniquepart=base,hash=de054440c667e79494b8ccafc78adbd0}{% + family={Kasliwal}, + familyi={K\bibinitperiod}, + given={Vishal}, + giveni={V\bibinitperiod}, + givenun=0}}% + {{un=0,uniquepart=base,hash=a06bff5f5ad84f43ec2a7d5521120caf}{% + family={Vladimirov}, + familyi={V\bibinitperiod}, + given={Andrey}, + giveni={A\bibinitperiod}, + givenun=0}}% + } + \list{publisher}{1}{% + {Colfax International. Nov}% + } + \strng{namehash}{b3aa2cc376c2f7a1ac10b7cbf8ab7edb} + \strng{fullhash}{b3aa2cc376c2f7a1ac10b7cbf8ab7edb} + \strng{bibnamehash}{b3aa2cc376c2f7a1ac10b7cbf8ab7edb} + \strng{authorbibnamehash}{b3aa2cc376c2f7a1ac10b7cbf8ab7edb} + \strng{authornamehash}{b3aa2cc376c2f7a1ac10b7cbf8ab7edb} + \strng{authorfullhash}{b3aa2cc376c2f7a1ac10b7cbf8ab7edb} + \field{sortinit}{K} + \field{sortinithash}{d3edc18d54b9438a72c24c925bfb38f4} + \field{extradatescope}{labelyear} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{title}{A performance-based comparison of C/C++ compilers} + \field{year}{2017} + \endentry + \enddatalist +\endrefsection +\endinput + diff --git a/texto/completo/comparacao-compiladores-x86.bcf b/texto/completo/comparacao-compiladores-x86.bcf new file mode 100644 index 0000000..47c84af --- /dev/null +++ b/texto/completo/comparacao-compiladores-x86.bcf @@ -0,0 +1,2392 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bcf:controlfile version="3.7" bltxversion="3.16" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- BIBER OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>output_encoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>input_encoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minxrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- BIBLATEX OPTIONS --> + <!-- GLOBAL --> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeltitlespec</bcf:key> + <bcf:value order="1">shorttitle</bcf:value> + <bcf:value order="2">title</bcf:value> + <bcf:value order="3">maintitle</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitleyear</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeldateparts</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeldatespec</bcf:key> + <bcf:value order="1" type="field">date</bcf:value> + <bcf:value order="2" type="field">year</bcf:value> + <bcf:value order="3" type="field">eventdate</bcf:value> + <bcf:value order="4" type="field">origdate</bcf:value> + <bcf:value order="5" type="field">urldate</bcf:value> + <bcf:value order="6" type="string">nodate</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>julian</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>gregorianstart</bcf:key> + <bcf:value>1582-10-15</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxalphanames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxbibnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxcitenames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxsortnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minalphanames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minbibnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincitenames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minsortnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nohashothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>noroman</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nosortothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbib</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbiblist</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skiplab</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlocale</bcf:key> + <bcf:value>brazil</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortingtemplatename</bcf:key> + <bcf:value>nyt</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortsets</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquelist</bcf:key> + <bcf:value>true</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>full</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniqueprimaryauthor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquetitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquebaretitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquework</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useafterword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useannotator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usebookauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usecommentator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditora</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorc</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useforeword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useholder</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useintroduction</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamea</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenameb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamec</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshortauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshorteditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- online --> + <bcf:options component="biblatex" type="online"> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeltitlespec</bcf:key> + <bcf:value order="1">shorttitle</bcf:value> + <bcf:value order="2">title</bcf:value> + <bcf:value order="3">maintitle</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitleyear</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeldateparts</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeldatespec</bcf:key> + <bcf:value order="1" type="field">date</bcf:value> + <bcf:value order="2" type="field">year</bcf:value> + <bcf:value order="3" type="field">eventdate</bcf:value> + <bcf:value order="4" type="field">origdate</bcf:value> + <bcf:value order="5" type="field">urldate</bcf:value> + <bcf:value order="6" type="string">nodate</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxalphanames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxbibnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxcitenames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxsortnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minalphanames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minbibnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincitenames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minsortnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nohashothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>noroman</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nosortothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbib</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skiplab</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbiblist</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquelist</bcf:key> + <bcf:value>true</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>full</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniqueprimaryauthor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquetitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquebaretitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquework</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useafterword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useannotator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usebookauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usecommentator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditora</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorc</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useforeword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useholder</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useintroduction</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamea</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenameb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamec</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshortauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshorteditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- BIBLATEX OPTION SCOPE --> + <bcf:optionscope type="GLOBAL"> + <bcf:option datatype="xml">datamodel</bcf:option> + <bcf:option datatype="xml">labelalphanametemplate</bcf:option> + <bcf:option datatype="xml">labelalphatemplate</bcf:option> + <bcf:option datatype="xml">inheritance</bcf:option> + <bcf:option datatype="xml">translit</bcf:option> + <bcf:option datatype="xml">uniquenametemplate</bcf:option> + <bcf:option datatype="xml">sortingnamekeytemplate</bcf:option> + <bcf:option datatype="xml">sortingtemplate</bcf:option> + <bcf:option datatype="xml">extradatespec</bcf:option> + <bcf:option datatype="xml">labelnamespec</bcf:option> + <bcf:option datatype="xml">labeltitlespec</bcf:option> + <bcf:option datatype="xml">labeldatespec</bcf:option> + <bcf:option datatype="string">controlversion</bcf:option> + <bcf:option datatype="string">alphaothers</bcf:option> + <bcf:option datatype="string">sortalphaothers</bcf:option> + <bcf:option datatype="string">presort</bcf:option> + <bcf:option datatype="string">texencoding</bcf:option> + <bcf:option datatype="string">bibencoding</bcf:option> + <bcf:option datatype="string">sortingtemplatename</bcf:option> + <bcf:option datatype="string">sortlocale</bcf:option> + <bcf:option datatype="string">language</bcf:option> + <bcf:option datatype="string">autolang</bcf:option> + <bcf:option datatype="string">langhook</bcf:option> + <bcf:option datatype="string">indexing</bcf:option> + <bcf:option datatype="string">hyperref</bcf:option> + <bcf:option datatype="string">backrefsetstyle</bcf:option> + <bcf:option datatype="string">block</bcf:option> + <bcf:option datatype="string">pagetracker</bcf:option> + <bcf:option datatype="string">citecounter</bcf:option> + <bcf:option datatype="string">citetracker</bcf:option> + <bcf:option datatype="string">ibidtracker</bcf:option> + <bcf:option datatype="string">idemtracker</bcf:option> + <bcf:option datatype="string">opcittracker</bcf:option> + <bcf:option datatype="string">loccittracker</bcf:option> + <bcf:option datatype="string">labeldate</bcf:option> + <bcf:option datatype="string">labeltime</bcf:option> + <bcf:option datatype="string">dateera</bcf:option> + <bcf:option datatype="string">date</bcf:option> + <bcf:option datatype="string">time</bcf:option> + <bcf:option datatype="string">eventdate</bcf:option> + <bcf:option datatype="string">eventtime</bcf:option> + <bcf:option datatype="string">origdate</bcf:option> + <bcf:option datatype="string">origtime</bcf:option> + <bcf:option datatype="string">urldate</bcf:option> + <bcf:option datatype="string">urltime</bcf:option> + <bcf:option datatype="string">alldatesusetime</bcf:option> + <bcf:option datatype="string">alldates</bcf:option> + <bcf:option datatype="string">alltimes</bcf:option> + <bcf:option datatype="string">gregorianstart</bcf:option> + <bcf:option datatype="string">autocite</bcf:option> + <bcf:option datatype="string">notetype</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="string">refsection</bcf:option> + <bcf:option datatype="string">refsegment</bcf:option> + <bcf:option datatype="string">citereset</bcf:option> + <bcf:option datatype="string">sortlos</bcf:option> + <bcf:option datatype="string">babel</bcf:option> + <bcf:option datatype="string">datelabel</bcf:option> + <bcf:option datatype="string">backrefstyle</bcf:option> + <bcf:option datatype="string">arxiv</bcf:option> + <bcf:option datatype="boolean">familyinits</bcf:option> + <bcf:option datatype="boolean">giveninits</bcf:option> + <bcf:option datatype="boolean">prefixinits</bcf:option> + <bcf:option datatype="boolean">suffixinits</bcf:option> + <bcf:option datatype="boolean">useafterword</bcf:option> + <bcf:option datatype="boolean">useannotator</bcf:option> + <bcf:option datatype="boolean">useauthor</bcf:option> + <bcf:option datatype="boolean">usebookauthor</bcf:option> + <bcf:option datatype="boolean">usecommentator</bcf:option> + <bcf:option datatype="boolean">useeditor</bcf:option> + <bcf:option datatype="boolean">useeditora</bcf:option> + <bcf:option datatype="boolean">useeditorb</bcf:option> + <bcf:option datatype="boolean">useeditorc</bcf:option> + <bcf:option datatype="boolean">useforeword</bcf:option> + <bcf:option datatype="boolean">useholder</bcf:option> + <bcf:option datatype="boolean">useintroduction</bcf:option> + <bcf:option datatype="boolean">usenamea</bcf:option> + <bcf:option datatype="boolean">usenameb</bcf:option> + <bcf:option datatype="boolean">usenamec</bcf:option> + <bcf:option datatype="boolean">usetranslator</bcf:option> + <bcf:option datatype="boolean">useshortauthor</bcf:option> + <bcf:option datatype="boolean">useshorteditor</bcf:option> + <bcf:option datatype="boolean">debug</bcf:option> + <bcf:option datatype="boolean">loadfiles</bcf:option> + <bcf:option datatype="boolean">safeinputenc</bcf:option> + <bcf:option datatype="boolean">sortcase</bcf:option> + <bcf:option datatype="boolean">sortupper</bcf:option> + <bcf:option datatype="boolean">terseinits</bcf:option> + <bcf:option datatype="boolean">abbreviate</bcf:option> + <bcf:option datatype="boolean">dateabbrev</bcf:option> + <bcf:option datatype="boolean">clearlang</bcf:option> + <bcf:option datatype="boolean">sortcites</bcf:option> + <bcf:option datatype="boolean">sortsets</bcf:option> + <bcf:option datatype="boolean">backref</bcf:option> + <bcf:option datatype="boolean">backreffloats</bcf:option> + <bcf:option datatype="boolean">trackfloats</bcf:option> + <bcf:option datatype="boolean">parentracker</bcf:option> + <bcf:option datatype="boolean">labeldateusetime</bcf:option> + <bcf:option datatype="boolean">datecirca</bcf:option> + <bcf:option datatype="boolean">dateuncertain</bcf:option> + <bcf:option datatype="boolean">dateusetime</bcf:option> + <bcf:option datatype="boolean">eventdateusetime</bcf:option> + <bcf:option datatype="boolean">origdateusetime</bcf:option> + <bcf:option datatype="boolean">urldateusetime</bcf:option> + <bcf:option datatype="boolean">julian</bcf:option> + <bcf:option datatype="boolean">datezeros</bcf:option> + <bcf:option datatype="boolean">timezeros</bcf:option> + <bcf:option datatype="boolean">timezones</bcf:option> + <bcf:option datatype="boolean">seconds</bcf:option> + <bcf:option datatype="boolean">autopunct</bcf:option> + <bcf:option datatype="boolean">punctfont</bcf:option> + <bcf:option datatype="boolean">labelnumber</bcf:option> + <bcf:option datatype="boolean">labelalpha</bcf:option> + <bcf:option datatype="boolean">labeltitle</bcf:option> + <bcf:option datatype="boolean">labeltitleyear</bcf:option> + <bcf:option datatype="boolean">labeldateparts</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean">noroman</bcf:option> + <bcf:option datatype="boolean">singletitle</bcf:option> + <bcf:option datatype="boolean">uniquetitle</bcf:option> + <bcf:option datatype="boolean">uniquebaretitle</bcf:option> + <bcf:option datatype="boolean">uniquework</bcf:option> + <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> + <bcf:option datatype="boolean">defernumbers</bcf:option> + <bcf:option datatype="boolean">locallabelwidth</bcf:option> + <bcf:option datatype="boolean">bibwarn</bcf:option> + <bcf:option datatype="boolean">useprefix</bcf:option> + <bcf:option datatype="boolean">skipbib</bcf:option> + <bcf:option datatype="boolean">skipbiblist</bcf:option> + <bcf:option datatype="boolean">skiplab</bcf:option> + <bcf:option datatype="boolean">dataonly</bcf:option> + <bcf:option datatype="boolean">defernums</bcf:option> + <bcf:option datatype="boolean">firstinits</bcf:option> + <bcf:option datatype="boolean">sortfirstinits</bcf:option> + <bcf:option datatype="boolean">sortgiveninits</bcf:option> + <bcf:option datatype="boolean">labelyear</bcf:option> + <bcf:option datatype="boolean">isbn</bcf:option> + <bcf:option datatype="boolean">url</bcf:option> + <bcf:option datatype="boolean">doi</bcf:option> + <bcf:option datatype="boolean">eprint</bcf:option> + <bcf:option datatype="boolean">related</bcf:option> + <bcf:option datatype="boolean">dashed</bcf:option> + <bcf:option datatype="boolean">mergedate</bcf:option> + <bcf:option datatype="boolean">bibtexcaseprotection</bcf:option> + <bcf:option datatype="integer">mincrossrefs</bcf:option> + <bcf:option datatype="integer">minxrefs</bcf:option> + <bcf:option datatype="integer">maxnames</bcf:option> + <bcf:option datatype="integer">minnames</bcf:option> + <bcf:option datatype="integer">maxbibnames</bcf:option> + <bcf:option datatype="integer">minbibnames</bcf:option> + <bcf:option datatype="integer">maxcitenames</bcf:option> + <bcf:option datatype="integer">mincitenames</bcf:option> + <bcf:option datatype="integer">maxsortnames</bcf:option> + <bcf:option datatype="integer">minsortnames</bcf:option> + <bcf:option datatype="integer">maxitems</bcf:option> + <bcf:option datatype="integer">minitems</bcf:option> + <bcf:option datatype="integer">maxalphanames</bcf:option> + <bcf:option datatype="integer">minalphanames</bcf:option> + <bcf:option datatype="integer">maxparens</bcf:option> + <bcf:option datatype="integer">dateeraauto</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="ENTRYTYPE"> + <bcf:option datatype="string">alphaothers</bcf:option> + <bcf:option datatype="string">sortalphaothers</bcf:option> + <bcf:option datatype="string">presort</bcf:option> + <bcf:option datatype="string">indexing</bcf:option> + <bcf:option datatype="string">citetracker</bcf:option> + <bcf:option datatype="string">ibidtracker</bcf:option> + <bcf:option datatype="string">idemtracker</bcf:option> + <bcf:option datatype="string">opcittracker</bcf:option> + <bcf:option datatype="string">loccittracker</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean">familyinits</bcf:option> + <bcf:option datatype="boolean">giveninits</bcf:option> + <bcf:option datatype="boolean">prefixinits</bcf:option> + <bcf:option datatype="boolean">suffixinits</bcf:option> + <bcf:option datatype="boolean">useafterword</bcf:option> + <bcf:option datatype="boolean">useannotator</bcf:option> + <bcf:option datatype="boolean">useauthor</bcf:option> + <bcf:option datatype="boolean">usebookauthor</bcf:option> + <bcf:option datatype="boolean">usecommentator</bcf:option> + <bcf:option datatype="boolean">useeditor</bcf:option> + <bcf:option datatype="boolean">useeditora</bcf:option> + <bcf:option datatype="boolean">useeditorb</bcf:option> + <bcf:option datatype="boolean">useeditorc</bcf:option> + <bcf:option datatype="boolean">useforeword</bcf:option> + <bcf:option datatype="boolean">useholder</bcf:option> + <bcf:option datatype="boolean">useintroduction</bcf:option> + <bcf:option datatype="boolean">usenamea</bcf:option> + <bcf:option datatype="boolean">usenameb</bcf:option> + <bcf:option datatype="boolean">usenamec</bcf:option> + <bcf:option datatype="boolean">usetranslator</bcf:option> + <bcf:option datatype="boolean">useshortauthor</bcf:option> + <bcf:option datatype="boolean">useshorteditor</bcf:option> + <bcf:option datatype="boolean">terseinits</bcf:option> + <bcf:option datatype="boolean">abbreviate</bcf:option> + <bcf:option datatype="boolean">dateabbrev</bcf:option> + <bcf:option datatype="boolean">clearlang</bcf:option> + <bcf:option datatype="boolean">labelnumber</bcf:option> + <bcf:option datatype="boolean">labelalpha</bcf:option> + <bcf:option datatype="boolean">labeltitle</bcf:option> + <bcf:option datatype="boolean">labeltitleyear</bcf:option> + <bcf:option datatype="boolean">labeldateparts</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean">noroman</bcf:option> + <bcf:option datatype="boolean">singletitle</bcf:option> + <bcf:option datatype="boolean">uniquetitle</bcf:option> + <bcf:option datatype="boolean">uniquebaretitle</bcf:option> + <bcf:option datatype="boolean">uniquework</bcf:option> + <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> + <bcf:option datatype="boolean">useprefix</bcf:option> + <bcf:option datatype="boolean">skipbib</bcf:option> + <bcf:option datatype="boolean">skipbiblist</bcf:option> + <bcf:option datatype="boolean">skiplab</bcf:option> + <bcf:option datatype="boolean">dataonly</bcf:option> + <bcf:option datatype="boolean">skiplos</bcf:option> + <bcf:option datatype="boolean">labelyear</bcf:option> + <bcf:option datatype="boolean">isbn</bcf:option> + <bcf:option datatype="boolean">url</bcf:option> + <bcf:option datatype="boolean">doi</bcf:option> + <bcf:option datatype="boolean">eprint</bcf:option> + <bcf:option datatype="boolean">related</bcf:option> + <bcf:option datatype="boolean">mergedate</bcf:option> + <bcf:option datatype="boolean">bibtexcaseprotection</bcf:option> + <bcf:option datatype="xml">labelalphatemplate</bcf:option> + <bcf:option datatype="xml">translit</bcf:option> + <bcf:option datatype="xml">sortexclusion</bcf:option> + <bcf:option datatype="xml">sortinclusion</bcf:option> + <bcf:option datatype="xml">labelnamespec</bcf:option> + <bcf:option datatype="xml">labeltitlespec</bcf:option> + <bcf:option datatype="xml">labeldatespec</bcf:option> + <bcf:option datatype="integer">maxnames</bcf:option> + <bcf:option datatype="integer">minnames</bcf:option> + <bcf:option datatype="integer">maxbibnames</bcf:option> + <bcf:option datatype="integer">minbibnames</bcf:option> + <bcf:option datatype="integer">maxcitenames</bcf:option> + <bcf:option datatype="integer">mincitenames</bcf:option> + <bcf:option datatype="integer">maxsortnames</bcf:option> + <bcf:option datatype="integer">minsortnames</bcf:option> + <bcf:option datatype="integer">maxitems</bcf:option> + <bcf:option datatype="integer">minitems</bcf:option> + <bcf:option datatype="integer">maxalphanames</bcf:option> + <bcf:option datatype="integer">minalphanames</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="ENTRY"> + <bcf:option datatype="string">noinherit</bcf:option> + <bcf:option datatype="string" backendin="sortingnamekeytemplatename,uniquenametemplatename,labelalphanametemplatename">nametemplates</bcf:option> + <bcf:option datatype="string" backendout="1">labelalphanametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">uniquenametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">sortingnamekeytemplatename</bcf:option> + <bcf:option datatype="string">presort</bcf:option> + <bcf:option datatype="string" backendout="1">indexing</bcf:option> + <bcf:option datatype="string" backendout="1">citetracker</bcf:option> + <bcf:option datatype="string" backendout="1">ibidtracker</bcf:option> + <bcf:option datatype="string" backendout="1">idemtracker</bcf:option> + <bcf:option datatype="string" backendout="1">opcittracker</bcf:option> + <bcf:option datatype="string" backendout="1">loccittracker</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean" backendout="1">familyinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">giveninits</bcf:option> + <bcf:option datatype="boolean" backendout="1">prefixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">suffixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">useafterword</bcf:option> + <bcf:option datatype="boolean" backendout="1">useannotator</bcf:option> + <bcf:option datatype="boolean" backendout="1">useauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">usebookauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">usecommentator</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditor</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditora</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditorb</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditorc</bcf:option> + <bcf:option datatype="boolean" backendout="1">useforeword</bcf:option> + <bcf:option datatype="boolean" backendout="1">useholder</bcf:option> + <bcf:option datatype="boolean" backendout="1">useintroduction</bcf:option> + <bcf:option datatype="boolean" backendout="1">usenamea</bcf:option> + <bcf:option datatype="boolean" backendout="1">usenameb</bcf:option> + <bcf:option datatype="boolean" backendout="1">usenamec</bcf:option> + <bcf:option datatype="boolean" backendout="1">usetranslator</bcf:option> + <bcf:option datatype="boolean" backendout="1">useshortauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">useshorteditor</bcf:option> + <bcf:option datatype="boolean" backendout="1">terseinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">abbreviate</bcf:option> + <bcf:option datatype="boolean" backendout="1">dateabbrev</bcf:option> + <bcf:option datatype="boolean" backendout="1">clearlang</bcf:option> + <bcf:option datatype="boolean" backendout="1">labelnumber</bcf:option> + <bcf:option datatype="boolean" backendout="1">labelalpha</bcf:option> + <bcf:option datatype="boolean" backendout="1">labeltitle</bcf:option> + <bcf:option datatype="boolean" backendout="1">labeltitleyear</bcf:option> + <bcf:option datatype="boolean" backendout="1">labeldateparts</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean">noroman</bcf:option> + <bcf:option datatype="boolean">singletitle</bcf:option> + <bcf:option datatype="boolean">uniquetitle</bcf:option> + <bcf:option datatype="boolean">uniquebaretitle</bcf:option> + <bcf:option datatype="boolean">uniquework</bcf:option> + <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">useprefix</bcf:option> + <bcf:option datatype="boolean" backendout="1">skipbib</bcf:option> + <bcf:option datatype="boolean" backendout="1">skipbiblist</bcf:option> + <bcf:option datatype="boolean" backendout="1">skiplab</bcf:option> + <bcf:option datatype="boolean" backendin="uniquename=false,uniquelist=false,skipbib=true,skipbiblist=true,skiplab=true">dataonly</bcf:option> + <bcf:option datatype="boolean" backendout="1">skiplos</bcf:option> + <bcf:option datatype="boolean" backendout="1">isbn</bcf:option> + <bcf:option datatype="boolean" backendout="1">url</bcf:option> + <bcf:option datatype="boolean" backendout="1">doi</bcf:option> + <bcf:option datatype="boolean" backendout="1">eprint</bcf:option> + <bcf:option datatype="boolean" backendout="1">related</bcf:option> + <bcf:option datatype="boolean" backendout="1">mergedate</bcf:option> + <bcf:option datatype="boolean" backendout="1">bibtexcaseprotection</bcf:option> + <bcf:option datatype="integer" backendin="maxcitenames,maxbibnames,maxsortnames">maxnames</bcf:option> + <bcf:option datatype="integer" backendin="mincitenames,minbibnames,minsortnames">minnames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxbibnames</bcf:option> + <bcf:option datatype="integer" backendout="1">minbibnames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxcitenames</bcf:option> + <bcf:option datatype="integer" backendout="1">mincitenames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxsortnames</bcf:option> + <bcf:option datatype="integer" backendout="1">minsortnames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxitems</bcf:option> + <bcf:option datatype="integer" backendout="1">minitems</bcf:option> + <bcf:option datatype="integer" backendout="1">maxalphanames</bcf:option> + <bcf:option datatype="integer" backendout="1">minalphanames</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="NAMELIST"> + <bcf:option datatype="string" backendin="sortingnamekeytemplatename,uniquenametemplatename,labelalphanametemplatename">nametemplates</bcf:option> + <bcf:option datatype="string" backendout="1">labelalphanametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">uniquenametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">sortingnamekeytemplatename</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean" backendout="1">familyinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">giveninits</bcf:option> + <bcf:option datatype="boolean" backendout="1">prefixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">suffixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">terseinits</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean" backendout="1">useprefix</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="NAME"> + <bcf:option datatype="string" backendin="sortingnamekeytemplatename,uniquenametemplatename,labelalphanametemplatename">nametemplates</bcf:option> + <bcf:option datatype="string" backendout="1">labelalphanametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">uniquenametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">sortingnamekeytemplatename</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean" backendout="1">familyinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">giveninits</bcf:option> + <bcf:option datatype="boolean" backendout="1">prefixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">suffixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">terseinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">useprefix</bcf:option> + </bcf:optionscope> + <!-- DATAFIELDSETS --> + <bcf:datafieldset name="setnames"> + <bcf:member datatype="name" fieldtype="list"/> + </bcf:datafieldset> + <bcf:datafieldset name="settitles"> + <bcf:member field="title"/> + <bcf:member field="booktitle"/> + <bcf:member field="eventtitle"/> + <bcf:member field="issuetitle"/> + <bcf:member field="journaltitle"/> + <bcf:member field="maintitle"/> + <bcf:member field="origtitle"/> + </bcf:datafieldset> + <!-- SOURCEMAP --> + <bcf:sourcemap> + <bcf:maps datatype="bibtex" level="driver"> + <bcf:map> + <bcf:map_step map_field_set="day" map_null="1"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="conference" map_type_target="inproceedings"/> + <bcf:map_step map_type_source="electronic" map_type_target="online"/> + <bcf:map_step map_type_source="www" map_type_target="online"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="mastersthesis" map_type_target="thesis" map_final="1"/> + <bcf:map_step map_field_set="type" map_field_value="mathesis"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="phdthesis" map_type_target="thesis" map_final="1"/> + <bcf:map_step map_field_set="type" map_field_value="phdthesis"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="techreport" map_type_target="report" map_final="1"/> + <bcf:map_step map_field_set="type" map_field_value="techreport"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_field_source="hyphenation" map_field_target="langid"/> + <bcf:map_step map_field_source="address" map_field_target="location"/> + <bcf:map_step map_field_source="school" map_field_target="institution"/> + <bcf:map_step map_field_source="annote" map_field_target="annotation"/> + <bcf:map_step map_field_source="archiveprefix" map_field_target="eprinttype"/> + <bcf:map_step map_field_source="journal" map_field_target="journaltitle"/> + <bcf:map_step map_field_source="primaryclass" map_field_target="eprintclass"/> + <bcf:map_step map_field_source="key" map_field_target="sortkey"/> + <bcf:map_step map_field_source="pdf" map_field_target="file"/> + </bcf:map> + </bcf:maps> + </bcf:sourcemap> + <!-- LABELALPHA NAME TEMPLATE --> + <bcf:labelalphanametemplate name="global"> + <bcf:namepart order="1" use="1" pre="1" substring_width="1" substring_compound="1">prefix</bcf:namepart> + <bcf:namepart order="2">family</bcf:namepart> + </bcf:labelalphanametemplate> + <!-- LABELALPHA TEMPLATE --> + <bcf:labelalphatemplate type="global"> + <bcf:labelelement order="1"> + <bcf:labelpart final="1">shorthand</bcf:labelpart> + <bcf:labelpart>label</bcf:labelpart> + <bcf:labelpart substring_width="3" substring_side="left" ifnames="1">labelname</bcf:labelpart> + <bcf:labelpart substring_width="1" substring_side="left">labelname</bcf:labelpart> + </bcf:labelelement> + <bcf:labelelement order="2"> + <bcf:labelpart substring_width="2" substring_side="right">year</bcf:labelpart> + </bcf:labelelement> + </bcf:labelalphatemplate> + <!-- EXTRADATE --> + <bcf:extradatespec> + <bcf:scope> + <bcf:field order="1">labelyear</bcf:field> + <bcf:field order="2">year</bcf:field> + </bcf:scope> + </bcf:extradatespec> + <!-- INHERITANCE --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="reference"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="inreference"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:type_pair source="mvreference" target="collection"/> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="incollection"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:type_pair source="mvreference" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="inreference"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:type_pair source="reference" target="incollection"/> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:type_pair source="reference" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + <bcf:field source="titleaddon" target="journaltitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="*" target="*"/> + <bcf:field source="ids" skip="true"/> + <bcf:field source="crossref" skip="true"/> + <bcf:field source="xref" skip="true"/> + <bcf:field source="entryset" skip="true"/> + <bcf:field source="entrysubtype" skip="true"/> + <bcf:field source="execute" skip="true"/> + <bcf:field source="label" skip="true"/> + <bcf:field source="options" skip="true"/> + <bcf:field source="presort" skip="true"/> + <bcf:field source="related" skip="true"/> + <bcf:field source="relatedoptions" skip="true"/> + <bcf:field source="relatedstring" skip="true"/> + <bcf:field source="relatedtype" skip="true"/> + <bcf:field source="shorthand" skip="true"/> + <bcf:field source="shorthandintro" skip="true"/> + <bcf:field source="sortkey" skip="true"/> + </bcf:inherit> + </bcf:inheritance> + <!-- UNIQUENAME TEMPLATES --> + <bcf:uniquenametemplate name="global"> + <bcf:namepart order="1" use="1" base="1">prefix</bcf:namepart> + <bcf:namepart order="2" base="1">family</bcf:namepart> + <bcf:namepart order="3">given</bcf:namepart> + </bcf:uniquenametemplate> + <!-- SORTING NAME KEY TEMPLATES --> + <bcf:sortingnamekeytemplate name="global"> + <bcf:keypart order="1"> + <bcf:part type="namepart" order="1" use="1">prefix</bcf:part> + <bcf:part type="namepart" order="2">family</bcf:part> + </bcf:keypart> + <bcf:keypart order="2"> + <bcf:part type="namepart" order="1">given</bcf:part> + </bcf:keypart> + <bcf:keypart order="3"> + <bcf:part type="namepart" order="1">suffix</bcf:part> + </bcf:keypart> + <bcf:keypart order="4"> + <bcf:part type="namepart" order="1" use="0">prefix</bcf:part> + </bcf:keypart> + </bcf:sortingnamekeytemplate> + <bcf:presort>mm</bcf:presort> + <!-- DATA MODEL --> + <bcf:datamodel> + <bcf:constants> + <bcf:constant type="list" name="gender">sf,sm,sn,pf,pm,pn,pp</bcf:constant> + <bcf:constant type="list" name="nameparts">family,given,prefix,suffix</bcf:constant> + <bcf:constant type="list" name="optiondatatypes">boolean,integer,string,xml</bcf:constant> + <bcf:constant type="list" name="multiscriptforms">default,transliteration,transcription,translation</bcf:constant> + </bcf:constants> + <bcf:entrytypes> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>artwork</bcf:entrytype> + <bcf:entrytype>audio</bcf:entrytype> + <bcf:entrytype>bibnote</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>commentary</bcf:entrytype> + <bcf:entrytype>customa</bcf:entrytype> + <bcf:entrytype>customb</bcf:entrytype> + <bcf:entrytype>customc</bcf:entrytype> + <bcf:entrytype>customd</bcf:entrytype> + <bcf:entrytype>custome</bcf:entrytype> + <bcf:entrytype>customf</bcf:entrytype> + <bcf:entrytype>dataset</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>image</bcf:entrytype> + <bcf:entrytype>jurisdiction</bcf:entrytype> + <bcf:entrytype>legal</bcf:entrytype> + <bcf:entrytype>legislation</bcf:entrytype> + <bcf:entrytype>letter</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>movie</bcf:entrytype> + <bcf:entrytype>music</bcf:entrytype> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>mvreference</bcf:entrytype> + <bcf:entrytype>mvproceedings</bcf:entrytype> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>performance</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>review</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:entrytype>standard</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>suppperiodical</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:entrytype>video</bcf:entrytype> + <bcf:entrytype skip_output="true">xdata</bcf:entrytype> + </bcf:entrytypes> + <bcf:fields> + <bcf:field fieldtype="field" datatype="integer">sortyear</bcf:field> + <bcf:field fieldtype="field" datatype="integer">volume</bcf:field> + <bcf:field fieldtype="field" datatype="integer">volumes</bcf:field> + <bcf:field fieldtype="field" datatype="literal">abstract</bcf:field> + <bcf:field fieldtype="field" datatype="literal">addendum</bcf:field> + <bcf:field fieldtype="field" datatype="literal">annotation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booksubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">chapter</bcf:field> + <bcf:field fieldtype="field" datatype="literal">edition</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">entrysubtype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprintclass</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprinttype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">gender</bcf:field> + <bcf:field fieldtype="field" datatype="literal">howpublished</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indexsorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indextitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isan</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isbn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">ismn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isrn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuesubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">iswc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journalsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">label</bcf:field> + <bcf:field fieldtype="field" datatype="literal">langid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">langidopts</bcf:field> + <bcf:field fieldtype="field" datatype="literal">library</bcf:field> + <bcf:field fieldtype="field" datatype="literal">mainsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">note</bcf:field> + <bcf:field fieldtype="field" datatype="literal">number</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field> + <bcf:field fieldtype="field" datatype="literal">part</bcf:field> + <bcf:field fieldtype="field" datatype="literal">relatedstring</bcf:field> + <bcf:field fieldtype="field" datatype="literal">relatedtype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">reprinttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">series</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthandintro</bcf:field> + <bcf:field fieldtype="field" datatype="literal">subtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">title</bcf:field> + <bcf:field fieldtype="field" datatype="literal">titleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usera</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userb</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userd</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usere</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userf</bcf:field> + <bcf:field fieldtype="field" datatype="literal">venue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">version</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shortjournal</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shortseries</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortshorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">presort</bcf:field> + <bcf:field fieldtype="list" datatype="literal">institution</bcf:field> + <bcf:field fieldtype="list" datatype="literal">lista</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listb</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listc</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listd</bcf:field> + <bcf:field fieldtype="list" datatype="literal">liste</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listf</bcf:field> + <bcf:field fieldtype="list" datatype="literal">location</bcf:field> + <bcf:field fieldtype="list" datatype="literal">organization</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origlocation</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origpublisher</bcf:field> + <bcf:field fieldtype="list" datatype="literal">publisher</bcf:field> + <bcf:field fieldtype="list" datatype="name">afterword</bcf:field> + <bcf:field fieldtype="list" datatype="name">annotator</bcf:field> + <bcf:field fieldtype="list" datatype="name">author</bcf:field> + <bcf:field fieldtype="list" datatype="name">bookauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name">commentator</bcf:field> + <bcf:field fieldtype="list" datatype="name">editor</bcf:field> + <bcf:field fieldtype="list" datatype="name">editora</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorb</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorc</bcf:field> + <bcf:field fieldtype="list" datatype="name">foreword</bcf:field> + <bcf:field fieldtype="list" datatype="name">holder</bcf:field> + <bcf:field fieldtype="list" datatype="name">introduction</bcf:field> + <bcf:field fieldtype="list" datatype="name">namea</bcf:field> + <bcf:field fieldtype="list" datatype="name">nameb</bcf:field> + <bcf:field fieldtype="list" datatype="name">namec</bcf:field> + <bcf:field fieldtype="list" datatype="name">translator</bcf:field> + <bcf:field fieldtype="list" datatype="name" label="true">shortauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name" label="true">shorteditor</bcf:field> + <bcf:field fieldtype="list" datatype="name" skip_output="true">sortname</bcf:field> + <bcf:field fieldtype="field" datatype="key">authortype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editoratype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorbtype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorctype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editortype</bcf:field> + <bcf:field fieldtype="field" datatype="key">bookpagination</bcf:field> + <bcf:field fieldtype="field" datatype="key">nameatype</bcf:field> + <bcf:field fieldtype="field" datatype="key">namebtype</bcf:field> + <bcf:field fieldtype="field" datatype="key">namectype</bcf:field> + <bcf:field fieldtype="field" datatype="key">pagination</bcf:field> + <bcf:field fieldtype="field" datatype="key">pubstate</bcf:field> + <bcf:field fieldtype="field" datatype="key">type</bcf:field> + <bcf:field fieldtype="list" datatype="key">language</bcf:field> + <bcf:field fieldtype="list" datatype="key">origlanguage</bcf:field> + <bcf:field fieldtype="field" datatype="entrykey">crossref</bcf:field> + <bcf:field fieldtype="field" datatype="entrykey">xref</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">date</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">endyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">year</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">month</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">day</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">hour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">minute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">second</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">timezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">season</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endseason</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">eventdate</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">eventendyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">eventyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventseason</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendseason</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">origdate</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">origendyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">origyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">orighour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origseason</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendseason</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">urldate</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">urlendyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">urlyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urltimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlseason</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendseason</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">doi</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">eprint</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">file</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verba</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbb</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbc</bcf:field> + <bcf:field fieldtype="field" datatype="uri">url</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey" skip_output="true">xdata</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey" skip_output="true">ids</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey" skip_output="true">entryset</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey">related</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="keyword">keywords</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="option" skip_output="true">options</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="option" skip_output="true">relatedoptions</bcf:field> + <bcf:field fieldtype="field" datatype="range">pages</bcf:field> + <bcf:field fieldtype="field" datatype="code">execute</bcf:field> + </bcf:fields> + <bcf:entryfields> + <bcf:field>abstract</bcf:field> + <bcf:field>annotation</bcf:field> + <bcf:field>authortype</bcf:field> + <bcf:field>bookpagination</bcf:field> + <bcf:field>crossref</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endhour</bcf:field> + <bcf:field>endminute</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endseason</bcf:field> + <bcf:field>endsecond</bcf:field> + <bcf:field>endtimezone</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>entryset</bcf:field> + <bcf:field>entrysubtype</bcf:field> + <bcf:field>execute</bcf:field> + <bcf:field>file</bcf:field> + <bcf:field>gender</bcf:field> + <bcf:field>hour</bcf:field> + <bcf:field>ids</bcf:field> + <bcf:field>indextitle</bcf:field> + <bcf:field>indexsorttitle</bcf:field> + <bcf:field>isan</bcf:field> + <bcf:field>ismn</bcf:field> + <bcf:field>iswc</bcf:field> + <bcf:field>keywords</bcf:field> + <bcf:field>label</bcf:field> + <bcf:field>langid</bcf:field> + <bcf:field>langidopts</bcf:field> + <bcf:field>library</bcf:field> + <bcf:field>lista</bcf:field> + <bcf:field>listb</bcf:field> + <bcf:field>listc</bcf:field> + <bcf:field>listd</bcf:field> + <bcf:field>liste</bcf:field> + <bcf:field>listf</bcf:field> + <bcf:field>minute</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>namea</bcf:field> + <bcf:field>nameb</bcf:field> + <bcf:field>namec</bcf:field> + <bcf:field>nameatype</bcf:field> + <bcf:field>namebtype</bcf:field> + <bcf:field>namectype</bcf:field> + <bcf:field>nameaddon</bcf:field> + <bcf:field>options</bcf:field> + <bcf:field>origday</bcf:field> + <bcf:field>origendday</bcf:field> + <bcf:field>origendhour</bcf:field> + <bcf:field>origendminute</bcf:field> + <bcf:field>origendmonth</bcf:field> + <bcf:field>origendseason</bcf:field> + <bcf:field>origendsecond</bcf:field> + <bcf:field>origendtimezone</bcf:field> + <bcf:field>origendyear</bcf:field> + <bcf:field>orighour</bcf:field> + <bcf:field>origminute</bcf:field> + <bcf:field>origmonth</bcf:field> + <bcf:field>origseason</bcf:field> + <bcf:field>origsecond</bcf:field> + <bcf:field>origtimezone</bcf:field> + <bcf:field>origyear</bcf:field> + <bcf:field>origlocation</bcf:field> + <bcf:field>origpublisher</bcf:field> + <bcf:field>origtitle</bcf:field> + <bcf:field>pagination</bcf:field> + <bcf:field>presort</bcf:field> + <bcf:field>related</bcf:field> + <bcf:field>relatedoptions</bcf:field> + <bcf:field>relatedstring</bcf:field> + <bcf:field>relatedtype</bcf:field> + <bcf:field>season</bcf:field> + <bcf:field>second</bcf:field> + <bcf:field>shortauthor</bcf:field> + <bcf:field>shorteditor</bcf:field> + <bcf:field>shorthand</bcf:field> + <bcf:field>shorthandintro</bcf:field> + <bcf:field>shortjournal</bcf:field> + <bcf:field>shortseries</bcf:field> + <bcf:field>shorttitle</bcf:field> + <bcf:field>sortkey</bcf:field> + <bcf:field>sortname</bcf:field> + <bcf:field>sortshorthand</bcf:field> + <bcf:field>sorttitle</bcf:field> + <bcf:field>sortyear</bcf:field> + <bcf:field>timezone</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendhour</bcf:field> + <bcf:field>urlendminute</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendsecond</bcf:field> + <bcf:field>urlendtimezone</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlhour</bcf:field> + <bcf:field>urlminute</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlsecond</bcf:field> + <bcf:field>urltimezone</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>usera</bcf:field> + <bcf:field>userb</bcf:field> + <bcf:field>userc</bcf:field> + <bcf:field>userd</bcf:field> + <bcf:field>usere</bcf:field> + <bcf:field>userf</bcf:field> + <bcf:field>verba</bcf:field> + <bcf:field>verbb</bcf:field> + <bcf:field>verbc</bcf:field> + <bcf:field>xdata</bcf:field> + <bcf:field>xref</bcf:field> + <bcf:field>year</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>set</bcf:entrytype> + <bcf:field>entryset</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>article</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitleaddon</bcf:field> + <bcf:field>journalsubtitle</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>journaltitleaddon</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>version</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>bibnote</bcf:entrytype> + <bcf:field>note</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>book</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>bookauthor</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>mvreference</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>dataset</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>online</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>holder</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuetitleaddon</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>season</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>mvproceedings</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendseason</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventseason</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendseason</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventseason</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendseason</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventseason</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>report</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>isrn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendseason</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventseason</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>venue</bcf:field> + </bcf:entryfields> + <bcf:multiscriptfields> + <bcf:field>abstract</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>bookauthor</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>holder</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuetitleaddon</bcf:field> + <bcf:field>journalsubtitle</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>journaltitleaddon</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>nameaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>origlocation</bcf:field> + <bcf:field>origpublisher</bcf:field> + <bcf:field>origtitle</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>relatedstring</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>shortauthor</bcf:field> + <bcf:field>shorteditor</bcf:field> + <bcf:field>shorthand</bcf:field> + <bcf:field>shortjournal</bcf:field> + <bcf:field>shortseries</bcf:field> + <bcf:field>shorttitle</bcf:field> + <bcf:field>sortname</bcf:field> + <bcf:field>sortshorthand</bcf:field> + <bcf:field>sorttitle</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>venue</bcf:field> + </bcf:multiscriptfields> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>suppperiodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldxor> + <bcf:field>date</bcf:field> + <bcf:field>year</bcf:field> + </bcf:fieldxor> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>set</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>entryset</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldor> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + </bcf:fieldor> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>mvreference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>dataset</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>online</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + <bcf:fieldor> + <bcf:field>url</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + </bcf:fieldor> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>number</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>mvproceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>report</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:constraint type="data" datatype="isbn"> + <bcf:field>isbn</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="issn"> + <bcf:field>issn</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="ismn"> + <bcf:field>ismn</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="pattern" pattern="(?:sf|sm|sn|pf|pm|pn|pp)"> + <bcf:field>gender</bcf:field> + </bcf:constraint> + </bcf:constraints> + </bcf:datamodel> + <!-- CITATION DATA --> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex" glob="false">comparacao-compiladores-x86.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey order="1">kasliwal2017performance</bcf:citekey> + <bcf:citekey order="2">davis2021performance</bcf:citekey> + <bcf:citekey order="3">halbiniak2022performance</bcf:citekey> + <bcf:citekey order="4">che2009rodinia</bcf:citekey> + </bcf:section> + <!-- SORTING TEMPLATES --> + <bcf:sortingtemplate name="nyt"> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem literal="1" order="2">0</bcf:sortitem> + </bcf:sort> + </bcf:sortingtemplate> + <!-- DATALISTS --> + <bcf:datalist section="0" + name="nyt/global//global/global" + type="entry" + sortingtemplatename="nyt" + sortingnamekeytemplatename="global" + labelprefix="" + uniquenametemplatename="global" + labelalphanametemplatename="global"> + </bcf:datalist> +</bcf:controlfile> diff --git a/texto/completo/comparacao-compiladores-x86.bib b/texto/completo/comparacao-compiladores-x86.bib new file mode 100644 index 0000000..a6c13d8 --- /dev/null +++ b/texto/completo/comparacao-compiladores-x86.bib @@ -0,0 +1,35 @@ +@article{halbiniak2022performance, + title={Performance exploration of various C/C++ compilers for AMD EPYC processors in numerical modeling of solidification}, + author={Halbiniak, Kamil and Wyrzykowski, Roman and Szustak, Lukasz and Kulawik, Adam and Meyer, Norbert and Gepner, Pawel}, + journal={Advances in Engineering Software}, + volume={166}, + pages={103078}, + year={2022}, + publisher={Elsevier} +} + +@misc{kasliwal2017performance, + title={A performance-based comparison of C/C++ compilers}, + author={Kasliwal, Vishal and Vladimirov, Andrey}, + year={2017}, + publisher={Colfax International. Nov} +} + +@inproceedings{davis2021performance, + title={Performance assessment of OpenMP compilers targeting NVIDIA V100 GPUs}, + author={Davis, Joshua Hoke and Daley, Christopher and Pophale, Swaroop and Huber, Thomas and Chandrasekaran, Sunita and Wright, Nicholas J}, + booktitle={Accelerator Programming Using Directives: 7th International Workshop, WACCPD 2020, Virtual Event, November 20, 2020, Proceedings 7}, + pages={25--44}, + year={2021}, + organization={Springer} +} + +@inproceedings{che2009rodinia, + title={Rodinia: A benchmark suite for heterogeneous computing}, + author={Che, Shuai and Boyer, Michael and Meng, Jiayuan and Tarjan, David and Sheaffer, Jeremy W and Lee, Sang-Ha and Skadron, Kevin}, + booktitle={2009 IEEE international symposium on workload characterization (IISWC)}, + pages={44--54}, + year={2009}, + organization={Ieee} +} + diff --git a/texto/completo/comparacao-compiladores-x86.blg b/texto/completo/comparacao-compiladores-x86.blg new file mode 100644 index 0000000..0ad084c --- /dev/null +++ b/texto/completo/comparacao-compiladores-x86.blg @@ -0,0 +1,15 @@ +[0] Config.pm:311> INFO - This is Biber 2.16 +[0] Config.pm:314> INFO - Logfile is 'comparacao-compiladores-x86.blg' +[82] biber:340> INFO - === Fri Feb 28, 2025, 18:09:53 +[97] Biber.pm:415> INFO - Reading 'comparacao-compiladores-x86.bcf' +[180] Biber.pm:952> INFO - Found 4 citekeys in bib section 0 +[196] Biber.pm:4340> INFO - Processing section 0 +[207] Biber.pm:4531> INFO - Looking for bibtex format file 'comparacao-compiladores-x86.bib' for section 0 +[278] bibtex.pm:1689> INFO - LaTeX decoding ... +[283] bibtex.pm:1494> INFO - Found BibTeX data source 'comparacao-compiladores-x86.bib' +[364] UCollate.pm:68> INFO - Overriding locale 'pt-BR' defaults 'variable = shifted' with 'variable = non-ignorable' +[364] UCollate.pm:68> INFO - Overriding locale 'pt-BR' defaults 'normalization = NFD' with 'normalization = prenormalized' +[364] Biber.pm:4168> INFO - Sorting list 'nyt/global//global/global' of type 'entry' with template 'nyt' and locale 'pt-BR' +[364] Biber.pm:4174> INFO - No sort tailoring available for locale 'pt-BR' +[371] bbl.pm:654> INFO - Writing 'comparacao-compiladores-x86.bbl' with encoding 'UTF-8' +[376] bbl.pm:757> INFO - Output to comparacao-compiladores-x86.bbl diff --git a/texto/completo/comparacao-compiladores-x86.tex b/texto/completo/comparacao-compiladores-x86.tex new file mode 100644 index 0000000..e7d5a97 --- /dev/null +++ b/texto/completo/comparacao-compiladores-x86.tex @@ -0,0 +1,528 @@ +\documentclass{article} + +\usepackage{hyperref} +\usepackage{pgfplots} +\usepackage{pgfplotstable} +\usepackage{array} +\usepackage{makecell} +\usepackage{csvsimple} +\usepackage[brazil]{babel} +\usepackage[style=authoryear, backend=biber]{biblatex} +\addbibresource{comparacao-compiladores-x86.bib} +\usepackage{listings} +\lstset{numbers=left, + numberstyle=\small, + stepnumber=1, + numbersep=5pt, + commentstyle=\ttfamily\scriptsize\itshape, + morecomment=[l]{\#}} + +\title{Comparação de compiladores C/C++ para processadores x86} + +\begin{document} + +\maketitle + +\newpage + + +\section{Introdução} + +Com aplicações de alta performance escritas em linguagens de alto nível, a +eficiência do código produzido pelo compilador é um fator importante para o uso +de recursos e velocidade de processamento atingida. + +Embora compiladores compartilhem muitas estratégias de otimização básicas, há +distinção em melhorias específicas, focadas na arquitetura ou implementação, que +podem resultar em variações significativas de desempenho. +Em particular, compiladores diferem em sua capacidade de tirar proveito da +profusão de instruções de arquiteturas x86-64 modernas, com extensões como SSE e +AVX2. + +Entender as diferenças de performance entre os códigos gerados é importante +tanto para programadores e pesquisadores maximizarem o desempenho de uma +aplicação em uma plataforma de hardware particular, quanto para desenvolvedores +de compiladores identificarem oportunidades de melhorar seu produto. +Este estudo busca explorar o impacto de quatro compiladores C/C++ amplamente +usados --- GCC (GNU Compiler Collection), Clang, AOCC (AMD Optimizing C/C++ +Compiler) e ICC (Intel oneAPI DPC++/C++ Compiler) --- no desempenho de +aplicações científicas usando um conjunto abrangente de benchmarks. +Além de quantificar diferenças no tempo de execução, nos propomos a investigar +as causas das disparidades observadas. + +\textcite{kasliwal2017performance} compara a performance de seis compiladores +C/C++ para um Intel Xeon Platinum baseado na arquitetura Skylake usando três +kernels pararelizados com OpenMP. +\textcite{davis2021performance} testou seis compiladores usando cinco aplicações +em sistemas heterogêneos com GPUs Nvidia V100. +Com o maior parte dos compiladores foi empregado OpenMP para o GPU offload, mas +OpenACC e CUDA e também foram utilizados . +\textcite{halbiniak2022performance} examina cinco compiladores para +processadores AMD EPYC Rome usando duas implementações, paralelizadas com OpenMP, +de modelagem numérica da solidificação de ligas. +Nos três casos, a avaliação mostrou que o desempenho dos compiladores varia +substancialmente. + + +\section{Os testes} + +Para comparar a performance, foi adotado o conjunto de benchmarks Rodinia +(versão 3.1), que é fácil de obter e implementa uma variedade de programas +paralelos úteis para aplicações científicas \parencite{che2009rodinia}. + +Há implementações usando três modelos de paralelismo: CUDA, OpenMP e OpenCL. +Para os testes, foram selecionados 17 (de um total de 19) implementações usando +a API OpenMP. +O programa MUMmerGPU foi excluído porque emprega, também, CUDA, não suportado +pelas versões mais recentes dos compiladores. +Já LU Decomposition mostrou uma imensa sensibilidade ao compilador e as flags, +então teria um impacto desproporcional na performance média.\footnote +{A razão entre o maior e menor tempo de execução obtidos para ele é cerca de +\(17.5\). +Dentre os demais programas, a maior razão é \(3.3\), e a média (aritmética) +das razões é \(1.7\).} + +Foram feitas algumas modificações à versão original do Rodinia. +Em especial: +\begin{itemize} + \item Os makefiles foram alterados para simplificar a compilação com + diferentes parâmetros. + Os makefiles originais não se emprestam facilmente para seleção do + compilador empregado ou flags de compilação usadas: em alguns a escolha + é hardcoded nos comandos, e, dentre aqueles que as usam, não há uma + padronização no nome de variáveis. + + \item Para reduzir o impacto de I/O na aferição, a saída dos programas + foi direcionada para \texttt{/dev/null}. + Para a maior parte dos programas, bastou redirecionar a saída padrão e + de erro ou modificar um parâmetro na invocação do programa. + Outros escreviam para um arquivo hardcoded, então o código-fonte precisou + ser editado. + +\end{itemize} + +Os benchmarks modificados e os scripts usados para teste, assim como os +resultados completos, estão disponíveis em +\url{https://gitlab.c3sl.ufpr.br/clac16/ic-comparacao-compiladores-x86}. + +%\subsection{Compiladores testados} + +Foram testados os dois principais compiladores C/C++ open-source --- GCC +(14.2.1) e Clang (19.1.0) --- e os compiladores proprietários desenvolvidos +pelas duas principais fabricantes de processadores x86-64 --- ICC (2025.0.1), +da Intel, e AOCC (5.0), da AMD. + +GCC, parte do projeto GNU, inclui front ends para várias linguagens, assim +como back ends para diversas arquiteturas. +%https://gcc.gnu.org/ +%https://en.wikibooks.org/wiki/GNU_C_Compiler_Internals/GNU_C_Compiler_Architecture +Clang é o front end para linguagens na família C para o LLVM. +%https://clang.llvm.org/ +O Intel C Compiler também é baseado no LLVM, com a versão 2025.0.1 tendo +LLVM 19.0.0 como back end. +%Comando "icx -x c /dev/null -dM -E|grep clang" para exibir a versão. +AOCC é um fork do Clang que inclui otimizações da AMD, com foco particular +(nas últimas versões) em processadores Zen. +O AOCC 5.0 tem como back end o LLVM 17.0.6. +%https://www.amd.com/pt/developer/aocc.html + +Os benchmarks foram compilados e executados em um computador com AMD Ryzen +1700 e 16 GiB de RAM. +As flags de otimização mais comuns foram avaliadas progressivamente, como +mostrado na Tabela~\ref{tab:flags}. +São omitidas a flag de dialeto (\texttt{-std=gnu89}) usada com alguns programas +em C e as flags que habilitam OpenMP (\texttt{-qopenmp} com ICC, +\texttt{-fopenmp} com os demais compiladores). + +\begin{table} + \centering + \footnotesize + \begin{tabular}{|c|c|} + \hline + Compilador & Flags \\ + \hline + \makecell{AOCC \\ Clang} & + \makecell{-O1 \\ -O2 \\ -O3 \\ -O3 -mfma \\ -O3 -march=native + \\-O3 -march=native -ffast-math}\\ + \hline + GCC & + \makecell{-O1 \\ -O2 \\ -O2 -funroll-loops \\ -O3 \\ -O3 -funroll-loops + \\-O3 -funroll-loops -mfma \\ -O3 -funroll-loops -march=native \\ + -O3 -funroll-loops -march=native -mprefer-vector-width=256}\\ + \hline + ICC & + \makecell{-O1 -fp-model=precise \\ -O2 -fp-model=precise\\ + -O3 -fp-model=precise \\ -O3 -fma -fp-model=precise \\ + -O3 -march=core-avx2 -fp-model=precise \\ + -O3 -fma -march=core-avx2 -fp-model=precise \\ + -O3 -march=native -fp-model=precise \\ + -O3 -fma -march=core-avx2 -fp-model=fast=2}\\ + \hline + \end{tabular} + \caption{Compiladores e flags testados} + \label{tab:flags} +\end{table} + +{\footnotesize +Teria sido melhor não usar \texttt{-march=native}, deixando explícitas as +extensões usadas. +} + +As transformações habilitadas pelas flags de nível de otimização \texttt{O1}, +\texttt{O2} e \texttt{O3} variam de acordo com o compilador. +Em particular, \texttt{O2} implica \texttt{-funroll-loops} no Clang e AOCC, +e \texttt{O3} habilita loop unroll no ICC, mas não no GCC. +%https://www.intel.com/content/www/us/en/developer/articles/technical/compiler-optimization-debugging-trade-off.html + +Outra diferença importante é que, por default, ICC usa um modelo de ponto +flutuante (\texttt{-fp-model=fast=1}) que habilita otimizações que sacrificam +a acurácia da aritmética, ao contrário dos demais. +%https://www.intel.com/content/www/us/en/docs/dpcpp-cpp-compiler/developer-guide-reference/2025-0/floating-point-optimizations.html +Buscando uma comparação mais justa, o comportamento default destes compiladores +foi equiparado com a flag \texttt{-fp-model=precise} do ICC, e a flag +\texttt{-ffast-math} foi equiparada com \texttt{-fp-model=fast=2}. + +\section{Resultados} + +Para cada combinação de benchmark, compilador e flags avaliada mediu-se o +tempo de oito execuções individuais e calculou-se uma média aritmética. +Os dados completos estão disponíveis em +\url{https://gitlab.c3sl.ufpr.br/clac16/ic-comparacao-compiladores-x86}. +A Tabela~\ref{tab:resultados-medios} mostra, para cada combinação de compilador +e flags, a média geométrica dos tempos médios calculados para os benchmarks. +A média para as flags de aritmética rápida desconsideram o programa Myocyte, +devido à problemas com seu uso. +Em todos os casos, o desvio padrão geométrico é inferior a \(1.012\). + +\begin{table} + \small + \hspace{-3cm} + \footnotesize + \begin{tabular}{| l | c |} + \hline + \textbf{Compilador e flags} & \textbf{Média Geométrica} + \csvreader[head to column names]{../../resultados/tabela-medias-geometricas.csv}{} + {\\\hline \FLAGS & \GEOMEANEXLUD}\\\hline + \end{tabular} + \caption{Tempos de execução médios para diferentes parâmetros de compilação} + \label{tab:resultados-medios} +\end{table} +%Reordenar linhas da tabela? + + +\subsection{Desempento geral dos compiladores} + +O compilador da Intel obteve o maior desempenho. +Tomando-se o conjunto de flags que proporcionou a melhor média geométrica para +cada compilador a performance do ICC supera a do segundo colocado em cerca de +6\%. +Desconsiderando-se as flags que sacrificam acurácia, a vantagem é de cerca de +5\%. + +A Figura~\ref{graf:performance-relativa} mostra, para cada benchmark, o menor +tempo de execução obtido com os quatro compiladores, com aritmética precisa, +normalizados com o melhor deles. +A vantagem do ICC frente ao segundo lugar é pelo menos 10\% em cinco, dos +dezessete, benchmarks, e maior que 5\% em um outro. +Por outro lado, é superado em mais de 10\% em quatro benchmarks, e em mais +5\% em um outro. + +\pgfplotstableread[col sep=comma]{../../resultados/performances-relativas-precise.csv}\relativetable + +\begin{figure} + \centering + \begin{tikzpicture} + \begin{axis}[ + ymin=0, + xtick=data, + symbolic x coords={particle-filter,srad,nn,hotspot3D,b+tree,lavaMD,kmeans, + hotspot,backprop,pathfinder,bfs,euler3d,streamcluster,myocyte,nw,leukocyte, + heartwall}, + xticklabel style={rotate=45, anchor=east}, + width=13cm, height=8cm, + enlarge x limits=0.1, + ymajorgrids=true, + bar width=3pt, + legend style={at={(0.90,0.95)}, anchor=north east, + legend image code/.code={ + \draw[fill=#1,draw=black] (0cm,-0.1cm) rectangle (0.4cm,0.1cm); + }, + }, + ] + \addplot[ybar,fill=blue, draw=blue, bar shift=-6pt] + table[x=benchmark, y=icc, col sep=comma] {\relativetable}; + \addlegendentry{ICC} + \addplot[ybar,fill=black, draw=black,, bar shift=-3pt] + table[x=benchmark, y=gcc, col sep=comma] {\relativetable}; + \addlegendentry{GCC} + \addplot[ybar,fill=gray, draw=gray, bar shift=0pt] + table[x=benchmark, y=clang, col sep=comma] {\relativetable}; + \addlegendentry{Clang} + \addplot[ybar,fill=red, draw=red, bar shift=3pt] + table[x=benchmark, y=aocc, col sep=comma] {\relativetable}; + \addlegendentry{AOCC} + \end{axis} + \end{tikzpicture} + \caption{O menor tempo de cada compilador para os benchmarks testados + (normalizado).} + \label{graf:performance-relativa} +\end{figure} + +O compilador com o segundo melhor desempenho médio foi o GCC. +Há dois benchmarks em que a vantagem em relação aos demais é superior a 10\%. + +Clang e AOCC superam os demais pelo menos 5\% em apenas um benchmark. +Ambos apresentam uma performance bastante parecida. +Dadas as mesmas flags, o primeiro sempre apresenta a melhor média geométrica, +embora a diferença relativa nunca seja superior a 3\%. +Esse resultado indica que as melhorias feitas ao LLVM desde a versão usada pelo +compilador da AMD igualam ou superam aquelas feitas pela empresa. + +\subsection{Impacto das flags de otimização} + +No geral, as flags testadas de otimização afetam positivamente o dempenho médio. +Há duas exceções. +AOCC e Clang têm uma piora de 2\%--3\% com a flag \texttt{-march=native}, +indicando que os dois têm problemas ao tentar utilizar extensões como AVX2. +E Clang tem uma piora de 3\% com a flag \texttt{-ffast-math}. + +Desconsiderando-se aritmética imprecisa, o melhor desempenho médio foi obtido +com o compilador da Intel usando as flags +\texttt {-O3 -fma -march=core-avx2 -fp-model=precise}. +Dessa forma, as análises seguintes basear-se-ão nestas flags com ICC e no +conjunto equivalente com os demais: +com GCC, \texttt{-O3 -funroll-loops -march=native}, que também é seu conjunto de +opções com o melhor desempenho médio; com AOCC e Clang, +\texttt{-O3 -mfma -march=native}, que está a cerca de 3\% de seu melhor +conjunto de opções (novamente desconsiderando-se \texttt{-ffast-math}). + +\subsection{GCC e -mprefer-vector-width} +Mesmo aparentemente redundante em combinação com \texttt{-mavx2}, a flag +\texttt{-mprefer-vector-width=256} impacta o código gerado pelo GCC para +dezesseis, dos dezoito (incluindo aqui LU Decomposition). +%GCC: +%backprop backprop-2 differ: byte 209, line 1 +%b+tree b+tree-2 differ: byte 209, line 1 +%euler3d_cpu_double euler3d_cpu_double-2 differ: byte 25, line 1 +%heartwall heartwall-2 differ: byte 25, line 1 +%hotspot hotspot-2 differ: byte 209, line 1 +%hotspot3D hotspot3D-2 differ: byte 13707, line 13 +%kmeans kmeans-2 differ: byte 42, line 1 +%lavaMD lavaMD-2 differ: byte 265, line 1 +%leukocyte leukocyte-2 differ: byte 25, line 1 +%lud lud-2 differ: byte 42, line 1 +%myocyte myocyte-2 differ: byte 42, line 1 +%nw nw-2 differ: byte 25, line 1 +%particle_filter particle_filter-2 differ: byte 42, line 1 +%pathfinder pathfinder-2 differ: byte 209, line 1 +%srad srad-2 differ: byte 25, line 1 +%streamcluster streamcluster-2 differ: byte 209, line 1 +Em nenhum caso a performance melhora mais de 1\%, enquanto a performance piora +mais do que 1\% em sete benchmarks. +Em todos a diferença é inferior a 5\%, exceto por LU Decomposition, cujo tempo +tempo de execução aumenta em 220\%. + +Com AOCC apenas um programa é afetado, mas o impacto no desempenho é +insignificante. +%AOCC: +%hotspot hotspot-2 differ: byte 41, line 1 +Com Clang, nenhum programa é afetado. + +\section{Análise dos códigos} + +Para investigar as causas das diferenças observadas, analisamos o código do +programa em que o compilador da Intel obteve maior vantagem, Particle Filter. +ICC mostrou um desempenho 42\% superior ao do GCC, que, por sua vez, foi 24\% +mais rápido que Clang e AOCC. + +A Listagem~\ref{list:pfilter.c.1} contém um segmento de Particle Filter. +Os quatro compiladores o vetorizam. +No entanto, GCC usa registradores de 128 bits (2 doubles), enquanto os +demais usam registradores de 256 bits (4 doubles). +A cada iteração, GCC opera sobre 8 vetores (16 elementos) e AOCC, Clang e +ICC operam sobre 1 vetor (4 elementos). + +\begin{lstlisting}[label=list:pfilter.c.1,basicstyle=\small, +caption={Segmento de Particle Filter (linhas 445--447)}] + for(x = 0; x < Nparticles; x++){ + weights[x] = weights[x]/sumWeights; + } +\end{lstlisting} + +As observações feitas para a Listagem~\ref{list:pfilter.c.1} se aplicam a +quase todo segmento de Particle Filter analisado. +GCC é o mais agressivo no loop unrolling e, ao vetorizar, sempre se limita ao +uso de registradores XMM, de 128 bits. +De acordo com o tamanho do laço, é usado um fator de 4, 8 ou 16, com o caso +típico sendo 8 elementos ou, em código vetorizado, 8 vetores (16 elementos). +Ao vetorizar o código, ICC geralmente opera sobre 1 vetor (4 elementos) por +iteração. +Em código não vetorizado, opera sobre 4 ou 8 elementos por iteração. +Clang e AOCC geram códigos bastante parecidos entre si e geralmente operam +sobre um único elemento ou vetor por iteração. + +A Listagem~\ref{list:pfilter.c.2} contém outro segmento de Particle Filter. +Ele segue o padrão observado, mas também revela mais diferenças entre os +compiladores. + +\begin{lstlisting}[label=list:pfilter.c.2,caption={Segmento de particle\_filter (linhas 499--504)}] + for(x = 0; x < Nparticles; x++){ + arrayX[x] = xj[x]; + arrayY[x] = yj[x]; + weights[x] = 1/((double)(Nparticles)); + } +\end{lstlisting} + +Os quatro compiladores vetorizam o código, com GCC usando registradores de 128 +bits e os demais usando registradores de 256 bits. +AOCC e Clang realizam as três atribuições em um laço, mas GCC e ICC chamam uma +implementação de \texttt{memcpy()} para as duas primeiras, mantendo apenas a +terceira em um laço. +A estratégia do AOCC e Clang parece ser garantir que as cópias de vetor sejam +paralelizadas junto com a terceira atribuição (com OpenMP): quando o código +é compilado sem \texttt{-fopenmp}, eles também recorrem a \texttt{memcpy()}. +Se \texttt{-fopenmp} é usado, eles mantém a atribuição no laço mesmo que +\texttt{-march=native} não esteja presente. + +ICC não realiza loop-unrolling, copiando quatro elementos (um registrador +de 256 bits) por laço. +Já os demais realizam loop-unrolling. +GCC copia dezesseis elementos por iteração, e AOCC e CLANG, oito (de cada vetor). + +O segmento na listagem~\ref{list:pfilter.c.2} está dentro de um outro laço, +em que o valor de \texttt{Nparticles} não muda. +Clang e AOCC computam a divisão de ponto flutuante \texttt{1/Nparticles} +cada vez que entram no laço interno. +Já GCC e ICC ambos tiram proveito do fato que o resultado não muda para +computá-lo uma única vez, no laço exterior: o código correspondente ao segmento +apenas carrega este valor. +Nenhum dos compiladores, no entanto, remove toda a atribuição da linha 4. + +Seguindo o padrão observado, AOCC e Clang geram, para o segmento na +Listagem~\ref{list:pfilter.c.3}, um código praticamente idêntico e sem loop +unrolling. +O laço principal consiste de 6 instruções, incluindo 1 leitura da memória, +1 comparação ponto flutuante e 2 saltos condicionais. +Com GCC, o laço principal compara 8 elementos por iteração e consiste de 35 +instruções, incluindo 8 leituras da memória, 8 comparações ponto flutuante e 9 +saltos condicionais. +ICC é o único que vetoriza o fragmento. +A Listagem~\ref{list:pfilter.icc.1} apresenta o núcleo do segmento em assembly +correspondente. +Não é incluído o código para lidar com elementos desalinhados do vetor, que +são comparados um por um. +O laço principal (bloco .LBB13\_14) realiza 16 comparações e consiste de 12 +instruções, incluindo 4 comparações de (vetores) ponto flutuante lidos da +memória e 2 saltos condicionais. + +\begin{lstlisting}[label=list:pfilter.c.3,caption={Segmento de particle\_filter (linhas 288--293)}] + for(x = 0; x < lengthCDF; x++) { + if(CDF[x] >= value) { + index = x; + break; + } + } +\end{lstlisting} + + +\begin{lstlisting}[label=list:pfilter.icc.1,basicstyle=\small, +caption={Segmento de particle\_filter gerado pelo ICC correspondente à +Listagem~\ref{list:pfilter.c.1}}] + vbroadcastsd %xmm0, %ymm1 + leaq (%rdi,%rdx,8), %r11 + xorl %eax, %eax +.LBB13_14: + vcmplepd (%r11,%rax,8), %ymm1, %ymm2 + vcmplepd 32(%r11,%rax,8), %ymm1, %ymm4 + vcmplepd 64(%r11,%rax,8), %ymm1, %ymm3 + vcmplepd 96(%r11,%rax,8), %ymm1, %ymm5 + vorpd %ymm4, %ymm2, %ymm6 + vorpd %ymm5, %ymm3, %ymm7 + vorpd %ymm6, %ymm7, %ymm6 + vtestpd %ymm6, %ymm6 + jne .LBB13_15 + addq $16, %rax + cmpq %r10, %rax + jbe .LBB13_14 +.LBB13_15: + vpackssdw %ymm4, %ymm2, %ymm0 #ymm0=[0,1,4,5,2,3,6,7] + vpermq $216, %ymm0, %ymm0 #ymm0=[0,1,2,3,4,5,6,7] + vpackssdw %ymm5, %ymm3, %ymm1 #ymm1=[8,9,12,13,10,11,14,15] + vpermq $216, %ymm1, %ymm1 #ymm1=[8,9,10,11,12,13,14,15] + vpackssdw %ymm1, %ymm0, %ymm0 #ymm0=[0,1,2,3,8,9,10,11,4,5,6,7,12,13,14,15] + vextracti128 $1, %ymm0, %xmm1 #xmm1=[4,5,6,7,12,13,14,15] + vpacksswb %xmm1, %xmm0, %xmm0 #xmm0=[0,1,2,3,8,9,10,11,4,5,6,7,12,13,14,15] + vpshufd $216, %xmm0, %xmm0 #xmm0=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] + vpmovmskb %xmm0, %ecx #ecx =[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] + tzcntl %ecx, %ecx + addq %rax, %rdx + addq %rcx, %rdx +\end{lstlisting} + +A listagem~\ref{list:pfilter.icc.1} modifica a disposição dos blocos +(.LBB13\_14 e .LBB13\_15) para facilitar seu entendimento. +A linha 1 copia \texttt{value} nas 4 posições do registrador vetorial +\texttt{ymm1}. +No primeiro bloco, as linhas 5--8 comparam, cada uma, quatro elementos +de \texttt{CDF} por vez. +Se a iteração identifica algum \texttt{CDF[x] >= value}, o laço é interrompido +e o controle passa para o bloco .LBB13\_15. +Este bloco tem a função de identificar qual, dos dezesseis valores testados, +tem o menor índice dentre aqueles que satisfazem a desigualdade. +As linhas 18--26 combinam os resultados das comparações de forma ordenada, +como ilustrado nos comentários. +Nestes, \(n\) indica o \(n\)-ésimo resultado, mas sua representação vai se +tornando cada vez mais estreita, até ser indicado por um único bit na linha 26. +A linha 27 conta o número de bits 0 menos significativos que o bit 1 menos +significativo, i.e., a posição (no bloco de dezesseis) do primeiro elemento a +satisfazer a desigualdade. +As linhas 28 e 29 usam este valor para encontrar o \texttt{x} retornado. + +O segmento na Listagem~\ref{list:pfilter.c.3} é a principal parte da seção que +domina o tempo de execução do programa e que executa aproximadamente 2.4 +vezes mais rápido no programa gerado pelo ICC do que no produzido pelo +GCC, e cerca de 1.4 vezes mais rápido no GCC do que no Clang e AOCC. + +\subsection{Impacto da vetorização} +\label{subsec:vetorizacao} + +O compilador da Intel identifica possibilidades de vetorização automática que os +outros compiladores ignoram. +GCC, em especial, mesmo ao vetorizar um código, pode não ser capaz de utilizar +toda a largura dos registradores, como visto para a +Listagem~\ref{list:pfilter.icc.1}. +Neste caso, mesmo adicionar a flag de compilação +\texttt{-mprefer-vector-width=256} não ajuda. +GCC emprega registradores de 256 bits, mas divide a operação em duas partes: +por exemplo, em vez de armazenar os quatro elementos em um registrador +\texttt{YMM2} com uma instrução \texttt{vmovupd \%ymm2, (\%r15)}, +produz um par \texttt{vextractf128 \$0x1, \%ymm2, 16(\%r15)}, +\texttt{vmovupd \%xmm2, (\%r15)}. + + +A capacidade de vetorizar automaticamente o código é um dos fatores que podem +afetar a eficiência do programa gerado. +Para testar o impacto da vetorização nos programas, os compilamos com as +flags que desabilitam essa otimização. +Com GCC, foram adicionatas as flags \texttt{-fno-tree-vectorize -fno-tree-slp-vectorize}. +Com AOCC e Clang, \texttt{-fno-tree-vectorize -fno-tree-slp-vectorize}. +Com ICC, \texttt{-no-vec}. + +Como mostra a Tabela~\ref{tab:resultados-medios}, ICC é o compilador +mais afetado ao se desabilitar a vetorização automática, com sua performance +média piorando em cerca de 4\%. +Dessa forma, a vantagem do ICC frente ao GCC é reduzida para cerca de 1\% +(contra os 5\% com vetorização ativida). + +Mas a análise do código revela que, realmente desconsiderando-se vetorização, +a diferença é ainda menor. +Isto porque o código compilado com \texttt{-no-vec} ainda mantém vetorizações +mais simples. +Em particular, isso ocorre com os segmentos da Listagem~\ref{list:pfilter.c.1} e +Listagem~\ref{list:pfilter.c.2}, em que não apenas a vetorização é mantida, +mas o compilador passa a realizar loop-unrolling para operar sobre oito +elementos por iteração. + +\printbibliography + +\end{document} -- GitLab