Компілятори Intel Для чого були потрібні нові компілятори
Компілятори Intel C++ та Fortran та бібліотека MKL
Поряд із стандартними для Linux компіляторами GNU, на кластерах обчислювального комплексу НДЦ встановлено компілятори Intel C++ і Fortran. На даний час (початок 2006 року) на всіх кластерах встановлено компілятори версії 9.1. Ця сторінка присвячена опису найбільш важливих опцій та налаштувань цих компіляторів, а також їх основних відмінностей від компіляторів GNU. Сторінка орієнтована, переважно, на користувачів кластерів НИВЦ МГУ, але може бути корисна й іншим російськомовним користувачам. Тут не порушуються питання, пов'язані з компіляцією для платформи IA-64.
Також на всіх кластерах встановлена бібліотека Intel Kernel Math Library(MKL) Версія 8.0.2. Бібліотека знаходиться в каталозі /usr/mkl. Звертаємо увагу на те, що в каталозі lib доступні підкаталоги 32, 64 та em64t. На кластері Ant необхідно використовувати бібліотеки з підкаталогу em64t, а на інших кластерах - з підкаталогу 32. Вся необхідна документація та приклади можуть бути отримані з каталогу /usr/mkl/doc.
Навіщо знадобилися нові компілятори?
Необхідність нових компіляторів виникла, головним чином, а) для підтримки програмування мовою Фортран 90, а також б) для більш потужної оптимізації програм мовою Фортран, ніж забезпечує компілятор g77, що використовує трансляцію в мову Сі і потім компіляцію за допомогою gcc.
Цим вимогам задовольняють компілятори PGI (Portland Group), але компанія-розробник відмовилася постачати їх до Росії.
Як користуватися?
Компілятори Intel викликаються за допомогою команд icc(C або C ++), icpc(C++) та ifort(Фортран 77/90). Команди mpicc, mpiCC і mpif77 для компіляції та складання MPI-програм також налаштовані використання компіляторів Intel.
Зберігається також можливість користуватися компіляторами GNU за допомогою mpigcc, mpig++ і mpig77 (Фортран 90 не підтримується).
Вхідні файли
За промовчанням файли з розширенням .cppі .cxxвважаються вихідними текстами мовою С++, файли з розширенням .c- вихідними текстами мовою Сі, а компілятор icpc також компілює файли.c як вихідні тексти С++.
Файли з розширеннями .f, .ftnі .forрозпізнаються як вихідні тексти мовою Фотран, з фіксованою формою запису, а файли .fppі .Fдодатково пропускаються через препроцесор мови Фортран. Файли із розширенням .f90вважаються вихідними текстами Фортран 90/95 із вільною формою запису. Явним чином можна встановити фіксовану або вільну форму запису Фортран-програм за допомогою опцій -FIі -FRвідповідно.
Файли із розширенням .sрозпізнаються як код мовою асемблера для IA-32.
Характеристики компіляторів Intel
Тут ми наводимо характеристики компіляторів Інтел, як вони заявлені розробником у посібнику користувача з деякими коментарями.
- Значна оптимізація
мабуть, тут мають на увазі оптимізація коду ще високому рівні, тобто. насамперед, різні перетворення циклів, що з більшим чи меншим успіхом роблять майже всі компілятори - Оптимізація обчислень з плаваючою точкою
мабуть, мається на увазі насамперед максимальне використання команд, реалізованих на апаратному рівні - Міжпроцедурні оптимізації
тобто. глобальна оптимізація всієї програми, на відміну від звичайної оптимізації, яка стосується лише коду конкретних функцій - Оптимізація на базі профілів
тобто. можливість прогнати програму в тестовому режимі, зібрати дані про час проходження тих чи інших фрагментів коду всередині функцій, що часто використовуються, а потім використовувати ці дані для оптимізації - Підтримка системи команд SSE у процесорах Pentium III
Примітка: для обчислювальних завдань більший інтерес представляють команди SSE2, тобто. векторні команди над 64-розрядними речовими числами, але вони підтримуються тільки в процесорах Pentium 4, яких у нашому розпорядженні поки що немає - Автоматична векторизація
тобто. знову ж таки, використання команд SSE та SSE2, що вставляються автоматично компілятором - Підтримка OpenMP для програмування на SMP-системах
на кластері рекомендується переважно користуватися інтерфейсом MPI; широке використання OpenMP на кластері не передбачається і таких експериментів поки що не проводилося; але, мабуть, має сенс користуватися бібліотеками (BLAS та інших.), розпаралеленими для пам'яті. - Передвиборка даних
тобто. мабуть, використання команд попереднього завантаження з пам'яті в кеш даних, які знадобляться через деякий час - "Диспетчеризація" коду для різних процесорів
тобто. можливість генерації коду для різних процесорів в одному файлі, що дозволяє використовувати переваги нових процесорівдля досягнення на них найбільшої продуктивності, за збереження двійкової сумісності програм з більш ранніми процесорами; на нашому кластері це поки що не актуально, т.к. використовуються тільки процесори Pentium III, а також не передбачається передача та запуск на інших машинах програм, відкомпілюваних на кластері
Основні опції компіляторів
Найцікавішими, звичайно, є опції оптимізації коду. Більшість опцій є загальними для компіляторів С++ та Фортран. Більше докладний описопцій в англомовних посібниках користувача.
Рівні оптимізації | |
---|---|
Опція | Опис |
-O0 | Вимикає оптимізацію |
-O1 або -O2 | Базова оптимізація швидкість роботи. Вимикається інлайн-вставка бібліотечних функцій. Для компілятора С++ ці опції дають однакову оптимізацію, компілятора Фортрана опція -O2 краще, т.к. включає ще розкручування циклів. |
-O3 | Більш сильна оптимізація, включаючи перетворення циклів, передвиборку даних, використання OpenMP. На деяких програмах може не гарантуватись підвищена продуктивність у порівнянні з -O2. Має сенс використовувати разом із опціями векторизації -xKі -xW. |
-unroll[n] | Включає розкручування циклів до n разів. |
Оптимізації під конкретний процесор | |
Опція | Опис |
-tpp6 | Оптимізація для процесорів Penitum Pro, Pentium II та Pentium III |
-tpp7 | Оптимізація для процесорів Penitum 4 (ця опція включена за промовчанням для компілятора на IA-32) |
-xM | Генерація коду з використанням розширень MMX, специфічних для процесорів Pentium MMX, Pentium II та пізніших |
-xK | Генерація коду з використанням розширень SSE, специфічних для процесорів Pentium III |
-xW | Генерація коду з використанням розширень SSE2, специфічних для процесорів Pentium 4 |
Міжпроцедурна оптимізація | |
-ip | Включається міжпроцедурна оптимізація всередині одного файлу. Якщо при цьому вказати опцію -ip_no_inlining, то відключаються інлайн-вставки функцій. |
-ipo | Включається міжпроцедурна оптимізація між різними файлами |
Оптимізації з використанням профілів | |
-prof_gen | Генерується "профілювальний" код, який буде використаний для профілювання, тобто. збору даних про частоту проходження тих чи інших місць у програмі |
-prof_use | Здійснюється оптимізація на основі даних, отриманих на етапі профілювання. Має сенс використовувати разом із опцією міжпроцедурної оптимізації -ipo. |
Розпаралелювання для SMP-систем | |
-openmp | Включається підтримка стандарту OpenMP 2.0 |
-parallel | Включається автоматичне розпаралелювання циклів |
Продуктивність
Згідно з результатами прогону тестів SPEC CPU2000, опублікованими на сервері ixbt.com, компілятори Intel версії 6.0 практично скрізь виявилися кращими, ніж компілятори gcc версій 2.95.3, 2.96 і 3.1, і PGI версії 4.0.2. Ці тести проводились у 2002 році на комп'ютері з процесором Pentium 4/1.7 ГГц та ОС RedHat Linux 7.3.
Згідно з результатами тестів, проведених компанією Polyhedron, компілятор Intel Fortran версії 7.0 майже скрізь виявився кращим порівняно з іншими компіляторами Fortran 77 для Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Лише у деяких тестах компілятор Intel незначно програє компіляторам Absoft, NAG та Lahey. Ці тести були проведені на комп'ютері із процесором Pentium 4/1.8 ГГц та ОС Mandrake Linux 8.1.
Компілятори Intel версії 9.1 також випереджають за продуктивністю компіалтори gcc, і показують продуктивність порівнянну з Absoft, PathScale і PGI.
Ми будемо вдячні тим користувачам та читачам, які надішлють нам дані щодо впливу вибору компілятора (GCC або Intel) та опцій оптимізації на швидкість роботи на їхніх реальних завданнях.
Бібліотеки
Компілятор мови Сі використовує runtime-бібліотеку, розроблену в рамках проекту GNU ( libc.a).
Разом із компілятором Intel C++ поставляються такі бібліотеки:
- libcprts.a- runtime-бібліотека мови С++ розробки Dinkumware.
- libcxa.a- Додаткова runtime-бібліотека для С++ розробки Intel.
- libimf.a- бібліотека математичних функцій розробки Intel, до якої входять оптимізовані та високоточні реалізації тригонометричних, гіперболічних, експоненційних, спеціальних, комплексних та інших функцій (докладніше див. список функцій).
- libirc.a- runtime-підтримка профілювання (PGO) та "диспетчеризації" коду залежно від процесора (див. вище).
- libguide.a- Реалізація OpenMP.
У цьому переліку перераховані статичних бібліотек, але більшість їх є також динамічні, тобто. підключаються під час запуску, варіанти ( .so).
Разом із компілятором Фортрана поставляються такі бібліотеки: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.aтакож використовується бібліотека математичних функцій libimf.a.
Складання виконуваного файлу
Підключення бібліотек можливе статичне (під час збирання) або динамічне (під час запуску програми). Динамічний підхід дозволяє зменшити розмір файлу, дозволяє розділяти в пам'яті одну і ту ж копію бібліотеки, але для цього необхідно встановити на кожному вузлі, де будуть запускатися програми, повний набір динамічних бібліотек, що використовуються.
Таким чином, якщо Ви встановили компілятор Intel на своїй машині з Linux і хочете запускати зібрані файли, що виконуються на інших машинах, то потрібно або використовувати статичну збірку (що простіше) або скопіювати на ці машини динамічні бібліотеки Intel (звичайно з директорії виду /opt/intel /compiler70/ia32/lib) в одну з директорій, перерахованих у файлі /etc/ld.so.conf, а також подбати про те, щоб на цих машинах було встановлено однаковий набір динамічних бібліотек GNU/Linux.
За замовчуванням всі бібліотеки розробки Intel (крім libcxa.so) підключаються статично, а всі системні бібліотеки Linux та бібліотеки GNU підключаються динамічно. За допомогою опції -staticможна змусити збирач (редактор зв'язків) підключити всі бібліотеки статично (що збільшить обсяг виконуваного файлу), а за допомогою опції -i_dynamicможна динамічно підключати всі бібліотеки розробки Intel.
При підключенні додаткових бібліотек за допомогою опції виду -lБібліотекаможе знадобитися використовувати опцію -Lдиректорія, щоб задати шлях, де розміщуються бібліотеки.
За допомогою опцій -Bstaticі -Bdynamicявно можна задавати динамічне або статичне підключення кожної з бібліотек, заданих у командному рядку.
За допомогою опції -cскладання виконуваного файлу відключається і виконується лише компіляція (генерація об'єктного модуля).
Спільне використання модулів на Фортрані та Сі
Щоб спільно використовувати модулі, написані мовами Фортран і Сі, потрібно узгодити назву процедур в об'єктних модулях, передачу параметрів, а також доступ до глобальних змінних, якщо такі є.
За промовчанням компілятор Intel Fortran переводить імена процедур у нижній регістр і додає в кінець імені знак підкреслення. Компілятор Сі ніколи не змінює імена функцій. Таким чином, якщо ми хочемо з модуля на Фортрані викликати функцію або процедуру FNNAME, реалізовану на Сі, то в модулі на Сі вона має іменуватися fnname_.
Компілятор Фортрана підтримує опцію -nus [ім'я файлу], яка дозволяє відключати додавання символів підкреслення до внутрішніх імен процедур. Якщо задано ім'я файлу, це робиться тільки для імен процедур, перерахованих у заданому файлі.
За умовчанням, на Фортрані параметри передаються за посиланням, а Сі — завжди за значенням. Таким чином, при виклику Фортран-процедури з модуля на Сі ми повинні як параметри передавати покажчики на відповідні змінні, що містять значення фактичних параметрів. При написанні на Сі функції, яку треба буде викликати з модуля на Фортрані, ми повинні описувати формальні параметри як покажчики відповідних типів.
У модулях на Сі можливе використання COMMON-блоків, визначених усередині модулів на Фортрані (докладніше про це див. Intel Fortran Compiler User's Guide, розділ Mixing C and Fortran).
Спільне використання компіляторів Intel та GCC
Об'єктні модулі мовою Сі, отримані компілятором Intel C++, сумісні з модулями, отриманими компілятором GCC та бібліотекою GNU для мови Сі. Таким чином, ці модулі можуть спільно використовуватися в одній програмі, яка збирається за допомогою команд icc або gcc, але для коректного підключення бібліотек Intel рекомендується використовувати icc.
Компілятор Intel підтримує низку нестандартних розширень мови Сі, які використовуються в рамках проекту GNU і підтримуються компілятором GCC (але не всі з них, див. тут).
Про сумісність об'єктних модулів мовами С++ та Фортран у посібнику користувача нічого не сказано, мабуть, вона не підтримується.
Підтримка стандартів
Компілятор Intel C++ Compiler 7.0 for Linux підтримує стандарт мови Сі ANSI/ISO (ISO/IEC 9899/1990). Можливе встановлення суворої сумісності зі стадартом ANSI C ( -ansi) або розширеного діалекту ANSI C ( -Xa). При використанні опції -C99
Попередній номер журналу ми обговорювали продукти сімейства Intel VTune Performance Analyzer - засобів аналізу продуктивності, які користуються заслуженою популярністю у розробників додатків і дозволяють виявляти в коді додатків команди, на які витрачається занадто багато ресурсів процесора, що дає розробникам можливість виявити та усунути потенційні вузькі місця, пов'язані з подібними ділянками коду, прискоривши цим процес розробки додатків. Зазначимо, однак, що продуктивність додатків багато в чому залежить від того, наскільки ефективні компілятори, що застосовуються при їх розробці, і які особливості апаратного забезпеченнявони використовують при генерації машинного коду.
Останні версії компіляторів Intel Intel C++ та Intel Fortran для Windows та Linux дозволяють отримати виграш у продуктивності додатків для систем на базі процесорів Intel Itanium 2, Intel Xeon та Intel Pentium 4 до 40% порівняно з існуючими компіляторами від інших виробників за рахунок використання таких особливостей зазначених процесорів, як Hyper-Threading.
До відмінностей, пов'язаних з оптимізацією коду даним сімейством компіляторів, слід віднести застосування стека для виконання операцій з плаваючою точкою, міжпроцедурну оптимізацію (Interprocedural Optimization, IPO), оптимізацію відповідно до профілю програми (Profile Guided Optimization, PGO), попереднє завантаження даних в ке (Data prefetching), яка дозволяє уникнути затримки, пов'язаної з доступом до пам'яті, підтримку характерних особливостей процесорів Intel (наприклад, розширень для потокової обробки даних Intel Streaming SIMD Extensions 2, характерних для Intel Pentium 4), автоматичне розпаралелювання виконання коду, створення додатків, виконуються на кількох різних типахпроцесорів при оптимізації одного з них, засоби «пророкування» наступного коду (branch prediction), розширену підтримку роботи з потоками виконання.
Зазначимо, що компілятори Intel застосовуються у таких відомих компаніях, як Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM. За даними незалежного тестування, проведеного рядом компаній, продуктивність компіляторів Intel значно перевищує продуктивність компіляторів інших виробників (див., наприклад, http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf.pdf).
Нижче ми розглянемо деякі особливості останніх версійкомпіляторів Intel для настільних та серверних операційних систем.
Компілятори для платформи Microsoft Windows
Intel C++ Compiler 7.1 для Windows
Intel C++ Compiler 7.1 – це компілятор, випущений на початку цього року, який дозволяє досягти високого ступеня оптимізації коду для процесорів Intel Itanium, Intel Itanium 2, Intel Pentium 4 та Intel Xeon, а також для процесора Intel Pentium M, що використовує технологію Intel Centrino та призначеного для застосування у мобільних пристроях.
Зазначений компілятор повністю сумісний із засобами розробки Microsoft Visual C++ 6.0 та Microsoft Visual Studio .NET: він може бути вбудований у відповідні середовища розробки.
Цей компілятор підтримує стандарти ANSI та ISO C/C++.
Intel Fortran Compiler 7.1 для Windows
Компілятор Intel Fortran Compiler 7.1 для Windows, який також випущений на початку поточного року, дозволяє створювати оптимізований код для процесорів Intel Itanium, Intel Itanium 2, Intel Pentium 4 та Intel Xeon, Intel Pentium M.
Цей компілятор повністю сумісний із засобами розробки Microsoft Visual C++ 6.0 та Microsoft Visual Studio .NET, тобто може бути вбудований у відповідні середовища розробки. Крім того, цей компілятор дозволяє вести розробку 64-розрядних програм для операційних систем, що виконуються на процесорах Itanium/Itanium 2, за допомогою Microsoft Visual Studio на 32-розрядному процесорі Pentium із застосуванням 64-розрядного компілятора Intel Fortran Compiler. При налагодженні коду цей компілятор дозволяє застосовувати налагоджувач для платформи Microsoft.NET.
За наявності встановленого продукту Compaq Visual Fortran 6.6 можна застосовувати замість вихідного компілятора Intel Fortran Compiler 7.1, оскільки ці компілятори сумісні на рівні вихідного коду.
Компілятор Intel Fortran Compiler 7.1 для Windows повністю сумісний зі стандартом ISO Fortran 95 і підтримує створення та налагодження програм, що містять код двома мовами С і Fortran.
Компілятори для платформи Linux
Intel C++ Compiler 7.1 для Linux
Ще один компілятор, що побачив світ на початку року, Intel C++ Compiler 7.1 для Linux, дозволяє досягти високого ступеня оптимізації коду для процесорів Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Цей компілятор повністю сумісний з компілятором GNU C на рівні вихідного коду та об'єктних модулів, що без додаткових витрат дозволяє здійснювати міграцію на нього додатків, створених за допомогою GNU C. Компілятор Intel C++ Compiler підтримує C++ ABI (додаток до ядра Linux, що дозволяє виконувати під керуванням Linuxскомпільований код для інших платформ, таких як ранні операційні системи SCO, ранні версії Sun Solaris та ін.), а це означає повну сумісність з компілятором gcc 3.2 лише на рівні двійкового коду. Нарешті, за допомогою компілятора Intel C++ Compiler 7.1 для Linux можна перекомпілювати ядро Linux, зробивши кілька незначних змін у його вихідному коді.
Intel Fortran Compiler 7.1 для Linux
Компілятор Intel Fortran Compiler 7.1 для Linux дозволяє створювати оптимізований код для процесорів Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Даний компілятор повністю сумісний з компілятором Compaq Visual Fortran 6.6 на рівні вихідного коду, що дозволяє здійснювати за його допомогою перекомпіляцію , створених за допомогою Compaq Visual Fortran, таким чином підвищуючи їх продуктивність.
Крім того, вказаний компілятор сумісний з такими утилітами, що застосовуються розробниками, як редактор emacs, відладчик gdb, утиліта для складання додатків make.
Як і Windows-версія цього компілятора, Intel Fortran Compiler 7.1 для Linux повністю сумісний зі стандартом ISO Fortran 95 і підтримує створення та налагодження додатків, що містять код двома мовами С і Fortran.
Слід особливо наголосити, що істотний внесок у створення перерахованих компіляторів Intel зробили фахівці Російського центру Intel з розробки програмного забезпечення в Нижньому Новгороді. Більше детальну інформаціюпро компілятори Intel можна знайти на веб-сайті корпорації Intel за адресою: www.intel.com/software/products/.
Друга частина цієї статті буде присвячена компіляторам Intel, які створюють програми для мобільних пристроїв.
Ти – не раб!
Закритий освітній курс для дітей еліти: "Справжнє облаштування світу".
http://noslave.org
Матеріал з Вікіпедії – вільної енциклопедії
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). | ||||||||||||||||||||||||||||||||||||
Тип | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Автор |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Розробник | ||||||||||||||||||||||||||||||||||||
Розробники |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Написана на |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Інтерфейс |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Операційна система | ||||||||||||||||||||||||||||||||||||
Мови інтерфейсу |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Перший випуск |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Апаратна платформа | ||||||||||||||||||||||||||||||||||||
остання версія | ||||||||||||||||||||||||||||||||||||
Кандидат у релізи |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Бета-версія |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Альфа-версія |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Тестова версія |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Формати файлів, що читаються |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Формати файлів, що створюються |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Стан |
Помилка Lua в Модуль: Wikidata на рядку 170: attempt to index field "wikibase" (a nil value). |
|||||||||||||||||||||||||||||||||||
Ліцензія |
Основні можливості:
Компілятор підтримує стандарт OpenMP 3.0 для написання паралельних програм. Також містить модифікацію OpenMP під назвою Cluster OpenMP, за допомогою якої можна запускати програми написані відповідно до OpenMP на кластерах, що використовують MPI. Intel C++ Compiler використовує фронтенд (частина компілятора, що займається синтаксичним аналізом програми, що компілюється) від Edison Design Group. Цей фронтенд використовується компіляторами SGI MIPSpro, Comeau C++, Portland Group. Цей компілятор широко використовується для компіляції бенчмарків SPEC CPU. Існує 4 серії продуктів від Intel, що містять компілятор:
До недоліків Linux версії компілятора можна віднести часткову несумісність з GNU-розширення мови Сі (підтримувані компілятором GCC), що може викликати проблеми при компіляції деяких програм.
Експериментальні варіантиПублікувалися такі експериментальні варіанти компілятора:
Основні прапори
Напишіть відгук про статтю "Intel C++ compiler"ПриміткиДив. такожПосилання
Уривок, що характеризує Intel C++ compilerА ще вона повернулася для того, щоб востаннє побачити Білого Волхва... Свого чоловіка й найвірнішого друга, якого так і не змогла ніколи забути. У своєму серці вона вибачила його. Але, на його великий жаль, не змогла принести йому прощення Магдалини. Так що, як бачиш, Ізидора, велика християнська байка про «всепрощення» це просто дитяча брехня для наївних віруючих, щоб дозволити їм творити будь-яке Зло, знаючи, що чого б вони не зробили, зрештою їх вибачать. Але прощати можна лише те, що по-справжньому гідне прощення. Людина повинна розуміти, що за будь-яке здійснене Зло їй доводиться відповідати... І не перед якимось таємничим Богом, а перед собою, змушуючи себе жорстоко страждати. Магдалина не простила Владико, хоч глибоко поважала та щиро любила його. Так само, як вона не зуміла пробачити і всіх нас за страшну смерть Радомира. Адже саме ВОНА краще за всіх розуміла – ми могли допомогти йому, могли врятувати його від жорстокої смерті... Але не захотіли. Вважаючи провину Білого Волхва надто жорстокою, вона залишила його жити з цією провиною, ні на хвилину не забуваючи її... Вона не захотіла дарувати йому легкого вибачення. Ми так ніколи й не побачили її. Як ніколи не побачили та їхніх малюків. Через одного з лицарів свого Храму – нашого волхва – Магдалина передала відповідь Владиці на його прохання повернутися до нас: «Сонце не сходить одного дня двічі... Радість вашого світу (Радомир) вже ніколи не повернеться до вас, як не повернуся до вас і я... Я знайшла свою ВІРУ і свою ПРАВДУ, вони ЖИВІ, ваша ж - МЕРТВА... Оплакуйте своїх синів - вони вас любили. Я ж ніколи не пробачу вам їхньої смерті, поки жива. І нехай ваша вина залишається з вами. Можливо, колись вона принесе вам Світло та Прощення... Але не від мене». Голову ж Волхва Іоанна не привезли в Метеору з тієї ж причини - ніхто з лицарів Храму не захотів повертатися до нас... Ми втратили їх, як втрачали не раз багатьох інших, хто не хотів зрозуміти і прийняти наших жертв... Хто так а, як ти, пішли, засуджуючи нас.У мене паморочилося в голові!.. Як спраглий, вгамовуючи свій вічний голод знання, я жадібно вбирала потік дивовижної інформації, що щедро дарувала Північ... І мені хотілося набагато більше!.. Хотілося знати все до кінця. Це було ковтком свіжої води у випаленому болем та бідами пустелі! І я ніяк не могла вдосталь напитися. – У мене тисячі запитань! Але не залишилося часу... Що ж мені робити, Північ? – Запитуй, Ізидоро!.. Запитуй, я постараюся відповісти тобі... – Скажи, Північ, чому мені здається, що в цій історії як би поєдналися дві історії життя, обплетені схожими подіями, і подаються вони, як життя однієї особи? Чи я не маю рації? - Ти абсолютно права, Ізідоро. Як я вже казав тобі раніше, «сильні цього світу», хто створював фальшиву історію людства, «наділи» на справжнє життя Христа чуже життя юдейського пророка Джошуа (Joshua), який жив півтори тисячі років тому (з часу розповіді Півночі). І не тільки його самого, а й його родини, його рідних та близьких, його друзів та послідовників. Адже саме у дружини пророка Джошуа, юдейки Марії, була сестра Марта та брат Лазар, сестра його матері Марія Якобе, та інші, яких ніколи не було поряд із Радомиром та Магдалиною. Так само, як не було поруч із ними й чужих «апостолів» – Павла, Матвія, Петра, Луки та інших... Саме сім'я пророка Джошуа перебралася півтори тисячі років тому в Прованс (який на той час називався Гаул (Transalpine Gaul), в грецьке місто Массалію (теперішній Марсель), оскільки Масалія на той час була «ворітами» між Європою та Азією, і це було найлегшим шляхом для всіх «гнаних», щоб уникнути переслідувань та бід.
|