BenchIT-Kernel

From BenchIT-Wiki

Jump to: navigation, search

Contents

What's a kernel

Folder structure

English

  1. The kernelname contains only letters, numbers and dividing-characters
  2. The kernelname consists of 6 elements (categories) in the following order
    • a) Top category name (e.g. "grafical", "IO", "numerical")
    • b) Name of the algorithm (application, part of an application an so on... e.g. "matmul", "vecadd", "latencies")
    • c) Programming Language (e.g. "C", "Java" or "F77")
    • d) parallelisation library/libraries (multiple chunks possible, e.g. "MPI", "pThreads")
    • e) other library/libraies (multiple chunks possible)
    • f) (data) type (e.g. "double", "float")
    • g) a comment (only for naming the binary!)
  3. "." and "-" are the only accepted dividing characters. Behaviour for using other characters is unpredictable. "."'s divide the categories. "--"'s divide multiple chunks of one category (e.g. "MPI-OpenMP"). These chunks should be ordered alphabetically to prevent multiple names for one and the same kernel. Both, "." AND "-" aren't allowed in category-names! Also, the first character after a "." has to be a letter or "0"!
  4. If there is no entry for a category (e.g. the kernel is sequential, so there's no parallel library), the category is named "0".
  5. The categories a) to f) are mapped hierarchically in the kernel-directory "${BENCHITROOT}/kernel". Every category accords

to a sub folder. The category g) is added to the binary name by using the BENCHIT_FILENAME_COMMENT or interpreting the ${BENCHITROOT}/COMPILE.SH-flag --comment/-c from the compile-time to allow different compilations of one and the same kernel.

  1. The name of a binary matches the categories a) to g), divided by "."'s. The binaries are located in the folder "${BENCHITROOT}/bin". Compiled Java kernels are saved into a folder with the according name.
  2. The structure of the output directory matches 1:1 to the kernel directory.
  3. A result-file consists of 3 elements
    • a) architecture information (according to BENCHIT_ARCH_SHORT and BENCHIT_ARCH_SPEED, e.g. InP3_700M)
    • b) the comment according to 1.g)
    • c) date and time of run.
  4. these categories are divided by "__"'s, elements within these categories are divided by "_"'s.

Examples:

  The files of kernel "numerical.matmul.C.0.0.double" are placed in
  Verzeichnis "${BENCHITROOT}/kernel/numerical/matmul/C/0/0/double".
  Compiled with BENCHIT_FILENAME_COMMENT=v01
  results in binary: "${BENCHITROOT}/bin/numerical.matmul.C.0.0.double.v01". 
  The result file is placed in: 
  "${BENCHITROOT}/output/numerical/matmul/C/0/0/double/"
  with the name
  "InP3_700M__v01__2005_07_14__13_51_59.bit" (depends on time)
  The files of kernel "numerical.matmul.F77.MPI--pThreads.BLAS3.double" are placed in
  folder "${BENCHITROOT}/kernel/numerical/matmul/F77/MPI--pThreads/BLAS3/double". 
  The resulting binary may be: "${BENCHITROOT}/bin/numerical.matmul.F77.MPI--pThreads.BLAS3.double.DTRMM-v02". 
  The result file is placed in the folder 
  "${BENCHITROOT}/output/numerical/matmul/F77/MPI--pThreads/BLAS3/double"
  and is named
  "InP3_700M__DTRMM_v02__2005_07_14__13_51_59.bit" 
  The files of kernel "numerical.matmul.Java.0.0.double" are placed in
  folder "${BENCHITROOT}/kernel/numerical/matmul/Java/0/0/double". 
  The resulting executable file: "${BENCHITROOT}/bin/numerical.matmul.Java.0.0.double.v03/RUN.SH". 
  The result file is placed in folder 
  "${BENCHITROOT}/output/numerical/matmul/Java/0/0/double" 
  and named
  "InP3_700M__v03__2005_07_14__13_51_59.bit"

