Browse Source

part of documentation added

hk 5 năm trước cách đây
mục cha
commit
b9abbe85b0
100 tập tin đã thay đổi với 2564 bổ sung53 xóa
  1. 5 1
      .gitignore
  2. 69 52
      Makefile
  3. 7 0
      README.md
  4. 20 0
      documentation/build_script
  5. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Bold.otf
  6. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-BoldItalic.otf
  7. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-ExtraLight.otf
  8. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-ExtraLightItalic.otf
  9. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Italic.otf
  10. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Light.otf
  11. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-LightItalic.otf
  12. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Medium.otf
  13. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-MediumItalic.otf
  14. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Regular.otf
  15. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-SemiBold.otf
  16. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-SemiBoldItalic.otf
  17. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Text.otf
  18. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-TextItalic.otf
  19. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Thin.otf
  20. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-ThinItalic.otf
  21. 92 0
      documentation/fonts/IBM_Plex/IBM-Plex-Mono/license.txt
  22. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Bold.otf
  23. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-BoldItalic.otf
  24. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-ExtraLight.otf
  25. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-ExtraLightItalic.otf
  26. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Italic.otf
  27. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Light.otf
  28. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-LightItalic.otf
  29. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Medium.otf
  30. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-MediumItalic.otf
  31. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Regular.otf
  32. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-SemiBold.otf
  33. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-SemiBoldItalic.otf
  34. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Text.otf
  35. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-TextItalic.otf
  36. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Thin.otf
  37. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-ThinItalic.otf
  38. 92 0
      documentation/fonts/IBM_Plex/IBM-Plex-Sans/license.txt
  39. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Bold.otf
  40. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-BoldItalic.otf
  41. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-ExtraLight.otf
  42. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-ExtraLightItalic.otf
  43. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Italic.otf
  44. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Light.otf
  45. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-LightItalic.otf
  46. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Medium.otf
  47. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-MediumItalic.otf
  48. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Regular.otf
  49. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-SemiBold.otf
  50. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-SemiBoldItalic.otf
  51. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Text.otf
  52. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-TextItalic.otf
  53. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Thin.otf
  54. BIN
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-ThinItalic.otf
  55. 92 0
      documentation/fonts/IBM_Plex/IBM-Plex-Serif/license.txt
  56. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Bright-Bold.otf
  57. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Bright-BoldOblique.otf
  58. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Bright-DemiBold.otf
  59. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Bright-DemiBoldOblique.otf
  60. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Bright-Medium.otf
  61. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Bright-MediumOblique.otf
  62. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Classical_Serif-MediumItalic.otf
  63. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-Bold.otf
  64. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-BoldItalic.otf
  65. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-Medium.otf
  66. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-MediumItalic.otf
  67. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-Bold.otf
  68. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-BoldOblique.otf
  69. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-Medium.otf
  70. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-MediumOblique.otf
  71. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif_Demi_Condensed-DemiBoldCondensed.otf
  72. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif-Bold.otf
  73. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif-BoldItalic.otf
  74. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif-Medium.otf
  75. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif-MediumItalic.otf
  76. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Extra-Bold.otf
  77. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Extra-BoldItalic.otf
  78. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Extra-MediumItalic.otf
  79. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Upright_Italic-MediumItalic.otf
  80. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-Bold.otf
  81. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-BoldItalic.otf
  82. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-ExtraLight.otf
  83. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-ExtraLightOblique.otf
  84. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-Medium.otf
  85. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-MediumItalic.otf
  86. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-MediumOblique.otf
  87. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text_Variable_Width-Medium.otf
  88. BIN
      documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text_Variable_Width-MediumItalic.otf
  89. 239 0
      documentation/fonts/cm-unicode-0.7.0/Changes
  90. 225 0
      documentation/fonts/cm-unicode-0.7.0/OFL-FAQ.txt
  91. 103 0
      documentation/fonts/cm-unicode-0.7.0/OFL.txt
  92. 73 0
      documentation/fonts/font_settings-Computer_Modern.tex
  93. 71 0
      documentation/fonts/font_settings-IBM_Plex.tex
  94. 11 0
      documentation/fonts/font_settings-my_fonts.tex
  95. 39 0
      documentation/index_style_and_order.xdy
  96. 180 0
      documentation/name_conventions-english.tex
  97. 193 0
      documentation/name_conventions-russian.tex
  98. 620 0
      documentation/oclh_doc.cls
  99. 433 0
      documentation/opencl_helpers_documentation-english.tex
  100. 0 0
      documentation/opencl_helpers_documentation-russian.tex

+ 5 - 1
.gitignore

@@ -1,3 +1,7 @@
 build/
+documentation/build
 .kdev4/
-*.kdev4
+*.kdev4
+*.kilepr
+*.log
+*.backup

+ 69 - 52
Makefile

@@ -1,55 +1,43 @@
-# for debug
-MODEFLAGS := -O0 -g3
-TARGETDIR := build/Debug
 # for release
-### MODEFLAGS := -O3
-### TARGETDIR := build/Release
+MODEFLAGS := -O3
+TARGETDIR := build
 
-OCLH_BUILDER_NAME  := oclh_br
+PRFX_PATH        ?= ~/opt/oclh
+OPENCL_INCLUDES  := -I"/usr/local/cuda/include"
+OPENCL_LIBRARIES := -L/usr/local/cuda/lib64 -L/opt/intel/opencl/lib64
+
+OCLH_LIBRARY_NAME  := liboclh.so.0.0
 OCLH_COMPILER_NAME := oclh_cr
 OCLH_LINKER_NAME   := oclh_lr
-OCLH_LIBRARY_NAME  := liboclh.so
+OCLH_BUILDER_NAME  := oclh_br
 
 RM          := rm -rf
 CC          := gcc
 LINKER      := gcc
 CFLAGS      := -std=c11 -pedantic -Wall -Wextra -Wconversion
-LDFLAGS     := -L/usr/local/cuda/lib64 -L/opt/intel/opencl/lib64
+LDFLAGS     := $(OPENCL_LIBRARIES)
 OUTPUTFLAGS := -c -fmessage-length=0
 MISCFLAGS   := -pthread
-INCLUDES    := -I"src/include_h/" -I"src/include_hd/" \
-               -I"/usr/local/cuda/include"
+INCLUDES    := -I"src/include_h/" -I"src/include_hd/" $(OPENCL_INCLUDES)
 LIBS        := -lOpenCL
-DEFS        :=
 
 # Every subdirectory with source files must be described here
 SRCDIR := src
 # Add inputs and outputs from these tool invocations to the build variables
