Intel kompilatorer. Varför behövdes nya kompilatorer?
Intel C++ och Fortran-kompilatorer och MKL-bibliotek
Tillsammans med standard GNU-kompilatorer för Linux, installeras Intel C++ och Fortran-kompilatorer på klustren av NIVC-komplexet. För närvarande (början av 2006) är kompilatorversion 9.1 installerad på alla kluster. Den här sidan är tillägnad att beskriva de viktigaste alternativen och inställningarna för dessa kompilatorer, såväl som deras huvudsakliga skillnader från GNU-kompilatorerna. Sidan riktar sig främst till användare av MSU Research Computing Center-kluster, men kan även vara användbar för andra rysktalande användare. Frågor relaterade till kompilering för IA-64-plattformen tas inte upp här.
Dessutom är Intel-biblioteket installerat på alla kluster Kernel Math Library(MKL) version 8.0.2. Biblioteket finns i katalogen /usr/mkl. Observera att underkatalogerna 32, 64 och em64t är tillgängliga i lib-katalogen. På Ant-klustret måste du använda biblioteken från underkatalogen em64t, och på andra kluster - från underkatalogen 32. All nödvändig dokumentation och exempel kan erhållas från katalogen /usr/mkl/doc.
Varför behövdes nya kompilatorer?
Behovet av nya kompilatorer uppstod främst för att a) stödja programmering i Fortran 90, och även b) för mer kraftfull optimering av Fortran-program än vad som tillhandahålls av g77-kompilatorn, som använder översättning till C och sedan kompilering med gcc.
PGI (Portland Group) kompilatorer uppfyller också dessa krav, men utvecklarföretaget vägrade att leverera dem till Ryssland.
Hur man använder?
Intel-kompilatorer anropas med hjälp av kommandon icc(C eller C++), icpc(C++) och ifort(Fortran 77/90). Kommandona mpicc, mpiCC och mpif77 för att kompilera och montera MPI-program är också konfigurerade för att använda Intel-kompilatorer.
Det är också möjligt att använda GNU-kompilatorer med kommandona mpigcc, mpig++ och mpig77 (Fortran 90 stöds inte).
Inmatningsfiler
Som standard, filer med tillägget .cpp Och .cxx anses källtexter på C++-språket, filer med filtillägget .c- C-källkod, och icpc-kompilatorn kompilerar också .c-filer som C++-källkod.
Filer med tillägg .f, .ftn Och .förär igenkända som källtexter på Fotran-språket, med en fast form av notation, och filerna .fpp Och .F gick dessutom genom Fortran-språkförprocessorn. Filer med tillägget .f90 anses Fortran 90/95 källtexter med fri form notation. Du kan uttryckligen ange en fast eller fri form av notation för Fortran-program med hjälp av alternativen -FI Och -FR respektive.
Filer med tillägget .s erkänd som assemblerspråkkod för IA-32.
Intels kompilatorfunktioner
Här presenterar vi egenskaperna hos Intel-kompilatorer som anges av utvecklaren i användarmanualen med några av våra kommentarer.
- Betydande optimering
Tydligen innebär detta att optimera koden på hög nivå, d.v.s. först och främst olika looptransformationer, vilket nästan alla kompilatorer gör med större eller mindre framgång - Flyttalsoptimering
Tydligen betyder detta först och främst maximal användning av kommandon implementerade på hårdvarunivå - Interprocedurella optimeringar
de där. global optimering av hela programmet, till skillnad från vanlig optimering, som endast påverkar koden för specifika funktioner - Profilbaserad optimering
de där. möjligheten att köra ett program i testläge, samla in data om den tid det tar att skicka vissa kodfragment i ofta använda funktioner och sedan använda dessa data för optimering - Stöd för SSE-instruktionsuppsättningen i Pentium III-processorer
notera: för beräkningsuppgifter är SSE2-kommandon av mer intresse, d.v.s. vektorkommandon över 64-bitars reella tal, men de stöds bara på Pentium 4-processorer, som vi inte har till vårt förfogande ännu - Automatisk vektorisering
de där. igen, med hjälp av SSE- och SSE2-kommandona, infogade automatiskt av kompilatorn - OpenMP-stöd för programmering på SMP-system
notera: på ett kluster rekommenderas att primärt använda MPI-gränssnittet; utbredd användning av OpenMP på klustret förväntas inte och sådana experiment har ännu inte utförts; men det är förmodligen vettigt att använda bibliotek (BLAS, etc.) som är parallelliserade för delat minne. - Dataförhämtning
de där. Tydligen, användningen av förladdningskommandon från minnet till datacachen, vilket kommer att behövas efter en tid - "Dispatching"-kod för olika processorer
de där. möjligheten att generera kod för olika processorer i en enda körbar fil, vilket gör att du kan dra nytta av de senaste processorerna för att uppnå högsta prestanda på dem, samtidigt som binär kompatibilitet för program med tidigare processorer bibehålls; På vårt kluster är detta inte relevant än, eftersom endast Pentium III-processorer används, och program kompilerade på klustret är inte tänkta att överföras och köras på andra maskiner
Grundläggande kompilatoralternativ
Det mest intressanta är förstås kodoptimeringsalternativen. De flesta av alternativen är gemensamma för C++- och Fortran-kompilatorerna. Mer detaljerad beskrivning alternativ i engelska bruksanvisningar.
Optimeringsnivåer | |
---|---|
Alternativ | Beskrivning |
-O0 | Inaktiverar optimering |
-O1 eller -O2 | Grundläggande optimering för hastighet. Inline infogning av biblioteksfunktioner är inaktiverad. För C++-kompilatorn ger dessa alternativ samma optimering; för Fortran-kompilatorn är alternativet -O2 att föredra, eftersom inkluderar även cykelfrämjande. |
-O3 | Kraftfullare optimeringar inklusive looptransformationer, dataförhämtning och användning av OpenMP. Vissa program kanske inte garanterar förbättrad prestanda jämfört med -O2. Det är vettigt att använda i kombination med vektoriseringsalternativ -xK Och -xW. |
-avrulla[n] | Möjliggör loopavveckning upp till n gånger. |
Optimering för en specifik processor | |
Alternativ | Beskrivning |
-tpp6 | Optimering för Penitum Pro-, Pentium II- och Pentium III-processorer |
-tpp7 | Optimering för Penitum 4-processorer (det här alternativet är aktiverat som standard för IA-32-kompilatorn) |
-xM | Kodgenerering med MMX-tillägg som är specifika för Pentium MMX, Pentium II och senare processorer |
-xK | Kodgenerering med SSE-tillägg som är specifika för Pentium III-processorer |
-xW | Kodgenerering med SSE2-tillägg som är specifika för Pentium 4-processorer |
Interprocedurell optimering | |
-ip | Interprocedurell optimering är aktiverad inom en fil. Om du anger alternativet -ip_no_inlining, då är infogning av inlinefunktioner inaktiverade. |
-ipo | Möjliggör interproceduroptimering mellan olika filer |
Optimering med hjälp av profiler | |
-prof_gen | En "profileringskod" genereras som kommer att användas för profilering, d.v.s. samla in data om frekvensen av att passera vissa platser i programmet |
-prof_use | Optimering utförs baserat på data som erhållits under profileringsstadiet. Det är vettigt att använda det tillsammans med alternativet för interproceduroptimering -ipo. |
Parallellisering för SMP-system | |
-öppenmp | Möjliggör stöd för OpenMP 2.0-standarden |
-parallell | Automatisk loopparallellisering är aktiverad |
Prestanda
Enligt resultaten av att köra SPEC CPU2000-testerna, publicerade på ixbt.com-servern, var Intels kompilatorversion 6.0 nästan allmänt bättre jämfört med gcc-kompilatorversionerna 2.95.3, 2.96 och 3.1 och PGI version 4.0.2. Dessa tester utfördes 2002 på en dator med en Pentium 4/1,7 GHz-processor och RedHat Linux 7.3.
Enligt tester utförda av Polyhedron var Intel Fortran-kompilatorversion 7.0 nästan universellt överlägsen andra Fortran 77-kompilatorer för Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Endast i vissa tester är Intel-kompilatorn något sämre än Absoft-, NAG- och Lahey-kompilatorerna. Dessa tester utfördes på en dator med en Pentium 4/1,8 GHz-processor och Mandrake Linux 8.1.
Intels kompilatorer version 9.1 överträffar också gcc-kompilatorer och visar prestanda jämförbara med Absoft, PathScale och PGI.
Vi kommer att vara tacksamma för de användare och läsare som skickar oss data om inverkan av valet av kompilator (GCC eller Intel) och optimeringsalternativ på hastigheten på arbetet med deras verkliga problem.
Bibliotek
C-språkkompilatorn använder ett runtime-bibliotek utvecklat inom GNU-projektet ( libc.a).
Följande bibliotek levereras med Intel C++-kompilatorn:
- libcprts.a- Runtime C++ språkbibliotek utvecklat av Dinkumware.
- libcxa.a- Ytterligare runtime-bibliotek för C++-utveckling av Intel.
- libimf.a- ett bibliotek med matematiska funktioner utvecklat av Intel, som inkluderar optimerade och högprecisionsimplementeringar av trigonometriska, hyperboliska, exponentiella, speciella, komplexa och andra funktioner (för mer information, se listan över funktioner).
- libirc.a- Runtime-stöd för profilering (PGO) och kodutskick beroende på processor (se ovan).
- libguide.a- OpenMP implementering.
Denna lista innehåller statiska bibliotek, men för de flesta av dem finns det även dynamiska, d.v.s. alternativ anslutna under start ( .så).
Följande bibliotek levereras med Fortran-kompilatorn: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a, biblioteket med matematiska funktioner libimf.a används också.
Bygger den körbara filen
Bibliotek kan anslutas statiskt (under byggandet) eller dynamiskt (under programstart). Den dynamiska metoden låter dig minska storleken på den körbara filen och låter dig dela samma kopia av biblioteket i minnet, men för detta måste du installera en komplett uppsättning dynamiska bibliotek som används på varje nod där programmen kommer att startas .
Således, om du installerade Intel-kompilatorn på din Linux-maskin och vill köra de kompilerade körbara filerna på andra maskiner, måste du antingen använda en statisk build (vilket är enklare) eller kopiera Intels dynamiska bibliotek till dessa maskiner (vanligtvis från en katalog som /opt/intel /compiler70/ia32/lib) till en av katalogerna listade i filen /etc/ld.so.conf, och se även till att samma uppsättning dynamiska GNU/Linux-bibliotek är installerade på dessa maskiner.
Som standard är alla Intels utvecklingsbibliotek (förutom libcxa.so) länkade statiskt, och alla Linux-systembibliotek och GNU-bibliotek är länkade dynamiskt. Använder alternativet -statisk du kan tvinga samlaren (länkredigeraren) att ansluta alla bibliotek statiskt (vilket kommer att öka volymen körbar fil), och använder alternativet -i_dynamic Du kan dynamiskt länka alla Intels utvecklingsbibliotek.
När du ansluter ytterligare bibliotek med visningsalternativet -bibliotek du kan behöva använda alternativet -Lkatalog för att ange sökvägen där biblioteken finns.
Använder alternativ -Bstatisk Och -Bdynamic du kan uttryckligen ange dynamisk eller statisk anslutning för vart och ett av de bibliotek som anges i kommandorad.
Använder alternativet -c montering av den körbara filen är inaktiverad och endast kompilering utförs (generering av objektmodul).
Dela moduler i Fortran och C
För att dela moduler skrivna i Fortran och C måste du komma överens om namngivning av procedurer i objektmoduler, överföring av parametrar och tillgång till globala variabler, om några.
Som standard konverterar Intel Fortran-kompilatorn procedurnamn till gemener och lägger till ett understreck i slutet av namnet. C-kompilatorn ändrar aldrig funktionsnamn. Således, om vi vill anropa en funktion eller procedur FNNAME implementerad i C från en Fortran-modul, bör den i C-modulen heta fnname_.
Fortran-kompilatorn stöder alternativet -nus [filnamn], som låter dig inaktivera tillägg av understreck till interna procedurnamn. Om ett filnamn anges görs detta endast för procedurnamn som anges i den angivna filen.
Som standard skickas parametrar i Fortran genom referens, och i C skickas de alltid med värde. Sålunda, när vi anropar en Fortran-procedur från en C-modul, måste vi skicka pekare till motsvarande variabler som innehåller värdena för de faktiska parametrarna som parametrar. När vi skriver en funktion i C som kommer att behöva anropas från en Fortran-modul måste vi beskriva de formella parametrarna som pekare till motsvarande typer.
I C-moduler är det möjligt att använda COMMON-block definierade inuti Fortran-moduler (för mer information, se Intel Fortran Compiler User's Guide, kapitlet Blanda C och Fortran).
Dela Intel- och GCC-kompilatorer
C-objektmoduler som produceras av Intel C++-kompilatorn är kompatibla med moduler som produceras av GCC-kompilatorn och GNU C-biblioteket. Således kan dessa moduler användas tillsammans i ett enda program kompilerat med icc- eller gcc-kommandon, men det rekommenderas att använda icc för att korrekt inkludera Intel-bibliotek.
Intel-kompilatorn stöder ett antal icke-standardiserade C-språktillägg som används av GNU-projektet och stöds av GCC-kompilatorn (men inte alla, se här för mer information).
Användarmanualen säger inget om kompatibiliteten för objektmoduler i språken C++ och Fortran; uppenbarligen stöds den inte.
Stöd för standarder
Intel C++ Compiler 7.0 för Linux stöder språkstandarden ANSI/ISO C (ISO/IEC 9899/1990). Det är möjligt att etablera strikt kompatibilitet med ANSI C-standarden ( -ansi) eller utökad ANSI C-dialekt ( -Xa). När du använder alternativet -c99
I det förra numret av tidningen diskuterade vi produkter från Intel VTune Performance Analyzer-familjen - prestandaanalysverktyg som är välförtjänt populära bland applikationsutvecklare och tillåter upptäckt i kod lagansökningar, som slösar för mycket CPU-resurser, vilket ger utvecklare möjlighet att identifiera och eliminera potential trånga platser, associerad med liknande avsnitt av kod, vilket påskyndar. Observera dock att applikationernas prestanda till stor del beror på hur effektiva kompilatorerna som används i deras utveckling är och vilka funktioner hårdvara de används vid generering av maskinkod.
De senaste versionerna av Intel Intel C++- och Intel Fortran-kompilatorerna för Windows och Linux låter dig få fördelar med applikationsprestanda för system baserade på Intel-processorer Itanium 2, Intel Xeon och Intel Pentium 4 upp till 40 % jämfört med befintliga kompilatorer från andra tillverkare på grund av användningen av sådana funktioner hos dessa processorer som Hyper-Threading-teknik.
Skillnader förknippade med kodoptimering av denna familj av kompilatorer inkluderar användningen av en stack för att utföra flyttalsoperationer, interprocedurell optimering (IPO), optimering i enlighet med applikationsprofilen (Profile Guided Optimization (PGO), förladdning av data i cachen ( Dataförhämtning), som undviker latens förknippad med minnesåtkomst, stöd för de karakteristiska egenskaperna hos Intel-processorer (till exempel tillägg för strömmande databehandling Intel Streaming SIMD Extensions 2, karakteristisk för Intel Pentium 4), automatisk parallellisering av kodexekvering, applikation skapande, kör på flera olika typer processorer vid optimering för en av dem, verktyg för att "förutsäga" efterföljande kod (branch prediction), utökat stöd för att arbeta med exekveringstrådar.
Observera att Intel-kompilatorer används i så välkända företag som Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM. Enligt oberoende tester utförda av ett antal företag är prestanda hos Intel-kompilatorer betydligt högre än prestanda för kompilatorer från andra tillverkare (se till exempel http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf .pdf).
Nedan kommer vi att titta på några funktioner senaste versionerna Intel-kompilatorer för skrivbord och server operativsystem.
Kompilatorer för Microsoft Windows-plattformen
Intel C++ Compiler 7.1 för Windows
Intel C++ Compiler 7.1 är en kompilator som släpptes tidigare i år och som tillhandahåller högoptimerad kod för Intel Itanium-, Intel Itanium 2-, Intel Pentium 4- och Intel Xeon-processorerna, samt Intel Pentium M-processorn som använder Intel Centrino-teknik och avsedd för användning i Mobil enheter.
Den angivna kompilatorn är helt kompatibel med utvecklingsverktygen Microsoft Visual C++ 6.0 och Microsoft Visual Studio .NET: den kan byggas in i motsvarande utvecklingsmiljöer.
Den här kompilatorn stöder ANSI- och ISO C/C++-standarder.
Intel Fortran Compiler 7.1 för Windows
Intel Fortran Compiler 7.1 för Windows, som också släpptes tidigare i år, låter dig skapa optimerad kod för Intel Itanium, Intel Itanium 2, Intel Pentium 4 och Intel Xeon, Intel Pentium M-processorer.
Denna kompilator är helt kompatibel med Microsoft Visual C++ 6.0 och Microsoft Visual Studio .NET utvecklingsverktyg, det vill säga den kan byggas in i motsvarande utvecklingsmiljöer. Dessutom låter den här kompilatorn dig utveckla 64-bitarsapplikationer för operativsystem som körs på Itanium/Itanium 2-processorer med hjälp av Microsoft Visual Studio på en 32-bitars Pentium-processor med 64-bitars Intel Fortran Compiler. När du felsöker kod låter den här kompilatorn dig använda en debugger för att Microsofts plattformar.NETTO.
Om du har Compaq-produkten installerad kan Visual Fortran 6.6 användas istället för den ursprungliga Intel Fortran Compiler 7.1, eftersom dessa kompilatorer är kompatibla på nivån källkod.
Intel Fortran Compiler 7.1 för Windows är helt kompatibel med ISO Fortran 95-standarden och stöder skapande och felsökning av applikationer som innehåller kod på två språk: C och Fortran.
Kompilatorer för Linux-plattformen
Intel C++ Compiler 7.1 för Linux
En annan kompilator som släpptes i början av året, Intel C++ Compiler 7.1 för Linux, låter dig uppnå en hög grad av kodoptimering för processorer Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Denna kompilator är helt kompatibel med GNU C-kompilatorn vid källkods- och objektmodulerna, vilket gör att du kan migrera applikationer skapade med GNU C till den utan extra kostnader. Intel C++-kompilatorn stöder C++ ABI (ett tillägg till Linux-kärnan som låter dig köra under Linux kontroll kompilerad kod för andra plattformar som tidiga SCO-operativsystem, tidiga versioner Sun Solaris, etc.), vilket innebär full kompatibilitet med gcc 3.2-kompilatorn på binär kodnivå. Slutligen, med Intel C++ Compiler 7.1 för Linux, kan du till och med kompilera om Linux-kärnan genom att göra några mindre ändringar i dess källkod.
Intel Fortran Compiler 7.1 för Linux
Intel Fortran Compiler 7.1 för Linux låter dig skapa optimerad kod för processorer Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Denna kompilator är helt kompatibel med Compaq Visual Fortran 6.6-kompilatorn på källkodsnivå, vilket gör att du att kompilera om applikationer med hjälp av det skapade med Compaq Visual Fortran, och därigenom öka deras prestanda.
Dessutom är den angivna kompilatorn kompatibel med sådana verktyg som används av utvecklare som emacs-redigeraren, gdb-felsökaren och verktyget make application build.
Liksom Windows-versionen av denna kompilator är Intel Fortran Compiler 7.1 för Linux helt kompatibel med ISO Fortran 95-standarden och stöder skapande och felsökning av applikationer som innehåller kod på två språk: C och Fortran.
Det bör särskilt betonas att ett betydande bidrag till skapandet av de listade Intel-kompilatorerna gjordes av specialister från Intel Russian Software Development Center i Nizhny Novgorod. Mer detaljerad information Information om Intel-kompilatorer finns på Intels webbplats på www.intel.com/software/products/.
Den andra delen av denna artikel kommer att ägnas åt Intel-kompilatorer som skapar applikationer för mobila enheter.
Du är inte en slav!
Sluten utbildningskurs för barn i eliten: "Världens sanna arrangemang."
http://noslave.org
Material från Wikipedia - den fria encyklopedin
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). | ||||||||||||||||||||||||||||||||||||
Typ | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Författare |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Utvecklare | ||||||||||||||||||||||||||||||||||||
Utvecklare |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Skrivet på |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Gränssnitt |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
operativ system | ||||||||||||||||||||||||||||||||||||
Gränssnittsspråk |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Första upplagan |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Hårdvaruplattform | ||||||||||||||||||||||||||||||||||||
Senaste versionen | ||||||||||||||||||||||||||||||||||||
Frisläppskandidat |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Betaversion |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Alfa version |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Testversion |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Läsbara filformat |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Genererade filformat |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
stat |
Lua-fel i Module:Wikidata på rad 170: försök att indexera fältet "wikibase" (ett nollvärde). |
|||||||||||||||||||||||||||||||||||
Licens |
Huvuddrag:
Kompilatorn stöder OpenMP 3.0-standarden för att skriva parallella program. Innehåller även en modifiering av OpenMP som kallas Cluster OpenMP, med vilken du kan köra applikationer skrivna i enlighet med OpenMP på kluster med MPI. Intel C++ Compiler använder frontend (den del av kompilatorn som analyserar det kompilerade programmet) från Edison Design Group. Samma gränssnitt används av kompilatorerna SGI MIPSpro, Comeau C++ och Portland Group. Denna kompilator används ofta för att kompilera SPEC CPU-riktmärken. Det finns 4 serier av produkter från Intel som innehåller kompilatorn:
Nackdelarna med Linux-versionen av kompilatorn inkluderar delvis inkompatibilitet med GNU-tillägg av C-språket (stöds av GCC-kompilatorn), vilket kan orsaka problem vid kompilering av vissa program.
Experimentella alternativFöljande experimentella versioner av kompilatorn publicerades:
Grundläggande flaggor
Skriv en recension om artikeln "Intel C++ compiler"Anteckningarse ävenLänkar
Ett utdrag som kännetecknar Intel C++-kompilatornOch dessutom återvände hon för att se Vita Magus för sista gången... Hennes man och sannaste vän, som hon aldrig kunde glömma. I sitt hjärta förlät hon honom. Men till hans stora ånger kunde hon inte ge honom Magdalenas förlåtelse... Så, som du ser, Isidora, är den stora kristna fabeln om "förlåtelse" bara en barnslig lögn för naiva troende, för att tillåta dem att göra något ont, med vetskapen om att oavsett vad de gör så kommer de så småningom att bli förlåtna. Men du kan bara förlåta det som verkligen är värt förlåtelse. En person måste förstå att han måste stå till svars för allt ont som begåtts... Och inte inför någon mystisk Gud, utan inför sig själv, som tvingar sig själv att lida grymt. Magdalena förlät inte Vladyka, även om hon djupt respekterade och älskade honom uppriktigt. Precis som hon misslyckades med att förlåta oss alla för Radomirs fruktansvärda död. HON förstod trots allt bättre än någon annan - vi kunde ha hjälpt honom, vi kunde ha räddat honom från en grym död... Men vi ville inte. Med tanke på att den vita Magus skuld var för grym, lämnade hon honom att leva med denna skuld, utan att glömma den för en minut... Hon ville inte ge honom enkel förlåtelse. Vi såg henne aldrig igen. Precis som de aldrig såg sina bebisar. Genom en av riddarna i hennes tempel - vår trollkarl - förmedlade Magdalena svaret till Vladyka på hans begäran att återvända till oss: "Solen går inte upp två gånger på samma dag ... Glädjen i din värld (Radomir) kommer att återvänd aldrig till dig, precis som jag inte kommer tillbaka till dig och jag... Jag hittade min TRO och min SANNING, de är LEVANDE, men dina är DÖDA... Sörj dina söner - de älskade dig. Jag kommer aldrig att förlåta dig för deras död medan jag lever. Och må din skuld förbli med dig. Kanske kommer hon en dag att ge dig ljus och förlåtelse... Men inte från mig.” Magus Johns huvud fördes inte till Meteora av samma anledning - ingen av tempelriddarna ville återvända till oss... Vi förlorade dem, eftersom vi har förlorat många andra mer än en gång, som inte ville förstå och acceptera våra offer... Vem gjorde precis som du - de gick och fördömde oss.Mitt huvud snurrade!.. Som en törstig person, som släckte min eviga hunger efter kunskap, absorberade jag girigt flödet av fantastisk information generöst gett av Norden... Och jag ville ha mycket mer!.. Jag ville veta allt för att slutet. Det var en fläkt av friskt vatten i en öken som sveds av smärta och bekymmer! Och jag kunde inte få nog av det... – Jag har tusentals frågor! Men det finns ingen tid kvar... Vad ska jag göra, North?.. - Fråga, Isidora!.. Fråga, jag ska försöka svara dig... – Säg mig, Sever, varför verkar det som om den här historien tycks kombinera två livsberättelser, sammanflätade med liknande händelser, och de presenteras som en persons liv? Eller har jag inte rätt? – Du har helt rätt, Isidora. Som jag berättade tidigare, "den här världens makter", som skapade mänsklighetens falska historia, "satte" på Kristi sanna liv det främmande livet för den judiska profeten Josua, som levde för ett och ett halvt tusen år sedan ( från tiden för historien om Norden). Och inte bara han själv, utan också hans familj, hans släktingar och vänner, hans vänner och följare. Det var trots allt hustru till profeten Josua, den judiska Maria, som hade en syster Marta och en bror Lasarus, syster till hans mor Maria Yakobe och andra som aldrig var i närheten av Radomir och Magdalena. Precis som det inte fanns några andra "apostlar" bredvid dem - Paulus, Matteus, Petrus, Lukas och resten... Det var profeten Joshuas familj som flyttade för ett och ett halvt tusen år sedan till Provence (som på den tiden kallades Transalpine Gallien), till den grekiska staden Massalia (nuvarande Marseille), eftersom Massalia vid den tiden var "porten" mellan Europa och Asien, och det var det enklaste sättet för alla de "förföljda" för att undvika förföljelse och problem.
|