Deutsch

  1. Der Kernelname enthält nur Buchstaben, Ziffern und Trennzeichen.
  2. Der Kernelname besteht aus 7 Elementen (Kategorien) in fester Reihenfolge:
    • a) Oberster Sammelbegriff der Gattung (z.B. "grafical", "IO", "numerical", uä.)
    • b) Name des Algorithmus (Anwendung, Teil einer Anwendung, etc. Z.B. "matmul", "vecadd")
    • c) Programmiersprache (z.B. "C", "F77", "Java")
    • d) Parallelisierung/-bibliothek (Mehrfachnennung möglich)
    • e) Weitere Bibliothek(en) (Mehrfachnennung möglich)
    • f) (Daten-)Typ (z.B. "float", "double")
    • g) Kommentar/Variante (Eigene Versionsnummer oä.)
  3. "." und "-" sind die einzigen verfügbaren Trennzeichen. Kategorien werden durch "." und Mehrfachnennungen, in alphabetischer Reihenfolge, innerhalb einer Kategorie durch "--". Diese beiden Zeichenketten dürfen nicht in den Bezeichnern der Kategorien auftauchen.
  4. Entfällt eine Kategorie, dann muss diese durch "0" aufgefüllt werden.
  5. Die zulässigen Bezeichner in den einzelnen Kategorien sind über die Webseite abfragbar, und nur diese werden beim Hochladen akzeptiert. Neue Bezeichner können dem BenchIT-Admin vorgeschlagen werden. Bei Zustimmung wird die Web-Liste erweitert. Das erste Zeichen nach dem Kategorietrennzeichen "." muß ein Buchstabe oder "0" sein.
  6. Die Kategorien a) bis f) des Kernelnames werden auf das Kernelverzeichnis hierarchisch abgebildet. Jede Kategorie entspricht dabei einem Unterverzeichnis. Die Kategorie g) wird zur Kompilezeit bestimmt, um mehrere Kompilate ein und desselben Kernels im "${BENCHITROOT}/bin" Verzeichnis unterscheiden zu können. Dies geschieht durch die Umgebungsvariable BENCHIT_EXECUTABLE_COMMENT bzw. einem Parameter zum COMPILE.SH.
  7. Bei Mehrfachnennungen innerhalb einer Kategorie erfolgt die Abbildung auf die Verzeichnisstruktur flach in alphabetischer Reihenfolge.
  8. Der Name der ausführbaren Datei eines kompilierten Kernels entspricht dem Kernelnamen und liegt im "${BENCHITROOT}/bin" Verzeichnis. Bei Java Kernels wird in diesem Verzeichnis ein Unterordner mit dem Kernelnamen angelegt.
  9. Die Struktur des Output-Verzeichnisses wird hierarchisch entsprechend dem Kernelverzeichnis angelegt.
  10. Die Ergebnisdateien bestehen aus den Kategorien:
    • a) Architekturinformationen (z.B. InP3_700M)
    • b) Kategorie g) des Kernelnamen
    • c) Datum und Uhrzeit
  11. Trennung der Kategorien im Ergbnisdateinamen erfolgt durch "__" und Trennung der Teile der Kategorien durch "_". Das Datum hat das Format YYYY_MM_DD und die Uhrzeit HH_MM. Enthält Kategorie g) des Kernelnamen andere Zeichen außer Buchstaben und Ziffern, so werden diese durch "_" ersetzt.


Beispiele:

  Die Dateien des Kernels "numerical.matmul.C.0.0.double.v01" liegen im 
  Verzeichnis "${BENCHITROOT}/kernel/numerical/matmul/C/0/0/double". 
  Die ausführbare Datei: "${BENCHITROOT}/bin/numerical.matmul.C.0.0.double.v01". 
  Das Result: 
  "${BENCHITROOT}/output/numerical/matmul/C/0/0/double/" 
  "InP3_700M__v01__2005_07_14__13_51.bit" 
  Die Dateien des Kernels "numerical.matmul.F77.MPI--pThreads.BLAS3.double.DTRMM-v02" liegen im 
  Verzeichnis "${BENCHITROOT}/kernel/numerical/matmul/F77/MPI--pThreads/BLAS3/double". 
  Die ausführbare Datei: "${BENCHITROOT}/bin/numerical.matmul.F77.MPI--pThreads.BLAS3.double.DTRMM-v02". 
  Das Result: 
  "${BENCHITROOT}/output/numerical/matmul/F77/MPI--pThreads/BLAS3/double" 
  "InP3_700M__DTRMM_v02__2005_07_14__13_51.bit" 
  Die Dateien des Kernels "numerical.matmul.Java.0.0.double.v03" liegen im 
  Verzeichnis "${BENCHITROOT}/kernel/numerical/matmul/Java/0/0/double". 
  Die ausführbare Datei: "${BENCHITROOT}/bin/numerical.matmul.Java.0.0.double.v03/RUN.SH". 
  Das Result: 
  "${BENCHITROOT}/output/numerical/matmul/Java/0/0/double" 
  "InP3_700M__v03__2005_07_14__13_51.bit"

List of Kernels

(incomplete)

CVS

Examples for the CVS-Headers can be found here.