-C_SRCS += $(wildcard $(SRCDIR)/*.c)
-
-OBJS_CR   :=
-TARGETDIR_CR := $(TARGETDIR)/cr.o
-OBJS_CR   += $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_CR)/%.o,$(C_SRCS))
-C_DEPS_CR :=
-C_DEPS_CR += $(wildcard $(TARGETDIR_CR)/*.d)
-
-OBJS_LR   :=
-TARGETDIR_LR := $(TARGETDIR)/lr.o
-OBJS_LR   += $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_LR)/%.o,$(C_SRCS))
-C_DEPS_LR :=
-C_DEPS_LR += $(wildcard $(TARGETDIR_LR)/*.d)
-
-OBJS_BR   :=
-TARGETDIR_BR := $(TARGETDIR)/br.o
-OBJS_BR   += $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_BR)/%.o,$(C_SRCS))
-C_DEPS_BR :=
-C_DEPS_BR += $(wildcard $(TARGETDIR_BR)/*.d)
-
-OBJS_LIB   :=
+C_SRCS        := $(wildcard $(SRCDIR)/*.c)
+C_SRCS_LIB    := $(wildcard $(SRCDIR)/oclh_h*.c)
 TARGETDIR_LIB := $(TARGETDIR)/lib.o
-OBJS_LIB   += $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_LIB)/%.o,$(C_SRCS))
-C_DEPS_LIB :=
-C_DEPS_LIB += $(wildcard $(TARGETDIR_LIB)/*.d)
+OBJS_LIB      := $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_LIB)/%.o,$(C_SRCS_LIB))
+C_DEPS_LIB    := $(wildcard $(TARGETDIR_LIB)/*.d)
+TARGETDIR_CR  := $(TARGETDIR)/cr.o
+OBJS_CR       := $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_CR)/%.o,$(C_SRCS))
+C_DEPS_CR     := $(wildcard $(TARGETDIR_CR)/*.d)
+TARGETDIR_LR  := $(TARGETDIR)/lr.o
+OBJS_LR       := $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_LR)/%.o,$(C_SRCS))
+C_DEPS_LR     := $(wildcard $(TARGETDIR_LR)/*.d)
+TARGETDIR_BR  := $(TARGETDIR)/br.o
+OBJS_BR       := $(patsubst $(SRCDIR)/%.c,$(TARGETDIR_BR)/%.o,$(C_SRCS))
+C_DEPS_BR     := $(wildcard $(TARGETDIR_BR)/*.d)
 
 # Each subdirectory must supply rules for building sources it contributes
 $(TARGETDIR_BR)/%.o: $(SRCDIR)/%.c
@@ -67,14 +55,16 @@ $(TARGETDIR_LR)/%.o: $(SRCDIR)/%.c
 $(TARGETDIR_LIB)/%.o: $(SRCDIR)/%.c
 	mkdir -p $(TARGETDIR_LIB); \
 	$(CC) $(INCLUDES) $(MODEFLAGS) $(CFLAGS) $(DEFS) $(OUTPUTFLAGS) \
-	-MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+	-fPIC -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
 
 # Add inputs and outputs from these tool invocations to the build variables
 # All Target
-all: oclh_compiler oclh_linker oclh_builder
+all: oclh_library oclh_compiler oclh_linker oclh_builder
+debug: MODEFLAGS := -O0 -g3
+debug: oclh_library oclh_compiler oclh_linker oclh_builder
 # Tool invocations
 oclh_compiler: DEFS := -D__OCLH_COMPILER_ONLY_FLAG -D__OCLH_BUILD_LOG_TO_STDOUT_FLAG
-oclh_compiler: OUTPUTNAME=$(OCLH_COMPILER_NAME)
+oclh_compiler: OUTPUTNAME := $(OCLH_COMPILER_NAME)
 oclh_compiler: $(OBJS_CR)
 	@echo 'Building target: $@'
 	@echo 'Invoking C Linker'
@@ -83,7 +73,7 @@ oclh_compiler: $(OBJS_CR)
 	@echo 'Finished building target: $@'
 	@echo ' '
 oclh_linker: DEFS := -D__OCLH_LINKER_ONLY_FLAG -D__OCLH_BUILD_LOG_TO_STDOUT_FLAG
-oclh_linker: OUTPUTNAME=$(OCLH_LINKER_NAME)
+oclh_linker: OUTPUTNAME := $(OCLH_LINKER_NAME)
 oclh_linker: $(OBJS_LR)
 	@echo 'Building target: $@'
 	@echo 'Invoking C Linker'
@@ -92,7 +82,7 @@ oclh_linker: $(OBJS_LR)
 	@echo 'Finished building target: $@'
 	@echo ' '
 oclh_builder: DEFS := -D__OCLH_BUILDER_FLAG -D__OCLH_BUILD_LOG_TO_STDOUT_FLAG
-oclh_builder: OUTPUTNAME=$(OCLH_BUILDER_NAME)
+oclh_builder: OUTPUTNAME := $(OCLH_BUILDER_NAME)
 oclh_builder: $(OBJS_BR)
 	@echo 'Building target: $@'
 	@echo 'Invoking C Linker'
@@ -100,19 +90,46 @@ oclh_builder: $(OBJS_BR)
 	-o "$(TARGETDIR)/$(OUTPUTNAME)"
 	@echo 'Finished building target: $@'
 	@echo ' '
+oclh_library: OUTPUTNAME := $(OCLH_LIBRARY_NAME)
+oclh_library: $(OBJS_LIB)
+	@echo 'Building target: $@'
+	@echo 'Invoking C Linker'
+	$(LINKER) $(LDFLAGS) $(MISCFLAGS) $(LIBS) $(OBJS_LIB) \
+	-shared -Wl,-soname,liboclh.so.0.0 -o "$(TARGETDIR)/$(OUTPUTNAME)"
+	@echo 'Finished building target: $@'
+	@echo ' '
+install:
+	mkdir -p $(PRFX_PATH)/bin
+	    cp $(TARGETDIR)/$(OCLH_COMPILER_NAME) $(PRFX_PATH)/bin
+	    cp $(TARGETDIR)/$(OCLH_LINKER_NAME)   $(PRFX_PATH)/bin
+	    cp $(TARGETDIR)/$(OCLH_BUILDER_NAME)  $(PRFX_PATH)/bin
+	mkdir -p $(PRFX_PATH)/lib
+	    cp $(TARGETDIR)/$(OCLH_LIBRARY_NAME)  $(PRFX_PATH)/lib
+	mkdir -p $(PRFX_PATH)/include/include_h
+	    cp $(SRCDIR)/include_h/*  $(PRFX_PATH)/include/include_h
+	mkdir -p $(PRFX_PATH)/include/include_hd
+	    cp $(SRCDIR)/include_hd/* $(PRFX_PATH)/include/include_hd
+	mkdir -p $(PRFX_PATH)/include/include_d
+	    cp $(SRCDIR)/include_d/*  $(PRFX_PATH)/include/include_d
+uninstall:
+	$(RM) $(PRFX_PATH)/bin/$(OCLH_COMPILER_NAME) \
+	      $(PRFX_PATH)/bin/$(OCLH_LINKER_NAME) \
+	      $(PRFX_PATH)/bin/$(OCLH_LINKER_NAME)  $(PRFX_PATH)/bin \
+	      $(PRFX_PATH)/lib/$(OCLH_LIBRARY_NAME) $(PRFX_PATH)/lib \
+	      $(PRFX_PATH)/include/include_h/*  $(PRFX_PATH)/include/include_h \
+	      $(PRFX_PATH)/include/include_hd/* $(PRFX_PATH)/include/include_hd \
+	      $(PRFX_PATH)/include/include_d/*  $(PRFX_PATH)/include/include_d \
+	      $(PRFX_PATH)/include $(PRFX_PATH)
 clean:
 	$(RM) \
-	$(OBJS_BR)$(C_DEPS_BR)$(TARGETDIR_BR) \
-	$(OBJS_CR)$(C_DEPS_CR)$(TARGETDIR_CR) \
-	$(OBJS_LR)$(C_DEPS_LR)$(TARGETDIR_LR) \
-	$(OBJS_LIB)$(C_DEPS_LIB)$(TARGETDIR_LIB) \
-	$(TARGETDIR)/$(OCLH_BUILDER_NAME) \
-	$(TARGETDIR)/$(OCLH_COMPILER_NAME) \
-	$(TARGETDIR)/$(OCLH_LINKER_NAME) \
-	$(TARGETDIR)/$(OCLH_LIBRARY_NAME)
+	    $(OBJS_LIB) $(C_DEPS_LIB) $(TARGETDIR_LIB) \
+	    $(OBJS_CR)  $(C_DEPS_CR)  $(TARGETDIR_CR) \
+	    $(OBJS_LR)  $(C_DEPS_LR)  $(TARGETDIR_LR) \
+	    $(OBJS_BR)  $(C_DEPS_BR)  $(TARGETDIR_BR) \
+	    $(TARGETDIR)/$(OCLH_BUILDER_NAME) \
+	    $(TARGETDIR)/$(OCLH_COMPILER_NAME) \
+	    $(TARGETDIR)/$(OCLH_LINKER_NAME) \
+	    $(TARGETDIR)/$(OCLH_LIBRARY_NAME)
 	@echo ' '
 
-.PHONY: all clean
-
-
--include makefile.targets
+.PHONY: all clean debug

+ 7 - 0
README.md

@@ -0,0 +1,7 @@
+### OpenCL_helpers
+
+#### Документация
+
+<a href="https://void.r4in.tk/docs/oclh/opencl_helpers_documentation-russian.pdf">русский язык</a>
+&nbsp; &nbsp; &nbsp;
+<a href="https://void.r4in.tk/docs/oclh/opencl_helpers_documentation-english.pdf">english</a>

+ 20 - 0
documentation/build_script

@@ -0,0 +1,20 @@
+#!/bin/bash
+mkdir -p build
+cp index_style_and_order.xdy build/
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-russian.tex'
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-russian.tex'
+cd build
+makeindex 'opencl_helpers_documentation-russian.idx'
+xindy -C utf8 -M texindy -L russian -M index_style_and_order 'opencl_helpers_documentation-russian.idx'
+cd ..
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-russian.tex'
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-russian.tex'
+
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-english.tex'
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-english.tex'
+cd build
+makeindex 'opencl_helpers_documentation-english.idx'
+xindy -C utf8 -M texindy -L russian -M index_style_and_order 'opencl_helpers_documentation-english.idx'
+cd ..
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-english.tex'
+xelatex -interaction=nonstopmode -output-directory build 'opencl_helpers_documentation-english.tex'

BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Bold.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-BoldItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-ExtraLight.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-ExtraLightItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Italic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Light.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-LightItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Medium.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-MediumItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Regular.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-SemiBold.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-SemiBoldItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Text.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-TextItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-Thin.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Mono/IBMPlexMono-ThinItalic.otf


+ 92 - 0
documentation/fonts/IBM_Plex/IBM-Plex-Mono/license.txt

@@ -0,0 +1,92 @@
+Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Bold.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-BoldItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-ExtraLight.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-ExtraLightItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Italic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Light.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-LightItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Medium.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-MediumItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Regular.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-SemiBold.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-SemiBoldItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Text.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-TextItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-Thin.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Sans/IBMPlexSans-ThinItalic.otf


+ 92 - 0
documentation/fonts/IBM_Plex/IBM-Plex-Sans/license.txt

@@ -0,0 +1,92 @@
+Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Bold.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-BoldItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-ExtraLight.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-ExtraLightItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Italic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Light.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-LightItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Medium.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-MediumItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Regular.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-SemiBold.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-SemiBoldItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Text.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-TextItalic.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-Thin.otf


BIN
documentation/fonts/IBM_Plex/IBM-Plex-Serif/IBMPlexSerif-ThinItalic.otf


+ 92 - 0
documentation/fonts/IBM_Plex/IBM-Plex-Serif/license.txt

@@ -0,0 +1,92 @@
+Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Bright-Bold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Bright-BoldOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Bright-DemiBold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Bright-DemiBoldOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Bright-Medium.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Bright-MediumOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Classical_Serif-MediumItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-Bold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-BoldItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-Medium.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Concrete-MediumItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-Bold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-BoldOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-Medium.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif-MediumOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Sans_Serif_Demi_Condensed-DemiBoldCondensed.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif-Bold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif-BoldItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif-Medium.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif-MediumItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Extra-Bold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Extra-BoldItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Extra-MediumItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Serif_Upright_Italic-MediumItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-Bold.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-BoldItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-ExtraLight.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-ExtraLightOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-Medium.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-MediumItalic.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text-MediumOblique.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text_Variable_Width-Medium.otf


BIN
documentation/fonts/cm-unicode-0.7.0/CMU_Typewriter_Text_Variable_Width-MediumItalic.otf


+ 239 - 0
documentation/fonts/cm-unicode-0.7.0/Changes

@@ -0,0 +1,239 @@
+CM Unicode 0.7.0 (June 18 2009)
+=================
+ o License changed to OFL 1.1
+ o Converted to lookups for Advanced Typography
+ o Changed building of accented characters, it is now based on anchors
+ o Added special accents for capital letters
+ o Added small serifs to U+26A in sans-serif fonts
+ o Reencoded U+478 and U+479 as U+A46A, U+A46B
+ o Kerning copied to built accented characters
+
+CM Unicode 0.6.3a (March 14 2008)
+=================
+ o Bug fixes:
+   - wrong ucircumflex and udieresis in CMUTypewriter-Regular, 
+     CMUTypewriter-Oblique, CMUTypewriter-LightOblique
+   - wrong advanced width of U+044F in CMUSerif-Italic
+   - empty M in CMUSansSerif-Oblique
+   - changed encoding of U+2116 in *.enc files
+
+CM Unicode 0.6.3 (March 16 2007)
+================
+ o Added Latin Extended-A and Latin Extended-B characters to
+   CMUSerif-Roman from Victor Carbajo
+ o Added glyphs from t2d encoded lh fonts
+ o Regenerated by newer fontforge which fixes an issue with "dotlessj"
+
+CM Unicode 0.6.2 (March 02 2007)
+================
+ o Added anchors to phonetic characters
+ o Added 18 pixel bitmap font to CMUBright-Roman, fixed other sizes
+ o Swapped "uni1FBC", "uni1FCC", "uni1FFC" and "uni1FBC.alt", "uni1FCC.alt",
+   "uni1FFC.alt" (suggested by Alexey Kryukov), removed relevant substitution 
+   with "case" tag, added alternative set of capital letters with mute iota
+ o Patched lh fonts to make U+0428 symmetric, also changed U+0429
+ o Added stylistic set 1 with some Latin accented letters based on Vietnamese 
+   ones and capital letters with adscript mute iota
+ o Added Greek small capitals to CMUSerif-Roman, CMUSerif-Bold, CMUSansSerif,
+   CMUSansSerif-Bold, CMUTypewriter-Regular
+ o Added 'kern' GPOS tables to languages other than "latn{dflt}"
+
+CM Unicode 0.6.1 (November 10 2006)
+================
+ o Added ligatures for "i", "j" + combining accents, "Aogonek"
+ o Added anchors
+ o Reencoded "femaleuncrossed" as "uni26B2", "uni2040" as "uni2322",
+   "uni0311" as "tieaccentlowercase", "cyrflex" as "uni0311"
+ o Added 14 and 16 pixel fonts to CMUBright-Roman, regenerated
+   embedded bitmap fonts
+ o Changed script and language tags (suggested by Alexey Kryukov)
+ o Added "uni1FEE" as reference to "uni0385", "figuredash"
+ o Reencoded accented Russian vowels
+ o Retraced CMUSansSerif-Bold
+ o Added substitution from "uni1FB3", "uni1FBC", "uni1FC3",
+   "uni1FCC", "uni1FF3", "uni1FFC" to "uni1FBC.alt", "uni1FCC.alt",
+   "uni1FFC.alt" with "case" tag (suggested by Alexey Kryukov)
+ o Further manual correction of badly traced glyphs from
+   CMUSerif-Roman, CMUSerif-Italic, CMUSerif-BoldItalic,
+   CMUSansSerif-Bold, CMUSansSerif-BoldOblique, CMUBright-Roman
+   fonts
+
+CM Unicode 0.6.0 (June 28 2006)                                             
+================
+ o Added Vietnamese glyphs from vnr fonts. Characters existed in ec       
+   fonts added as local alternatives                                      
+ o Changed position of accents in "atilde", "amacron", "otilde",          
+   "ntilde", "umacron", "omacron", "aemacron", "uni1E7D", "etilde",       
+   "emacron", "afii10831", "afii10832"                                    
+ o Corrected "u" and "y" in CMUClassicalSerif-Italic                      
+ o Changed shape of "afii10063" to "afii10068" + "macron"                 
+ o Fixed Cyrillic small capital characters in CMUConcrete-Roman           
+ o Used names with suffixes for glyph variants. Type 1 fonts now          
+   require at least Freetype 2.2                                          
+ o Set OS2 Values WinAscent, WinDescent, HHeadAscent and HHeadDescent     
+   from bounding box of ec fonts. TypoLineGap and HHeadLineGap are set    
+   to 200 (20% of em) as advised by Recommendations for OpenType Fonts.   
+   The OpenType fonts now have more condensed line spacing                
+ o Used lh fonts 3.5.4                                                    
+ o Fixed some badly traced glyphs (manually edited) from                  
+   CMUSerif-Roman, CMUSansSerif, CMUSansSerif-Oblique, CMUBright-Roman,   
+   CMUBright-Oblique, CMUBright-Bold fonts, look at post_*.sfd files      
+ o Added "locl" substitution from "beta", "gamma", "theta", "lambda",     
+   "chi", "omega" to IPA variants imported from tipa fonts for Latin      
+   alphabet
+
+CM Unicode 0.5.0 (March 01 2006)
+================
+ o Removed extra space from name of "CMU Concrete Bold Extended Roman"
+ o Added CM Bright font family and "Typewriter Text Light" fonts (8 fonts)
+ o Added accented Russian vowels
+ o Added glyphs from lb fonts
+ o Built yet more extended Latin characters
+ o Renamed "babygamma" as "babygammaold" not to interfere with "rams horn"
+ o Font family name for "CMUTypewriter-Oblique" changed to "CMU Typewriter Text"
+ o Added quotereversed, uni201F, uni01A7, uni01A8, uni02C1
+ o Added uni1FBD and uni1FFD as references
+ o Changed font and family name for "CMUSerif-UnslantedItalic" to 
+   "CMUSerif-UprightItalic"
+ o Added space characters: uni2000...uni200D
+ o Added longs and florin to most fonts
+
+CM Unicode 0.4.3 (December 07 2005)
+================
+ o Copied some combining glyphs to spacing ones for compatibility with TeX
+ o Changed simplification rules in mergefonts.pe
+ o Non-unicode glyphs reencoded into Private Use Area
+ o Added small capitals for Cyrillic and Latin characters to some fonts
+ o Copied afii10063 from CMUSerif-Italic to CMUClassicalSerif-Italic
+ o Reencoded acrophonic Greek numbers
+ o Reencoded some glyphs accordingly upcoming Unicode 5.0
+ o Added a workaround for fractions in Serif Bold fonts  
+ o Built uni0326 from comma, rebuilt Scommaaccent, scommaaccent, uni021A, 
+   uni021B using uni0326
+
+CM Unicode 0.4.2 (September 20 2005)
+================
+ o Substituted some glyphs (numerals, basic Latin alphabet and some others) from
+   Blue Sky fonts when available
+ o Built yet more extended Latin characters
+ o Built uni0186 from C and uni0254 from c for fonts without IPA
+ o Added OpenType substitution for old-style numerals (Thanks to Cody Boisclair)
+ 
+CM Unicode 0.4.1 (May 25 2005)
+================
+ o Removed Apple Advanced Typography tables from opentype fonts
+ o Reverted nexusleftside and nexusrightside in g.enc
+ o Properly reencoded strokes in rx.enc
+ o Used guillemets from lh fonts as default, the ones from ec fonts substituted 
+   with GSUB locl tag
+ o Corrected uni0329
+ o Built yet more phonetic symbols
+
+CM Unicode 0.4.0 (May 03 2005)
+================
+ o Added Concrete font family
+ o Reencoded some symbols accordingly Unicode 4.1
+ o Merged into uc (ux) fonts from the lh fonts
+ o Set width of combining glyphs to zero in proportional width fonts
+ o Used leipzig shape of Greek letters in serif italic fonts,
+   the old one is moved to CMUClassicalSerif-Italic
+ o Rebuilt uni1FBC, uni1FCC, uni1FFC placing mute iota under a glyph
+ o Built capital Greek polytonic glyphs in proportional width fonts
+ o Built several accented Latin glyphs
+ o Built IPA digraphs: uni02A3, uni02A5, uni02A8, uni02A9, uni02AA, uni02AB
+ o Built several phonetic symbols
+ o Reencoded CYREPS as uni0190 and cyreps as uni0190 in rx.enc
+ o Merged changes from Alexey Kryukov into g.enc
+ o Several accents in tc.enc  encoded as capital accents
+ o Used neutral shape for quotesingle from tc fonts
+
+CM Unicode 0.3.2 (Mar 28 2005)
+================
+ o Reencoded Serbian italic glyphs
+ o Made lowercase monotonic accented Greek glyphs as references to polytonic 
+   ones
+ o Added Delta.greek, Omega.greek and mu.greek as references to unicode encoded 
+   glyphs
+ o Added several composite Latin glyphs
+ o Removed tipabs10 and tipxbs10 from SansSerif-BoldOblique
+ o acc_height changed to 90/36pt in ectb.mf, ectx.mf, tctb.mf, tctx.mf in order
+   to shift up accents. Aring glyph is built using fontforge.
+ 
+CM Unicode 0.3.1 (Mar 09 2005)
+================
+ o Reverted tracing options for Serif Italic fonts with a workaround for fractions
+ o Changed tracing options for SansSerif-DemiCondensed to produce more smooth 
+   outlines
+ o Regenerated by the fontforge from CVS which fixes the positions of accented eta 
+   glyphs in otf files
+
+CM Unicode 0.3.0 (Feb 28 2005)
+================
+ o License changed for X11 with an exception for fonts
+ o Fixed width of ellipsis in proportional fonts
+ o Changed magnification of italics serif fonts, fixes a bug with onehalf
+ o Added IPA symbols from tipa fonts
+ o changed slope of the Greek glyphs in italics, roman slanted and typewriter
+   text fonts
+ o Added 10 (6 unicode) Cyrillic extended glyphs from lc fonts
+
+CM Unicode 0.2.2 (Dec 22 2004)
+================
+ o Rebuilt by fontforge with fixed bug related to generation of .pfb fonts with 
+   references
+ o Added ATT tags for substitution of g, d, p and t for Serbian language in 
+   italic fonts
+ o Built Serbian glyphs "p" and "t" from Cyrillic "i" and "sha" in italic fonts
+ o Built imacron
+
+CM Unicode 0.2.1 (Dec 21 2004)
+================
+ o created experimental font gtdn1000 which is merged into 
+   CMUSansSerif-DemiCondensed
+ o gsme1000 and gsxe1000 fonts used instead of gsmn1000 (changed a shape of 
+   epsilon)
+ o grmu1000 merged into CMUSerif-UnslantedItalic
+ o created experimental font gtbi1000 which is merged into 
+   CMUTypewriter-BoldItalic
+ o created experimental font gtbn1000 which is merged into CMUTypewriter-Bold
+ o changed encoding for Omega and Delta symbols
+ o renamed macron.ts1 by macronts1 to avoid ambiguity in freetype
+ o OpenType fonts are also generated
+ o added ATT substitutions for guillemotleft, guillemotright, emdash
+ o Added nonbreakingspace as reference to space
+
+CM Unicode 0.2.0 (Nov 03 2004)
+================
+ o TeX fonts are retraced by mftrace with autotrace backend at higher 
+   resolutions. This should create more correct outlines (I hope). 
+ o Added linedrawing characters to Typewriter fonts
+ o Added ".notdef" glyph as supposed by Adobe
+ o Generated several Cyrillic and Greek accented glyphs using fontforge
+ o Changed fontnames for several fonts to conform Adobe conventions
+ o regenerated by fontforge-20041028
+
+CM Unicode 0.1.3 (May 11 2004)
+================
+ o regenerated by fontforge-20040509 which fixes issues with hints
+ 
+CM Unicode 0.1.2 (Dec 09 2003)
+================
+ o regenerated by pfaedit-031205
+ o added two experimental fonts CMUTypewriter-Bold and CMUTypewriter-BoldItalic,
+   containing Latin and Cyrillic glyphs
+ o added RoundToInt() to merging script
+ o redesigned "musicalnote" glyph for monospaced fonts
+ o changed family name for Typewriter Text Regular
+
+CM Unicode 0.1.1 (Aug 27 2003)
+================
+ o redesigned ellipsis glyph for monospaced fonts
+ o changed names for Typewriter Text fonts to conform Mac OS X reqirements
+ o panose value "monospaced" is set for Typewriter Text fonts
+ o regenerated by pfaedit-030822
+
+CM Unicode 0.1 (Apr 10 2003)
+==============
+ o First public release
+ 
+ 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 225 - 0
documentation/fonts/cm-unicode-0.7.0/OFL-FAQ.txt


+ 103 - 0
documentation/fonts/cm-unicode-0.7.0/OFL.txt

@@ -0,0 +1,103 @@
+Copyright (C) Authors of original metafont fonts:
+Donald Ervin Knuth (cm, concrete fonts)
+1995, 1996, 1997 J"org Knappen, 1990, 1992 Norbert Schwarz (ec fonts)
+1992-2006 A.Khodulev, O.Lapko, A.Berdnikov, V.Volovich (lh fonts)
+1997-2005 Claudio Beccari (cb greek fonts)
+2002 FUKUI Rei (tipa fonts)
+2003-2005 Han The Thanh (Vietnamese fonts)
+1996-2005 Walter Schmidt (cmbright fonts)
+
+Copyright (C) 2003-2009, Andrey V. Panov (panov@canopus.iacp.dvo.ru),
+with Reserved Font Family Name "Computer Modern Unicode fonts".
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

+ 73 - 0
documentation/fonts/font_settings-Computer_Modern.tex

@@ -0,0 +1,73 @@
+%
+% font_settings-Computer_Modern.tex
+%
+\setmainfont{CMU_Serif-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Serif-Bold,
+    ItalicFont     = CMU_Serif-MediumItalic,
+    BoldItalicFont = CMU_Serif-BoldItalic,
+    SmallCapsFont  = CMU_Serif-Medium,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\setromanfont{CMU_Serif-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Serif-Bold,
+    ItalicFont     = CMU_Serif-MediumItalic,
+    BoldItalicFont = CMU_Serif-BoldItalic,
+    SmallCapsFont  = CMU_Serif-Medium,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\setsansfont{CMU_Sans_Serif-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Sans_Serif-Bold,
+    ItalicFont     = CMU_Sans_Serif-MediumOblique,
+    BoldItalicFont = CMU_Sans_Serif-BoldOblique,
+    SmallCapsFont  = CMU_Sans_Serif-Medium,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\newfontfamily{\cyrillicfont}{CMU_Serif-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Serif-Bold,
+    ItalicFont     = CMU_Serif-MediumItalic,
+    BoldItalicFont = CMU_Serif-BoldItalic,
+    SmallCapsFont  = CMU_Serif-Medium,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\newfontfamily{\cyrillicfontrm}{CMU_Serif-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Serif-Bold,
+    ItalicFont     = CMU_Serif-MediumItalic,
+    BoldItalicFont = CMU_Serif-BoldItalic,
+    SmallCapsFont  = CMU_Serif-Medium,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\newfontfamily{\cyrillicfontsf}{CMU_Sans_Serif-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Sans_Serif-Bold,
+    ItalicFont     = CMU_Sans_Serif-MediumOblique,
+    BoldItalicFont = CMU_Sans_Serif-BoldOblique,
+    SmallCapsFont  = CMU_Sans_Serif-Medium,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\setmonofont{CMU_Typewriter_Text-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Typewriter_Text-Bold,
+    ItalicFont     = CMU_Typewriter_Text-MediumItalic,
+    BoldItalicFont = CMU_Typewriter_Text-BoldItalic,
+    SlantedFont    = CMU_Typewriter_Text-MediumOblique
+]
+\newfontfamily{\cyrillicfonttt}{CMU_Typewriter_Text-Medium}[
+    Extension      = .otf,
+    Path           = fonts/cm-unicode-0.7.0/,
+    BoldFont       = CMU_Typewriter_Text-Bold,
+    ItalicFont     = CMU_Typewriter_Text-MediumItalic,
+    BoldItalicFont = CMU_Typewriter_Text-BoldItalic,
+    SlantedFont    = CMU_Typewriter_Text-MediumOblique
+]

+ 71 - 0
documentation/fonts/font_settings-IBM_Plex.tex

@@ -0,0 +1,71 @@
+%
+% font_settings-IBM_Plex.tex
+%
+\setmainfont{IBMPlexSerif-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Serif/,
+    BoldFont       = IBMPlexSerif-Bold,
+    ItalicFont     = IBMPlexSerif-Italic,
+    BoldItalicFont = IBMPlexSerif-BoldItalic,
+    SmallCapsFont  = IBMPlexSerif-Regular,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\setromanfont{IBMPlexSerif-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Serif/,
+    BoldFont       = IBMPlexSerif-Bold,
+    ItalicFont     = IBMPlexSerif-Italic,
+    BoldItalicFont = IBMPlexSerif-BoldItalic,
+    SmallCapsFont  = IBMPlexSerif-Regular,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\setsansfont{IBMPlexSans-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Sans/,
+    BoldFont       = IBMPlexSans-Bold,
+    ItalicFont     = IBMPlexSans-Italic,
+    BoldItalicFont = IBMPlexSans-BoldItalic,
+    SmallCapsFont  = IBMPlexSans-Regular,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\newfontfamily{\cyrillicfont}{IBMPlexSerif-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Serif/,
+    BoldFont       = IBMPlexSerif-Bold,
+    ItalicFont     = IBMPlexSerif-Italic,
+    BoldItalicFont = IBMPlexSerif-BoldItalic,
+    SmallCapsFont  = IBMPlexSerif-Regular,
+    SmallCapsFeatures={Letters=SmallCaps,Scale=MatchUppercase}
+]
+\newfontfamily{\cyrillicfontrm}{IBMPlexSerif-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Serif/,
+    BoldFont       = IBMPlexSerif-Bold,
+    ItalicFont     = IBMPlexSerif-Italic,
+    BoldItalicFont = IBMPlexSerif-BoldItalic,
+    SmallCapsFont  = IBMPlexSerif-Regular,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\newfontfamily{\cyrillicfontsf}{IBMPlexSans-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Sans/,
+    BoldFont       = IBMPlexSans-Bold,
+    ItalicFont     = IBMPlexSans-Italic,
+    BoldItalicFont = IBMPlexSans-BoldItalic,
+    SmallCapsFont  = IBMPlexSans-Regular,
+    SmallCapsFeatures={Letters=SmallCaps}
+]
+\setmonofont{IBMPlexMono-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Mono/,
+    BoldFont       = IBMPlexMono-Bold,
+    ItalicFont     = IBMPlexMono-Italic,
+    BoldItalicFont = IBMPlexMono-BoldItalic
+]
+\newfontfamily{\cyrillicfonttt}{IBMPlexMono-Regular}[
+    Extension      = .otf,
+    Path           = fonts/IBM_Plex/IBM-Plex-Mono/,
+    BoldFont       = IBMPlexMono-Bold,
+    ItalicFont     = IBMPlexMono-Italic,
+    BoldItalicFont = IBMPlexMono-BoldItalic
+]

+ 11 - 0
documentation/fonts/font_settings-my_fonts.tex

@@ -0,0 +1,11 @@
+%
+% font_settings-my_fonts.tex
+%
+\setmainfont{Garamond Premier Pro}
+\setromanfont{Garamond Premier Pro}
+\setsansfont{CMU Sans Serif}
+\newfontfamily{\cyrillicfont}{Garamond Premier Pro}
+\newfontfamily{\cyrillicfontrm}{Garamond Premier Pro}
+\newfontfamily{\cyrillicfontsf}{CMU Sans Serif}
+\setmonofont{CMU Typewriter Text}
+\newfontfamily{\cyrillicfonttt}{CMU Typewriter Text}

+ 39 - 0
documentation/index_style_and_order.xdy

@@ -0,0 +1,39 @@
+(define-letter-groups
+     ("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
+      "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+
+(require
+     "rules/latin-tolower.xdy")
+
+(use-rule-set
+     :run 0
+     :rule-set ("latin-tolower"))
+
+(markup-locref :class "arabic-page-numbers" :open  "\hyperpage{" :close "}")
+
+(markup-locclass-list :open "\quad{}")
+(markup-locref-list :sep ", ")
+
+(markup-crossref-list :class "seealso" :open ", \seealso{" :sep "; " :close "}{}")
+
+(markup-range :sep "--")
+
+(markup-letter-group
+     :open-head "~n~n  \textbf {\large "
+     :close-head "}~n  \nopagebreak"
+     :capitalize)
+
+(markup-index :open
+"\begin{theindex}
+  \providecommand*\lettergroupDefault[1]{}
+  \providecommand*\lettergroup[1]{%
+      \par\textbf{#1}\par
+      \nopagebreak
+  }
+\addcontentsline{toc}{section}{\indexname}
+{\small
+"
+              :close 
+"}
+~n~n\end{theindex}~n"
+              :tree)

+ 180 - 0
documentation/name_conventions-english.tex

@@ -0,0 +1,180 @@
+\subsection{Naming conventions}
+\label{subsec:nameconventions}
+
+\index{naming conventions}%
+The following substitutions were used to describe the conventions:
+\nopagebreak\par\bigskip
+{%
+\setlength{\leftskip}{0pt}\setlength{\parindent}{-\tabcolsep}%
+\SetLenVarWithWidth{\Acol}{\verbI{Action}}%
+\SetLenVarWithWidth{\Bcol}{--}%
+\begin{tabular}%
+    {p{\Acol}p{\Bcol}p{\linewidth-\Acol-\Bcol-4\tabcolsep}}
+\verb|*|&--&any string of characters;\\
+\verbI{Action}&--&semantic name of an action, for example, <<Sync>> for
+synchronization or <<Fill>> for filling;\\
+\verbI{Tname}&--&\textbf{t}ype \textbf{name}, semantic name of an data type, it
+does not obligingly corresponds to the technical name of the structure;\\
+\verbI{BTA}&--&\textbf{b}ase \textbf{t}ype \textbf{a}cronym, acronym for a basic
+data type, so the following acronyms were used in the library already:\\
+&&
+\begin{tabular}{lllllll}
+&&&\verb|i8| &(\verb|signed char|),    &\verb|u8| &(\verb|unsigned char|),\\
+&&&\verb|i16|&(\verb|signed short|),   &\verb|u16|&(\verb|unsigned short|),\\
+&&&\verb|i32|&(\verb|signed int|),     &\verb|u32|&(\verb|unsigned int|),\\
+&&&\verb|i64|&(\verb|signed long int|),&\verb|u64|&(\verb|unsigned long int|),\\
+&&&\verb|f32|&(\verb|float|),          &\verb|f64|&(\verb|double|).
+\end{tabular}
+\end{tabular}
+}
+\bigskip
+
+\begin{samepage}
+\noindent%
+The following naming conventions were used in the library:\nopagebreak\par
+{\NmCnvDescript\verb|__*|\\* the library instances for internal use begin with two underscores. While regular use of the library, using of such instances is not assumed.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Macrodefinitions}}\nopagebreak\par
+{\NmCnvDescript\verb|_GHM_*|\\* \textbf{g}pgpu \textbf{h}ost \textbf{m}acro,
+preprocessor macrodefinition for the CPU program compiler.\par}
+{\NmCnvDescript\verb|_GDM_*|\\* \textbf{g}pgpu \textbf{d}evice \textbf{m}acro,
+preprocessor macrodefinition for the OpenCL program compiler.\par}
+{\NmCnvDescript\verb|_GHDM_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{m}acro, preprocessor macrodefinition common for the CPU program compiler 
+and the OpenCL program compiler.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Data types}}\nopagebreak\par
+{\NmCnvDescript\verb|_GHT_*|\\* \textbf{g}pgpu \textbf{h}ost \textbf{t}ype, data type for CPU programs.\par}
+{\NmCnvDescript\verb|_GDT_*|\\* \textbf{g}pgpu \textbf{d}evice \textbf{t}ype, data type for OpenCL programs.\par}
+{\NmCnvDescript\verb|_GHDT_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{t}ype, data type common for CPU and OpenCL programs.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Enumerations}}\nopagebreak\par
+{\NmCnvDescript\verb|_GHE_*|\\* \textbf{g}pgpu \textbf{h}ost
+\textbf{e}numeration, enumeration for CPU programs.\par}
+{\NmCnvDescript\verb|_GDE_*|\\* \textbf{g}pgpu \textbf{d}evice
+\textbf{e}numeration, enumeration for OpenCL programs.\par}
+{\NmCnvDescript\verb|_GHDE_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{e}numeration, enumeration common for CPU and OpenCL programs.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Functions}}\nopagebreak\par
+{\NmCnvDescript\verb|_ghf_*()|\\* \textbf{g}pgpu \textbf{h}ost
+\textbf{f}unction, library function available for CPU programs only.\par}
+{\NmCnvDescript\verb|_gdf_*()|\\* \textbf{g}pgpu \textbf{d}evice
+\textbf{f}unction, library function available for OpenCL programs only.\par}
+{\NmCnvDescript\verb|_ghdf_*()|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{f}unction, library function common for CPU and OpenCL programs.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript\verb|*_wdc*()|\\* \textbf{w}ith \textbf{d}ata \textbf{c}leaner,
+special type of function. If error occurred while the execution of such
+function, then callback function would be called which deallocates memory and
+sets to zeroes members of structure from the user data member of the workset,
+for details see~s.\ref{subsec:workset}.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_decl|\verbI{Tname}\verb|()|\nopagebreak\par
+\verb|*_decl|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
+\textbf{decl}arator, function returns a structure with members initialized to
+default values. The function does not allocate memory and \verbI{Tname}'s
+members-pointers are set to \verb|NULL|. Assignment the value returned such a
+function to an existing structure may lead to a memory leak, therefore
+\verb|*_decl*()| functions are being called for structure declaration only.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_genr|\verbI{Tname}\verb|()|\nopagebreak\par
+\verb|*_genr|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
+\textbf{gen}e\textbf{r}ator, the function allocates memory for all
+members-pointer of the \verbI{Tname} structure, the pointer to which is obtained
+from the arguments. Then the function assign values in accordance with its
+arguments. Such a function is analogue of the constructor. If an error occurred,
+the function would return \verb|int| value other than zero and completely
+deallocate memory of the \verbI{Tname} structure, including the
+members-structures.
+\verbI{Tname} is a semantic name, that does not obligingly corresponds to the
+technical name of the structure.\par
+\begin{ImpNote}
+If a pointer to an existing structure was passed as an argument of the
+\verb|*_genr*()| function, the structure would be correctly recreated with
+the deletion of all previous data and the deallocation of the corresponding
+memory, including the members-structures.
+\end{ImpNote}
+}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_is|\verbI{Tname}\verb|_Valid()|\nopagebreak\par
+\verb|*_is|\verbI{Tname}\verb|_|\verbI{BTA}\verb|_Valid()|\\*
+the function performs minimal integrity check of the structure data and returns
+an \verb|int| value. If the structure data is integral, the \verb|*_is*_Valid()|
+function returns 1, otherwise 0 is returned.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*|\verbI{ActionTname}\verb|()|\nopagebreak\par
+\verb|*|\verbI{ActionTname}\verb|_|\verbI{BTA}\verb|()|\\*
+the function performs \verbI{Action} over a \verbI{Tname} type. If an error
+occurred, an \verb|int| value other than zero would be returned and the memory
+of the structure would be completely deallocated, including the
+members-structures.
+\verbI{Tname} is a semantic name, that does not obligingly corresponds to the
+technical name of the structure.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_wipe|\verbI{Tname}\verb|()|\nopagebreak\par
+\verb|*_wipe|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
+the function completely deallocates the memory occupied by the members of the
+\verbI{Tname} structure, including the members-structures, then assigns default
+values to all of the structure members, and \verb|NULL| to the members-pointers.
+After applying the \verb|*_wipe*()| function, the state of the \verbI{Tname}
+structure is fully equivalent to the value returned by the \verb|*_decl*()|
+function and the memory occupied by the structure can be deallocated or the
+\verb|*_genr*()| function can be applied again. \verbI{Tname} is a semantic
+name, that does not obligingly corresponds to the technical name of the
+structure.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript\verb|*_get|\verbI{Tname}\Verb|()|\\* the indirect data access function, if is called returns the \verbI{Tname} value obtained from the function arguments. \verbI{Tname} is a semantic name, that does not obligingly
+corresponds to the technical name of the structure.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Files}}\nopagebreak\par
+{\NmCnvDescript\Verb|*.clc|\\* file with the source code of the OpenCL program in OpenCL C language.\par}
+{\NmCnvDescript\Verb|*.clh|\\* header file with the source code of the OpenCL program in OpenCL C language.\par}
+{\NmCnvDescript\Verb|*.clo|\\* compiled OpenCL object. It only makes sense for OpenCL devices of the same architecture.\par}
+{\NmCnvDescript\Verb|*.clso|\\* linked OpenCL library (shared object/library). It only makes sense for OpenCL devices of the same architecture.\par}
+{\NmCnvDescript\Verb|*.clexe|\\* linked OpenCL executable. It only makes sense for OpenCL devices of the same architecture.\par}
+{\NmCnvDescript\Verb|*.clout|\\* an OpenCL file, content of which could not be identified using the library.\par}
+{\NmCnvDescript\verb|*.log|\\* log file.\par}
+\end{samepage}

+ 193 - 0
documentation/name_conventions-russian.tex

@@ -0,0 +1,193 @@
+\subsection{Соглашения по именам}
+\label{subsec:nameconventions}
+
+\index{соглашения по именам}%
+Для описания соглашений будут использованы следующие подстановки:
+\nopagebreak\par\bigskip
+{%
+\setlength{\leftskip}{0pt}\setlength{\parindent}{-\tabcolsep}%
+\SetLenVarWithWidth{\Acol}{\verbI{Action}}%
+\SetLenVarWithWidth{\Bcol}{--}%
+\begin{tabular}%
+    {p{\Acol}p{\Bcol}p{\linewidth-\Acol-\Bcol-4\tabcolsep}}
+\verb|*|&--&последовательность символов любой длины;\\
+\verbI{Action}&--&смысловое название действия, например, <<Sync>> для
+синхронизации или <<Fill>> для заполнения;\\
+\verbI{Tname}&--&\textbf{t}ype \textbf{name}, смысловое название типа данных, не
+обязательно соответствует техническому названию структуры;\\
+\verbI{BTA}&--&\textbf{b}ase \textbf{t}ype \textbf{a}cronym, сокращение для
+базового типа данных, так в библиотеке уже задействованы акронимы:\\
+&&
+\begin{tabular}{lllllll}
+&&&\verb|i8| &(\verb|signed char|),    &\verb|u8| &(\verb|unsigned char|),\\
+&&&\verb|i16|&(\verb|signed short|),   &\verb|u16|&(\verb|unsigned short|),\\
+&&&\verb|i32|&(\verb|signed int|),     &\verb|u32|&(\verb|unsigned int|),\\
+&&&\verb|i64|&(\verb|signed long int|),&\verb|u64|&(\verb|unsigned long int|),\\
+&&&\verb|f32|&(\verb|float|),          &\verb|f64|&(\verb|double|).
+\end{tabular}
+\end{tabular}
+}
+\bigskip
+
+\begin{samepage}
+\noindent%
+При написании использованы следующие соглашения по именам сущностей:
+\nopagebreak\par
+{\NmCnvDescript\verb|__*|\\* сущности библиотеки для внутреннего использования
+начинаются с двух знаков подчёркивания <<\verb|__|>>~(underscore).  При штатном
+использовании библиотеки обращение к таким сущностям не предполагается.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Макроопределения}}\nopagebreak\par
+{\NmCnvDescript\verb|_GHM_*|\\* \textbf{g}pgpu \textbf{h}ost \textbf{m}acro,
+инструкция препроцессора для компилятора программ CPU.\par}
+{\NmCnvDescript\verb|_GDM_*|\\* \textbf{g}pgpu \textbf{d}evice \textbf{m}acro,
+инструкция препроцессора только для компилятора программ OpenCL.\par}
+{\NmCnvDescript\verb|_GHDM_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{m}acro, инструкция препроцессора единая для компиляторов CPU и OpenCL.
+\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Типы}}\nopagebreak\par
+{\NmCnvDescript\verb|_GHT_*|\\* \textbf{g}pgpu \textbf{h}ost \textbf{t}ype, тип
+данных для программ CPU.\par}
+{\NmCnvDescript\verb|_GDT_*|\\* \textbf{g}pgpu \textbf{d}evice \textbf{t}ype,
+тип данных для программ OpenCL.\par}
+{\NmCnvDescript\verb|_GHDT_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{t}ype, тип данных единый для программ CPU и OpenCL.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Перечисления}}\nopagebreak\par
+{\NmCnvDescript\verb|_GHE_*|\\* \textbf{g}pgpu \textbf{h}ost
+\textbf{e}numeration, перечисление для программ CPU.\par}
+{\NmCnvDescript\verb|_GDE_*|\\* \textbf{g}pgpu \textbf{d}evice
+\textbf{e}numeration, перечисление для программ OpenCL.\par}
+{\NmCnvDescript\verb|_GHDE_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{e}numeration, перечисление единое для программ CPU и OpenCL.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Функции}}\nopagebreak\par
+{\NmCnvDescript\verb|_ghf_*()|\\* \textbf{g}pgpu \textbf{h}ost
+\textbf{f}unction, функция библиотеки доступная для использования только в
+программах CPU.\par}
+{\NmCnvDescript\verb|_gdf_*()|\\* \textbf{g}pgpu \textbf{d}evice
+\textbf{f}unction, функция библиотеки доступная для использования только в
+программах OpenCL.\par}
+{\NmCnvDescript\verb|_ghdf_*()|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
+\textbf{f}unction, функция единая для программ CPU и OpenCL.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript\verb|*_wdc*()|\\* \textbf{w}ith \textbf{d}ata \textbf{c}leaner,
+особый тип функции. Если при выполнении такой функции возникнет ошибка, то будет
+выполнена функция обратного вызова (callback), которая освобождает память и
+обнуляет структуры из поля пользовательских данных рабочей конфигурации
+(workset). Подробнее~см.~п.\ref{subsec:workset}.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_decl|\verbI{Tname}\verb|()|\nopagebreak\par
+\verb|*_decl|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
+\textbf{decl}arator, функция возвращает структуру с полями (членами)
+инициализированными значениями по умолчанию. При этом не производится выделение
+памяти, а полям-указателям присваивается значение \verb|NULL|. Присвоение
+значения возвращаемого такой функцией существующей структуре может привести к
+утечке памяти, в связи с чем функции \verb|*_decl*()| вызываются только при
+объявлении структуры.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_genr|\verbI{Tname}\verb|()|\nopagebreak\par
+\verb|*_genr|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
+\textbf{gen}e\textbf{r}ator, функция выделяет память для всех
+полей-указателей структуры \verbI{Tname}, указатель на которую получен из
+аргументов. Затем заполняет поля структуры и выделенную память в соответствии со
+своими аргументами. Аналог конструктора. При возникновении ошибки возвращает
+значение \verb|int| отличное от ноля и полностью освобождает память создаваемой
+структуры \verbI{Tname} включая поля-структуры. \verbI{Tname}~--~смысловое
+название, которое может не соответствовать техническому обозначению структуры.
+\par
+\begin{ImpNote}
+если функции \verb|*_genr*()| передан
+указатель на существующую структуру, то структура будет корректно пересоздана с
+удалением всех предыдущих данных и освобождением соответствующей памяти, включая
+поля-структуры.
+\end{ImpNote}
+}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_is|\verbI{Tname}\verb|_Valid()|\nopagebreak\par
+\verb|*_is|\verbI{Tname}\verb|_|\verbI{BTA}\verb|_Valid()|\\*
+функция проводит минимальную проверку целостности данных структуры и возвращает
+значение \verb|int|. Если данные структуры целостны, функция
+\verb|*_is*_Valid()| вернёт 1, в ином случае будет возвращён 0.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*|\verbI{ActionTname}\verb|()|\nopagebreak\par
+\verb|*|\verbI{ActionTname}\verb|_|\verbI{BTA}\verb|()|\\*
+функция производит действие \verbI{Action} с типом \verbI{Tname}. При
+возникновении ошибки возвращает значение \verb|int| отличное от ноля и полностью
+освобождает память структуры \verbI{Tname} включая поля-структуры.
+\verbI{Tname}~--~смысловое название, которое может не соответствовать
+техническому обозначению структуры.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript%
+\verb|*_wipe|\verbI{Tname}\verb|()|\nopagebreak\par
+\verb|*_wipe|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
+функция полностью освобождает память, занимаемую полями структуры \verbI{Tname}
+включая поля-структуры, присваивает всем полям структуры значения по умолчанию,
+а полям-указателям значение \verb|NULL|. После применения функции
+\verb|*_wipe*()| состояние структуры аналогично возвращённому функцией
+\verb|*_decl*()| и память занимаемая структурой может быть освобождена или снова
+применена функция \verb|*_genr*()|. \verbI{Tname}~--~смысловое название, которое
+может не соответствовать техническому обозначению структуры.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+{\NmCnvDescript\verb|*_get|\verbI{Tname}\Verb|()|\\* функция непрямого доступа к
+данным, при вызове возвращает значение \verbI{Tname} полученное из аргументов
+функции. \verbI{Tname}~--~смысловое название, которое может не соответствовать
+техническому обозначению структуры.\par}
+\end{samepage}
+\bigskip
+
+\begin{samepage}
+\centerline{\textbf{Файлы}}\nopagebreak\par
+{\NmCnvDescript\Verb|*.clc|\\* файл с исходным кодом OpenCL программы на языке
+OpenCL C.\par}
+{\NmCnvDescript\Verb|*.clh|\\* заголовочный файл (header) с исходным кодом
+OpenCL заголовка на языке OpenCL C.\par}
+{\NmCnvDescript\Verb|*.clo|\\* скомпилированный объект (object) OpenCL. Имеет
+смысл только для OpenCL-устройств одной архитектуры.\par}
+{\NmCnvDescript\Verb|*.clso|\\* скомпонованная библиотека (shared
+object/library) OpenCL. Имеет смысл только для OpenCL-устройств одной
+архитектуры.\par}
+{\NmCnvDescript\Verb|*.clexe|\\* скомпонованный исполняемый файл (executable)
+OpenCL. Имеет смысл только для OpenCL-устройств одной архитектуры.\par}
+{\NmCnvDescript\Verb|*.clout|\\* файл OpenCL, содержание которого средствами
+библиотеки установить не удалось.\par}
+{\NmCnvDescript\verb|*.log|\\* файл-журнал.\par}
+\end{samepage}

+ 620 - 0
documentation/oclh_doc.cls

@@ -0,0 +1,620 @@
+%% based on extarticle.cls
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{oclh_doc}[Non Standard LaTeX document class]
+\newcommand\@ptsize{}
+\newif\if@restonecol
+\newif\if@titlepage
+\@titlepagefalse
+\DeclareOption{a4paper}
+   {\setlength\paperheight {297mm}%
+    \setlength\paperwidth  {210mm}}
+\DeclareOption{a5paper}
+   {\setlength\paperheight {210mm}%
+    \setlength\paperwidth  {148mm}}
+\DeclareOption{b5paper}
+   {\setlength\paperheight {250mm}%
+    \setlength\paperwidth  {176mm}}
+\DeclareOption{letterpaper}
+   {\setlength\paperheight {11in}%
+    \setlength\paperwidth  {8.5in}}
+\DeclareOption{legalpaper}
+   {\setlength\paperheight {14in}%
+    \setlength\paperwidth  {8.5in}}
+\DeclareOption{executivepaper}
+   {\setlength\paperheight {10.5in}%
+    \setlength\paperwidth  {7.25in}}
+\DeclareOption{landscape}
+   {\setlength\@tempdima   {\paperheight}%
+    \setlength\paperheight {\paperwidth}%
+    \setlength\paperwidth  {\@tempdima}}
+\DeclareOption{8pt}{\renewcommand\@ptsize{8}}
+\DeclareOption{9pt}{\renewcommand\@ptsize{9}}
+\DeclareOption{10pt}{\renewcommand\@ptsize{10}}
+\DeclareOption{11pt}{\renewcommand\@ptsize{11}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{12}}
+\DeclareOption{14pt}{\renewcommand\@ptsize{14}}
+\DeclareOption{17pt}{\renewcommand\@ptsize{17}}
+\DeclareOption{20pt}{\renewcommand\@ptsize{20}}
+
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+\DeclareOption{openbib}{%
+  \AtEndOfPackage{%
+   \renewcommand\@openbib@code{%
+      \advance\leftmargin\bibindent
+      \itemindent -\bibindent
+      \listparindent \itemindent
+      \parsep \z@
+      }%
+   \renewcommand\newblock{\par}}%
+}
+\ExecuteOptions{a4paper,12pt,oneside,onecolumn,final}
+\ProcessOptions
+\def\EC@family#1#2#3#4#5{%
+  \DeclareFontShape{#1}{#2}{#3}{#4}%
+  {<5><6><7><8><9><10><10.95><12><14.4>%
+   <17.28><20.74><24.88><29.86><35.83><42.99><51.59>genb*#5}{}}
+\EC@family{T1}{cmr}{m}{n}{ecrm}
+\EC@family{T1}{cmr}{m}{sl}{ecsl}
+\EC@family{T1}{cmr}{m}{it}{ecti}
+\EC@family{T1}{cmr}{m}{sc}{eccc}
+\EC@family{T1}{cmr}{bx}{n}{ecbx}
+\EC@family{T1}{cmr}{b}{n}{ecrb}
+\EC@family{T1}{cmr}{bx}{it}{ecbi}
+\EC@family{T1}{cmr}{bx}{sl}{ecbl}
+\EC@family{T1}{cmr}{bx}{sc}{ecxc}
+\EC@family{T1}{cmr}{m}{ui}{ecui}
+\DeclareFontShape{OT1}{cmr}{m}{n}%
+     {<5><6><7><8><9><10><12>gen*cmr%
+      <10.95>cmr10%
+      <14.4>cmr12%
+      <17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmr17}{}
+\DeclareFontShape{OT1}{cmr}{m}{sl}%
+     {<5><6><7>cmsl8%
+      <8><9>gen*cmsl%
+      <10><10.95>cmsl10%
+      <12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmsl12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{it}%
+     {<5><6><7>cmti7%
+      <8>cmti8%
+      <9>cmti9%
+      <10><10.95>cmti10%
+      <12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmti12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{sc}%
+     {<5><6><7><8><9><10><10.95><12>%
+      <14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmcsc10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{ui}
+   {<5><6><7><8><9><10><10.95><12>%
+      <14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmu10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{b}{n}
+     {<5><6><7><8><9><10><10.95><12>%
+      <14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmb10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{n}
+   {<5><6><7><8><9>gen*cmbx%
+      <10><10.95>cmbx10%
+      <12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbx12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{sl}
+      {<5><6><7><8><9>%
+      <10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbxsl10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{it}
+      {<5><6><7><8><9>%
+      <10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbxti10%
+      }{}
+\input{size\@ptsize.clo}
+\RequirePackage{exscale}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\setlength\parskip{0\p@ \@plus \p@}
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+\setcounter{topnumber}{2}
+\renewcommand\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\renewcommand\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\renewcommand\textfraction{.2}
+\renewcommand\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\renewcommand\dbltopfraction{.7}
+\renewcommand\dblfloatpagefraction{.5}
+\if@twoside
+  \def\ps@headings{%
+      \let\@oddfoot\@empty\let\@evenfoot\@empty
+      \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+      \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+      \let\@mkboth\markboth
+    \def\sectionmark##1{%
+      \markboth {\MakeUppercase{%
+        \ifnum \c@secnumdepth >\z@
+          \thesection\quad
+        \fi
+        ##1}}{}}%
+    \def\subsectionmark##1{%
+      \markright {%
+        \ifnum \c@secnumdepth >\@ne
+          \thesubsection\quad
+        \fi
+        ##1}}}
+\else
+  \def\ps@headings{%
+    \let\@oddfoot\@empty
+    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\sectionmark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum \c@secnumdepth >\m@ne
+          \thesection\quad
+        \fi
+        ##1}}}}
+\fi
+\def\ps@myheadings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\@gobbletwo
+    \let\sectionmark\@gobble
+    \let\subsectionmark\@gobble
+    }
+  \if@titlepage
+  \newcommand\maketitle{\begin{titlepage}%
+  \let\footnotesize\small
+  \let\footnoterule\relax
+  \let \footnote \thanks
+  \null\vfil
+  \vskip 60\p@
+  \begin{center}%
+    {\LARGE \@title \par}%
+    \vskip 3em%
+    {\large
+     \lineskip .75em%
+      \begin{tabular}[t]{c}%
+        \@author
+      \end{tabular}\par}%
+      \vskip 1.5em%
+    {\large \@date \par}%       % Set date in \large size.
+  \end{center}\par
+  \@thanks
+  \vfil\null
+  \end{titlepage}%
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  \global\let\@thanks\@empty
+  \global\let\@author\@empty
+  \global\let\@date\@empty
+  \global\let\@title\@empty
+  \global\let\title\relax
+  \global\let\author\relax
+  \global\let\date\relax
+  \global\let\and\relax
+}
+\else
+\newcommand\maketitle{\par
+  \begingroup
+    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+    \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+    \long\def\@makefntext##1{\parindent 1em\noindent
+            \hb@xt@1.8em{%
+                \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+    \if@twocolumn
+      \ifnum \col@number=\@ne
+        \@maketitle
+      \else
+        \twocolumn[\@maketitle]%
+      \fi
+    \else
+      \newpage
+      \global\@topnum\z@   % Prevents figures from going at top of page.
+      \@maketitle
+    \fi
+    \thispagestyle{fancy}\@thanks
+  \endgroup
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  \global\let\@maketitle\relax
+  \global\let\@thanks\@empty
+  \global\let\@author\@empty
+  \global\let\@date\@empty
+  \global\let\@title\@empty
+  \global\let\title\relax
+  \global\let\author\relax
+  \global\let\date\relax
+  \global\let\and\relax
+}
+\def\@maketitle{%
+  \newpage
+  \null
+  \vskip 2em%
+  \begin{center}%
+  \let \footnote \thanks
+    {\LARGE \@title \par}%
+    \vskip 1.5em%
+    {\large
+      \lineskip .5em%
+      \begin{tabular}[t]{c}%
+        \@author
+      \end{tabular}\par}%
+    \vskip 1em%
+    {\large \@date}%
+  \end{center}%
+  \par
+  \vskip 1.5em}
+\fi
+\setcounter{secnumdepth}{3}
+\newcounter {part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+\renewcommand\thepart         {\@Roman\c@part}
+\renewcommand\thesection      {\@arabic\c@section}
+\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
+\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
+\newcommand\part{%
+   \if@noskipsec \leavevmode \fi\par
+   \addvspace{4ex}%
+   \@afterindentfalse
+   \secdef\@part\@spart}
+
+\def\@part[#1]#2{%
+    \ifnum \c@secnumdepth >\m@ne
+      \refstepcounter{part}%
+      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+    \else
+      \addcontentsline{toc}{part}{#1}%
+    \fi
+    {\parindent \z@ \raggedright
+     \interlinepenalty \@M
+     \normalfont
+     \ifnum \c@secnumdepth >\m@ne
+       \Large\bfseries \partname~\thepart
+       \par\nobreak
+     \fi
+     \huge \bfseries #2%
+     \markboth{}{}\par}%
+    \nobreak
+    \vskip 3ex
+    \@afterheading}
+\def\@spart#1{%
+    {\parindent \z@ \raggedright
+     \interlinepenalty \@M
+     \normalfont
+     \huge \bfseries #1\par}%
+     \nobreak
+     \vskip 3ex
+     \@afterheading}
+\newcommand\section{\@startsection {section}{1}{\z@}%
+                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
+                                   {2.3ex \@plus.2ex}%
+                                   {\normalfont\Large\bfseries}}
+\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\normalfont\large\bfseries}}
+\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\normalfont\normalsize\bfseries}}
+\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+                                    {3.25ex \@plus1ex \@minus.2ex}%
+                                    {-1em}%
+                                    {\normalfont\normalsize\bfseries}}
+\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+                                       {3.25ex \@plus1ex \@minus .2ex}%
+                                       {-1em}%
+                                      {\normalfont\normalsize\bfseries}}
+\if@twocolumn
+  \setlength\leftmargini  {2em}
+\else
+  \setlength\leftmargini  {2.5em}
+\fi
+\leftmargin  \leftmargini
+\setlength\leftmarginii  {2.2em}
+\setlength\leftmarginiii {1.87em}
+\setlength\leftmarginiv  {1.7em}
+\if@twocolumn
+  \setlength\leftmarginv  {.5em}
+  \setlength\leftmarginvi {.5em}
+\else
+  \setlength\leftmarginv  {1em}
+  \setlength\leftmarginvi {1em}
+\fi
+\setlength  \labelsep  {.5em}
+\setlength  \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty   -\@lowpenalty
+\@itempenalty     -\@lowpenalty
+\renewcommand\theenumi{\@arabic\c@enumi}
+\renewcommand\theenumii{\@alph\c@enumii}
+\renewcommand\theenumiii{\@roman\c@enumiii}
+\renewcommand\theenumiv{\@Alph\c@enumiv}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\textbullet}                       
+\newcommand\labelitemii{\normalfont\bfseries \textendash}
+\newcommand\labelitemiii{\textasteriskcentered}          
+\newcommand\labelitemiv{\textperiodcentered}             
+\newenvironment{description}
+               {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+                        \let\makelabel\descriptionlabel}}
+               {\endlist}
+\newcommand*\descriptionlabel[1]{\hspace\labelsep
+                                \normalfont\bfseries #1}
+\if@titlepage
+  \newenvironment{abstract}{%
+      \titlepage
+      \null\vfil
+      \@beginparpenalty\@lowpenalty
+      \begin{center}%
+        \bfseries \abstractname
+        \@endparpenalty\@M
+      \end{center}}%
+     {\par\vfil\null\endtitlepage}
+\else
+  \newenvironment{abstract}{%
+      \if@twocolumn
+        \section*{\abstractname}%
+      \else
+        \small
+        \begin{center}%
+          {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
+        \end{center}%
+        \quotation
+      \fi}
+      {\if@twocolumn\else\endquotation\fi}
+\fi
+\newenvironment{verse}
+               {\let\\\@centercr
+                \list{}{\itemsep      \z@
+                        \itemindent   -1.5em%
+                        \listparindent\itemindent
+                        \rightmargin  \leftmargin
+                        \advance\leftmargin 1.5em}%
+                \item\relax}
+               {\endlist}
+\newenvironment{quotation}
+               {\list{}{\listparindent 1.5em%
+                        \itemindent    \listparindent
+                        \rightmargin   \leftmargin
+                        \parsep        \z@ \@plus\p@}%
+                \item\relax}
+               {\endlist}
+\newenvironment{quote}
+               {\list{}{\rightmargin\leftmargin}%
+                \item\relax}
+               {\endlist}
+\newenvironment{titlepage}
+    {%
+      \if@twocolumn
+        \@restonecoltrue\onecolumn
+      \else
+        \@restonecolfalse\newpage
+      \fi
+      \thispagestyle{empty}%
+      \setcounter{page}\@ne
+    }%
+    {\if@restonecol\twocolumn \else \newpage \fi
+     \if@twoside\else
+        \setcounter{page}\@ne
+     \fi
+    }
+\newcommand\appendix{\par
+  \setcounter{section}{0}%
+  \setcounter{subsection}{0}%
+  \gdef\thesection{\@Alph\c@section}}
+\setlength\arraycolsep{5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+\skip\@mpfootins = \skip\footins
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+\renewcommand\theequation{\@arabic\c@equation}
+\newcounter{figure}
+\gdef\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+\newenvironment{figure}
+               {\@float{figure}}
+               {\end@float}
+\newenvironment{figure*}
+               {\@dblfloat{figure}}
+               {\end@dblfloat}
+\newcounter{table}
+\gdef\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+\newenvironment{table}
+               {\@float{table}}
+               {\end@float}
+\newenvironment{table*}
+               {\@dblfloat{table}}
+               {\end@dblfloat}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+\long\def\@makecaption#1#2{%
+  \vskip\abovecaptionskip
+  \sbox\@tempboxa{#1: #2}%
+  \ifdim \wd\@tempboxa >\hsize
+    #1: #2\par
+  \else
+    \global \@minipagefalse
+    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+  \fi
+  \vskip\belowcaptionskip}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg{2.55em}
+\newcommand\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+\newcommand\tableofcontents{%
+    \section*{\contentsname
+        \@mkboth{%
+           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
+    \@starttoc{toc}%
+    }
+\newcommand*\l@part[2]{%
+  \ifnum \c@tocdepth >-2\relax
+    \addpenalty\@secpenalty
+    \addvspace{2.25em \@plus\p@}%
+    \begingroup
+      \setlength\@tempdima{3em}%
+      \parindent \z@ \rightskip \@pnumwidth
+      \parfillskip -\@pnumwidth
+      {\leavevmode
+       \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+       \nobreak
+    \endgroup
+  \fi}
+\newcommand*\l@section[2]{%
+  \ifnum \c@tocdepth >\z@
+    \addpenalty\@secpenalty
+    \addvspace{1.0em \@plus\p@}%
+    \setlength\@tempdima{1.5em}%
+    \begingroup
+      \parindent \z@ \rightskip \@pnumwidth
+      \parfillskip -\@pnumwidth
+      \leavevmode \bfseries
+      \advance\leftskip\@tempdima
+      \hskip -\leftskip
+      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+    \endgroup
+  \fi}
+\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+\newcommand\listoffigures{%
+    \section*{\listfigurename
+      \@mkboth{\MakeUppercase\listfigurename}%
+              {\MakeUppercase\listfigurename}}%
+    \@starttoc{lof}%
+    }
+\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\newcommand\listoftables{%
+    \section*{\listtablename
+      \@mkboth{%
+          \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
+    \@starttoc{lot}%
+    }
+\let\l@table\l@figure
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+\newenvironment{thebibliography}[1]
+     {\section*{\refname
+        \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
+      \list{\@biblabel{\@arabic\c@enumiv}}%
+           {\settowidth\labelwidth{\@biblabel{#1}}%
+            \leftmargin\labelwidth
+            \advance\leftmargin\labelsep
+            \@openbib@code
+            \usecounter{enumiv}%
+            \let\p@enumiv\@empty
+            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+      \sloppy\clubpenalty4000\widowpenalty4000%
+      \sfcode`\.\@m}
+     {\def\@noitemerr
+       {\@latex@warning{Empty `thebibliography' environment}}%
+      \endlist}
+\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+\let\@openbib@code\@empty
+\newenvironment{theindex}
+               {\if@twocolumn
+                  \@restonecolfalse
+                \else
+                  \@restonecoltrue
+                \fi
+                \columnseprule \z@
+                \columnsep 35\p@
+                \twocolumn[\section*{\indexname}]%
+                \@mkboth{\MakeUppercase\indexname}%
+                        {\MakeUppercase\indexname}%
+                \thispagestyle{fancy}\parindent\z@
+                \parskip\z@ \@plus .3\p@\relax
+                \let\item\@idxitem}
+               {\if@restonecol\onecolumn\else\clearpage\fi}
+\newcommand\@idxitem{\par\hangindent 40\p@}
+\newcommand\subitem{\@idxitem \hspace*{20\p@}}
+\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+\renewcommand\footnoterule{%
+  \kern-3\p@
+  \hrule\@width.4\columnwidth
+  \kern2.6\p@}
+\newcommand\@makefntext[1]{%
+    \parindent 1em%
+    \noindent
+    \hb@xt@1.8em{\hss\@makefnmark}#1}
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\refname{References}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+\newcommand\today{\ifcase\month\or
+  January\or February\or March\or April\or May\or June\or
+  July\or August\or September\or October\or November\or December\fi
+  \space\number\day, \number\year}
+\setlength\columnsep{10\p@}
+\setlength\columnseprule{0\p@}
+\pagestyle{plain}
+\pagenumbering{arabic}
+\if@twoside
+\else
+  \raggedbottom
+\fi
+\if@twocolumn
+  \twocolumn
+  \sloppy
+  \flushbottom
+\else
+  \onecolumn
+\fi
+\endinput
+%%

+ 433 - 0
documentation/opencl_helpers_documentation-english.tex

@@ -0,0 +1,433 @@
+\documentclass[%showframe%
+]{oclh_doc}
+\usepackage{fix-cm}%   fix of Computer Modern font DO NOT MOVE!!!
+\usepackage{calc}%     simple arithmetic in expressions
+\usepackage{etoolbox}% some Latex interfaces
+\usepackage{longtable,multirow}% tables
+\usepackage{adjustbox,%
+            placeins, % processing of float objects
+            caption}  %
+%
+% page geometry
+%
+\usepackage[
+    top    = 0.06734007\paperheight,
+    bottom = 0.06734007\paperheight,
+    right  = 0.1190476\paperwidth,
+    left   = 0.0952381\paperwidth
+]{geometry}
+%
+% language and fonts
+%
+\usepackage{amsmath,amsfonts,amssymb,xfrac}
+\usepackage[cmintegrals,cmbraces]{newtxmath}
+\usepackage{xltxtra,polyglossia,csquotes}
+\usepackage{verbatim,fancyvrb,framed}
+\usepackage{relsize}
+\setmainlanguage{english}
+\setotherlanguage{russian}
+\setkeys{russian}{babelshorthands=true}
+\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text}
+\input{fonts/font_settings-IBM_Plex.tex}
+% \input{fonts/font_settings-Computer_Modern.tex}
+% \input{fonts/font_settings-my_fonts.tex}
+
+%
+% paragraphs and align
+%
+\usepackage{indentfirst}
+\frenchspacing\sloppy\raggedbottom
+\setlength{\parindent}{0.0604762\paperwidth}%
+%%%%% additional colontitles settings
+\RequirePackage{fancyhdr}
+\fancyhf{}\renewcommand{\headrulewidth}{0pt}
+\fancyfoot{}
+\fancyfoot[R]{\thepage}
+\pagestyle{fancy}
+%
+% index
+%
+\usepackage[xindy]{imakeidx}
+\makeindex[options = -C utf8 -M texindy -M index_style_and_order ]
+%
+% references
+%
+\RequirePackage{hyperref}
+\RequirePackage{xcolor}
+\definecolor{DarkBlue}{rgb}{0,0,0.5}
+\hypersetup{colorlinks=true,       linkcolor={black},
+            urlcolor  =DarkBlue, citecolor={black}}
+%
+% lists
+%
+\usepackage{enumitem}
+
+\newenvironment{CodePar}%
+    {\Verbatim[samepage=true,frame=single]}%
+    {\endVerbatim}%
+%
+\newenvironment{CodeParWithCC}[1]
+    {\Verbatim[samepage=true,frame=single,commandchars=#1]}
+    {\endVerbatim}
+%
+\newenvironment{ImpNote}
+    {\setlength{\parindent}{0.0604762\paperwidth}%
+     \setlength{\LTleft}{\parindent}%
+     \setlength{\LTpre}{\parsep}\setlength{\LTpost}{\parsep}%
+     \begin{longtable}{|p{\linewidth-\tabcolsep-1\parindent}}
+     \noindent\textsf{Important warning:}}
+    {\end{longtable}}
+%
+\newcommand{\SetLenVarWithWidth}[2]{%
+ \ifdefined #1 \else%
+  \newlength{#1}%
+ \fi%
+ \settowidth{#1}{#2}%
+}%
+\newcommand{\NmCnvDescript}%
+    {\addtolength{\leftskip}{0.0604762\paperwidth}%
+     \setlength{\parindent}{-0.0604762\paperwidth}}%
+%
+
+\newcommand{\verbI}[1]{\textit{\Verb|#1|}}%
+\newcommand{\verbIU}[1]{\underline{\smash{\textit{\Verb|#1|}}}}
+
+\title{OpenCL\_helpers library}
+\author{hk@r4in.tk\\ mns@r4in.tk}
+\makeindex
+\begin{document}
+\maketitle
+
+\section{Introduction}
+
+The OpenCL\_helpers library is designed to simplify the programming of
+multithreaded applications using GPGPU (General-purpose computing on graphics
+processing units). The library does not cover all of needs of the programming of
+applications using GPGPU, but it had been written to simplify the making of
+applications using multilevel (hierarchical) parallelism on one computer. In
+other words, it allows to parallelise the task into threads on a main computer
+(CPU) and than parallelise the task inside each GPGPU-device, dividing
+GPU-threads into squads performing different subtasks.
+
+While designing the library it was assumed that each CPU-thread uses its own
+separate GPGPU-device, but it is not prohibited to use the same GPGPU-device in
+two or more CPU-threads. Parallelism at the CPU level is provided by POSIX
+Threads and parallelism at the GPGPU level is provided by the library.
+
+The library consists of four parts, not all of which are directly related to
+parallelism and which could be used independently of each other.
+
+The first part is OpenCL programs build tools~(s.\ref{sec:buildutils}). Build
+tools allow to build OpenCL programs from the command line and view the build
+result without writing and executing another application.
+
+The second part~(s.\ref{sec:libraryusing}) is the CPU-functions of the
+OpenCL\_helpers library and syntax which allows to make header-files common for
+CPU and GPGPU programs.
+
+The third part~(s.\ref{sec:memalloc}) makes up for the lack of memory management
+tools in OpenCL C and provides instruments for GPGPU memory allocation and
+deallocation, heap diagnostics and pointer reinterpretation.
+
+The fourth part is the GPGPU-functions which allow to organize parallelism
+inside GPGPU, dividing whole amount of GPGPU-threads into squads engaged in
+performing their own tasks.
+
+\subsection{Build and install}
+\label{sec:build_n_install}
+
+\subsubsection{Prerequisites}
+\label{subsec:prerequisites}
+
+It's supposed that you have:
+
+\begin{enumerate}[leftmargin=2\parindent]
+ \item A computer with OS Linux installed.
+ \item An installed and ready to work C compiler.
+ \item The installed and available standard C language library (libc).
+ \item An installed OpenCL software of version 1.2 or later from any vendor.
+\end{enumerate}
+
+\subsubsection{Getting the source code of the OpenCL\_helpers library}
+\label{subsec:getting_source}
+
+A copy of the source code of the OpenCL\_helpers library can be downloaded from
+the address
+\href{https://ggs.void.r4in.tk/hk/OpenCL_helpers/archive/master.tar.gz}%
+{\Verb|https://ggs.void.r4in.tk/hk/OpenCL\_helpers/archive/master.tar.gz|}
+than unpacked into a suitable directory.
+
+Besides of that, if VCS Git~(\href{https://git-scm.com}%
+{\Verb|https://git-scm.com|}) is installed, a copy
+of the source code of the library could be obtained with the following command:
+\par
+\indent\indent\verb|git clone |%
+\href{https://ggs.void.r4in.tk/hk/OpenCL_helpers.git}%
+{\Verb|https://ggs.void.r4in.tk/hk/OpenCL\_helpers.git|}
+
+
+\subsubsection{Build}
+
+To build with default settings it's necessary to navigate to the
+\verb|OpenCL_helpers| directory and run the command\par
+\indent\indent\verb|make|\par
+\noindent%
+It is acceptable to use option \verb|-j| for multithreaded build. If the
+\verb|make| command completed without errors, the following files would appear
+in the \verb|OpenCL_helpers/build| directory:\par
+\indent\indent\verb|liboclh.so.|\verbI{I}\verb|.|\verbI{J}%
+\verb|    oclh_br    oclh_cr    oclh_lr|\par
+\noindent%
+and a few \verb|*.o| subdirectories containing object files. In the name of the
+first file \verbI{I} is the major version of the library and \verbI{J} is the
+minor version.
+
+Each file could be built separately with commands:\par
+\indent\indent\verb|make oclh_library|\par
+\indent\indent\verb|make oclh_builder|\par
+\indent\indent\verb|make oclh_compiler|\par
+\indent\indent\verb|make oclh_linker|\par
+If it was necessary, the library could be built for debugging with the command:
+\par
+\indent\indent\verb|make debug|
+
+\subsubsection{Installation}
+
+Installation is performed by the command:\par
+\indent\indent\verb|make install|\par
+\noindent%
+As the result the \verb|~/opt/oclh| directory is created, where executable
+files, the library file and header files are copied into the \verb|bin|,
+\verb|lib|, \verb|include| subdirectories respectively. After that it is
+advisable to add the \verb|~/opt/oclh/bin| directory to the \verb|PATH|
+environment variable and the \verb|~/opt/oclh/lib| directory to the
+\verb|LD_LIBRARY_PATH| environment variable.
+
+The destination path can be changed with the command:\par
+\indent\indent\verb|make PRFX_PATH=|\verbI{destination\_path}\verb| install|
+
+\subsubsection{Uninstallation}
+
+Uninstallation is performed by the command:\par
+\indent\indent\verb|make uninstall|\par
+\noindent or\par
+\indent\indent\verb|make PRFX_PATH=|\verbI{destination\_path}\verb| uninstall|
+\par
+\noindent%
+if the library had been installed in a non-default directory.
+
+\subsubsection{Documentation}
+
+The documentation of the OpenCL\_helpers library is built separately. To build
+the documentation, it's necessary to have the \XeTeX /\XeLaTeX\ typesetting
+system or another \TeX /\LaTeX-compatible system. The \XeTeX\ system and related
+packages are provided within the \TeX
+~Live~distribution~(\href{https://www.tug.org/texlive/}%
+{\Verb|https://www.tug.org/texlive/|}). Using a system other than \XeTeX\ may
+require changes in the source code of the documentation.
+
+In addition to the typesetting system itself, it's necessary to have a number of
+packages, for example, xindy for composition of the index. All packages used for
+preparation of the documentation are freely available as part of the \TeX
+~Live~distribution.
+
+The documentation build itself is performed in the
+\verb|OpenCL_helpers/documentation| directory by running build script\par
+\indent\indent\verb|./build_script|\par
+\noindent%
+If no errors occurred during the execution of the current script, the following
+files would appear in the \verb|OpenCL_helpers/documentation/build| directory:
+\par
+\indent\indent\verb|opencl_helpers_documentation-russian.pdf|\par
+\indent\indent\verb|opencl_helpers_documentation-english.pdf|\par
+\noindent%
+which contain the documentation in Russian and English languages, respectively.
+
+The build uses fonts of the IBM~Plex family, but it is possible to return to the
+basic Computer~Modern family by uncommenting the line\par
+\indent\indent\verb|\input{fonts/font_settings-Computer_Modern.tex}|\par
+\noindent in the preamble of the documentation source code.
+
+\subsection{Log file format}
+\label{subsec:logformat}
+
+\index{log file format}%
+The library tools allow maintain a log in log files about events occurring in
+an application, in addition, the library itself, if necessary, writes to the
+log file. Description of logging functions is given
+in~s.\ref{subsec:logfunctions}.
+
+The standard log file entry looks like\par
+\begin{CodeParWithCC}{\\\{\}}
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} \textit{entry\_content}
+\end{CodeParWithCC}
+
+\noindent%
+where
+
+{%
+\setlength{\leftskip}{0pt}%
+\setlength{\LTpre}{\smallskipamount}\setlength{\LTpost}{\smallskipamount}%
+\setlength{\LTleft}{2\parindent-\tabcolsep}
+\SetLenVarWithWidth{\Acol}{\verbI{YYYY}}%
+\SetLenVarWithWidth{\Bcol}{--}%
+\begin{longtable}%
+    {p{\Acol}p{\Bcol}p{\linewidth-\LTleft-\Acol-\Bcol-5\tabcolsep}}
+\verbI{YYYY}&--&year written in four decimal digits;\\
+\verbI{MM}&--&month of the year written in two decimal digits from 01 to 12;\\
+\verbI{DD}&--&day of the month written in two decimal digits from 01 to 31;\\
+\verbI{hh}&--&hour of the day written in two decimal digits from 00 to 23;\\
+\verbI{mm}&--&minute of the hour written in two decimal digits from 00 to 59;\\
+\verbI{ss}&--&second of the minute written in two decimal digits from 00 to 59;
+\\
+\verbI{HHHH}&--&the last two bytes of an address of the working configuration of
+the GPGPU device (workset, for details see s.\ref{subsec:structures}) written in
+four hexadecimal digits.
+\end{longtable}
+}
+
+\noindent%
+\verbI{entry\_content}~--~can be any text which passed to a logging function,
+but the library itself obeys, if possible, the next conventions:
+\begin{enumerate}
+  \item Information related to OpenCL instances is recorded as
+  \verbI{instance\_type}\verb|_0x|\verbI{HHHH}, where \verbI{HHHH}~--~the last
+  two bytes of the instance address, written in four hexadecimal digits. So, for
+  example, a GPGPU device could be recorded as \verb|dev_0x2a78|, and a platform
+  as \verb|platform_0xf190|. An exhaustive list of OpenCL instances is given in
+  the OpenCL specifications.
+  \item As a delimiter of information blocks in the entries and marking the
+  relativity of such blocks, the symbol <<\verb+|+>> is used. So, the
+  entry\nopagebreak
+  \begin{CodePar}
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  dev_0xf260 | ...
+  \end{CodePar}
+  means that entry describes event related to OpenCL context \verb|0x9f60| using 
+  GPGPU device \verb|0xf260|.
+  \item In case of recording information that is an explicitation, an additional space is put before it, for example:\nopagebreak
+  {\scriptsize
+  \begin{CodePar}
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 | Reference count: 1
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 | Number of devices: 1
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 | Device ID(s): 0x1acf260
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  dev_0xf260 | GPU: 15 units/17...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  dev_0xf260 | Memory: 8116.43...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  dev_0xf260 | Vendor: NVIDIA Corp...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  dev_0xf260 | Model: GeForce GT...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 | Context properties:
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  Platform: 0xf190
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |   platform_0xf190 | Profile: FULL_PROFILE
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |   platform_0xf190 | Version: OpenCL 1...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |   platform_0xf190 | Name: NVIDIA CUDA
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |   platform_0xf190 | Vendor: NVIDIA Corp...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |   platform_0xf190 | Extensions: cl_khr...
+2019-06-03 15:42:47 ws_0x9c00 context_0x9f60 |  Is user responsible for sync: Undefined (presumable No)
+  \end{CodePar}
+  }
+  \item If an error occurred during the execution of the library function, there
+  would be added to the log an entry starting with \verb|oclerr:| and containing information about all function calls from the library to the OpenCL API. So, the entry\nopagebreak
+  \begin{CodeParWithCC}{\\\{\}}
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} oclerr:
+_ghf_getBuildStatus/clGetProgramBuildInfo/CL_PROGRAM_BUILD_STATUS
+returned error -3 - CL_COMPILER_NOT_AVAILABLE
+  \end{CodeParWithCC}
+  means that the \verb|_ghf_getBuildStatus| function called the OpenCL API
+  function \verb|clGetProgramBuildInfo| with the argument
+  \verb|CL_PROGRAM_BUILD_STATUS| and received as a response the \verb|-3| error
+  code, which stands for \verb|CL_COMPILER_NOT_AVAILABLE|.
+\end{enumerate}
+
+Given that OpenCL instance addresses are unique for one application run, it is
+highly likely that the combination of the name of the instance and the last two
+bytes of its address is also unique. Therefore, the use of these conventions
+allows, with substring filtering, obtain the necessary information from the log
+file for a particular OpenCL instance.
+
+In addition to the standard log entry there is also the header entry, which
+looks like\par
+{\small%
+\begin{CodeParWithCC}{\\\{\}}
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} __________
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} \textit{Title_text}
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} ~~~~~~~~~~
+\end{CodeParWithCC}
+}\par
+\noindent and the delimiter entry, which looks like\par
+{\small%
+\begin{CodeParWithCC}{\\\{\}}
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} ____________________________________________________
+\textit{YYYY}-\textit{MM}-\textit{DD} \textit{hh}:\textit{mm}:\textit{ss} ws_0x\textit{HHHH} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+\end{CodeParWithCC}
+}
+
+\input{name_conventions-english.tex}
+
+\section{OpenCL programs build tools}
+\label{sec:buildutils}
+
+The library includes three executable files:\nopagebreak\par
+\begin{itemize}[leftmargin=1.75\parindent]
+  \item\verb|oclh_cr| -- compiles an OpenCL program into an OpenCL object;
+  \item\verb|oclh_lr| -- links OpenCL objects;
+  \item\verb|oclh_br| -- completly builds an OpenCL program.
+\end{itemize}\nopagebreak\par
+During the execution of these programs, a detailed diagnostic log is being
+maintained in the \verb|oclh_*r.log| file (according to the name of the tool),
+where excessive information is stored on all available GPGPU devices, used
+platforms, and contexts created for build. In fact, you can run, for example,
+\verb|oclh_сr| with any input file, even with itself as
+\verb|./oclh_сr oclh_сr|. The input file, of course, will not be built into an
+OpenCL object, but the \verb|oclh_сr.log| log file will contain complete
+information on GPGPU devices found in the system. The log file format is
+human-readable, adapted to search for substrings using the \verb|grep| command
+and analogues. The log file format is described~in~s.\ref{subsec:logformat}.
+
+Let us take a look at the use cases for each of these tools.
+
+\input{tools_compiler-english.tex}
+\input{tools_linker-english.tex}
+\input{tools_builder-english.tex}
+
+\section{Using the OpenCL\_helpers library. Structures, functions and headers}
+\label{sec:libraryusing}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\subsection{Structures}
+\label{subsec:structures}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\subsubsection{Main structure of the working configuration}
+\label{subsec:workset}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\subsection{Logging functions}
+\label{subsec:logfunctions}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\subsection{Common header files for CPU and GPGPU code}
+\label{subsec:sharedheaders}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\section{Memory management and pointer reinterpretation in OpenCL C programs}
+\label{sec:memalloc}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\section{Parallelism inside GPU}
+\label{sec:squadmodel}
+
+Stub. The section will be completed after sufficient testing of functionality.
+
+\let\originalstyle=\thispagestyle
+\def\thispagestyle#1{}
+\printindex
+\let\thispagestyle=\originalstyle
+
+\tableofcontents
+
+\end{document}

+ 0 - 0
documentation/opencl_helpers_documentation-russian.tex


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác