Compilateurs Intel. Pourquoi de nouveaux compilateurs étaient-ils nécessaires ?
Compilateurs Intel C++ et Fortran et bibliothèque MKL
Outre les compilateurs GNU standard pour Linux, les compilateurs Intel C++ et Fortran sont installés sur les clusters du complexe informatique NIVC. Actuellement (début 2006), les compilateurs version 9.1 sont installés sur tous les clusters. Cette page est dédiée à la description des options et paramètres les plus importants de ces compilateurs, ainsi que leurs principales différences par rapport aux compilateurs GNU. La page s'adresse principalement aux utilisateurs des clusters MSU Research Computing Center, mais peut également être utile à d'autres utilisateurs russophones. Les problèmes liés à la compilation pour la plateforme IA-64 ne sont pas abordés ici.
De plus, la bibliothèque Intel est installée sur tous les clusters Bibliothèque mathématique du noyau(MKL) version 8.0.2. La bibliothèque se trouve dans le répertoire /usr/mkl. Veuillez noter que les sous-répertoires 32, 64 et em64t sont disponibles dans le répertoire lib. Sur le cluster Ant, vous devez utiliser les bibliothèques du sous-répertoire em64t et sur les autres clusters - du sous-répertoire 32. Toute la documentation et les exemples nécessaires peuvent être obtenus dans le répertoire /usr/mkl/doc.
Pourquoi de nouveaux compilateurs étaient-ils nécessaires ?
Le besoin de nouveaux compilateurs est apparu principalement pour a) prendre en charge la programmation en Fortran 90, et également b) pour une optimisation des programmes Fortran plus puissante que celle fournie par le compilateur g77, qui utilise la traduction en C puis la compilation à l'aide de gcc.
Les compilateurs PGI (Portland Group) répondent également à ces exigences, mais la société de développement a refusé de les fournir à la Russie.
Comment utiliser?
Les compilateurs Intel sont invoqués à l'aide de commandes cic(C ou C++), icpc(C++) et sifort(Fortran 77/90). Les commandes mpicc, mpiCC et mpif77 permettant de compiler et d'assembler des programmes MPI sont également configurées pour utiliser les compilateurs Intel.
Il est également possible d'utiliser des compilateurs GNU à l'aide des commandes mpigcc, mpig++ et mpig77 (Fortran 90 n'est pas supporté).
Fichiers d'entrée
Par défaut, les fichiers avec l'extension .cpp Et .cxx sont considérés comme des textes sources en langage C++, les fichiers avec l'extension .c- Le code source C et le compilateur icpc compile également les fichiers .c en tant que code source C++.
Fichiers avec extensions .F, .ftn Et .pour sont reconnus comme textes sources en langue Fotran, avec une forme de notation fixe, et les fichiers .fpp Et .F en outre passé par le préprocesseur du langage Fortran. Fichiers avec l'extension .f90 sont considérés comme des textes sources Fortran 90/95 avec notation de forme libre. Vous pouvez spécifier explicitement une forme de notation fixe ou libre pour les programmes Fortran à l'aide des options -FI Et -FR respectivement.
Fichiers avec l'extension .s reconnu comme code de langage assembleur pour l'IA-32.
Fonctionnalités du compilateur Intel
Nous présentons ici les caractéristiques des compilateurs Intel telles qu'indiquées par le développeur dans le manuel d'utilisation avec certains de nos commentaires.
- Optimisation significative
Apparemment, cela signifie optimiser le code à un niveau élevé, c'est-à-dire tout d'abord, diverses transformations de boucles, que presque tous les compilateurs font avec plus ou moins de succès - Optimisation en virgule flottante
Apparemment, cela signifie avant tout l'utilisation maximale des commandes implémentées au niveau matériel - Optimisations interprocédurales
ceux. optimisation globale de l'ensemble du programme, par opposition à l'optimisation ordinaire, qui n'affecte que le code de fonctions spécifiques - Optimisation basée sur le profil
ceux. la possibilité d'exécuter un programme en mode test, de collecter des données sur le temps nécessaire pour transmettre certains fragments de code à l'intérieur de fonctions fréquemment utilisées, puis d'utiliser ces données à des fins d'optimisation - Prise en charge du jeu d'instructions SSE dans les processeurs Pentium III
remarque : pour les tâches informatiques, les commandes SSE2 sont plus intéressantes, c'est-à-dire commandes vectorielles sur des nombres réels 64 bits, mais elles ne sont prises en charge que sur les processeurs Pentium 4, que nous n'avons pas encore à notre disposition - Vectorisation automatique
ceux. encore une fois, en utilisant les commandes SSE et SSE2, insérées automatiquement par le compilateur - Prise en charge d'OpenMP pour la programmation sur les systèmes SMP
remarque : sur un cluster il est recommandé d'utiliser en priorité l'interface MPI ; une utilisation généralisée d'OpenMP sur le cluster n'est pas attendue et de telles expérimentations n'ont pas encore été réalisées ; mais il est probablement logique d'utiliser des bibliothèques (BLAS, etc.) parallélisées pour la mémoire partagée. - Prélecture des données
ceux. Apparemment, l'utilisation de commandes de préchargement de la mémoire dans le cache de données, qui sera nécessaire après un certain temps - Code "Dispatching" pour différents processeurs
ceux. la possibilité de générer du code pour différents processeurs dans un seul fichier exécutable, ce qui vous permet de profiter de les derniers processeurs pour obtenir les performances les plus élevées sur eux, tout en maintenant la compatibilité binaire des programmes avec les processeurs antérieurs ; Sur notre cluster, ce n'est pas encore pertinent, car seuls les processeurs Pentium III sont utilisés et les programmes compilés sur le cluster ne sont pas censés être transférés et exécutés sur d'autres machines
Options de base du compilateur
Les plus intéressantes sont bien entendu les options d’optimisation du code. La plupart des options sont communes aux compilateurs C++ et Fortran. Plus Description détaillée options dans les manuels d’utilisation en anglais.
Niveaux d'optimisation | |
---|---|
Option | Description |
-O0 | Désactive l'optimisation |
-O1 ou -O2 | Optimisation de base pour la vitesse. L'insertion en ligne des fonctions de bibliothèque est désactivée. Pour le compilateur C++, ces options fournissent la même optimisation ; pour le compilateur Fortran, l'option -O2 est préférable, car comprend également la promotion du cycle. |
-O3 | Des optimisations plus puissantes, notamment des transformations de boucles, la prélecture de données et l'utilisation d'OpenMP. Certains programmes peuvent ne pas garantir des performances améliorées par rapport à -O2. Il est logique de l'utiliser en conjonction avec les options de vectorisation -xK Et -xW. |
-dérouler[n] | Permet de dérouler la boucle jusqu'à n fois. |
Optimisations pour un processeur spécifique | |
Option | Description |
-tpp6 | Optimisation pour les processeurs Penitum Pro, Pentium II et Pentium III |
-tpp7 | Optimisation pour les processeurs Penitum 4 (cette option est activée par défaut pour le compilateur IA-32) |
-xM | Génération de code à l'aide d'extensions MMX spécifiques aux processeurs Pentium MMX, Pentium II et versions ultérieures |
-xK | Génération de code à l'aide des extensions SSE spécifiques aux processeurs Pentium III |
-xW | Génération de code à l'aide des extensions SSE2 spécifiques aux processeurs Pentium 4 |
Optimisation interprocédurale | |
-ip | L'optimisation interprocédurale est activée dans un seul fichier. Si vous spécifiez l'option -ip_no_inlining, les insertions de fonctions en ligne sont désactivées. |
-ipo | Permet l'optimisation interprocédurale entre différents fichiers |
Optimisations à l'aide de profils | |
-prof_gen | Un code de « profilage » est généré et sera utilisé pour le profilage, c'est-à-dire collecter des données sur la fréquence de passage à certains endroits du programme |
-abondant | L'optimisation est effectuée sur la base des données obtenues lors de la phase de profilage. Il est logique de l'utiliser avec l'option d'optimisation interprocédurale -ipo. |
Parallélisation pour les systèmes SMP | |
-openmp | Permet la prise en charge de la norme OpenMP 2.0 |
-parallèle | La parallélisation automatique des boucles est activée |
Performance
Selon les résultats des tests SPEC CPU2000, publiés sur le serveur ixbt.com, les compilateurs Intel version 6.0 étaient presque universellement meilleurs par rapport aux compilateurs gcc versions 2.95.3, 2.96 et 3.1, et à la version PGI 4.0.2. Ces tests ont été réalisés en 2002 sur un ordinateur équipé d'un processeur Pentium 4/1,7 GHz et RedHat Linux 7.3.
Selon les tests effectués par Polyhedron, le compilateur Intel Fortran version 7.0 était presque universellement supérieur aux autres compilateurs Fortran 77 pour Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Ce n'est que dans certains tests que le compilateur Intel est légèrement inférieur aux compilateurs Absoft, NAG et Lahey. Ces tests ont été réalisés sur un ordinateur équipé d'un processeur Pentium 4/1,8 GHz et Mandrake Linux 8.1.
Les compilateurs Intel version 9.1 surpassent également les compilateurs gcc et affichent des performances comparables à celles d'Absoft, PathScale et PGI.
Nous serons reconnaissants aux utilisateurs et lecteurs qui nous envoient des données sur l'impact du choix du compilateur (GCC ou Intel) et des options d'optimisation sur la vitesse de travail sur leurs problèmes réels.
Bibliothèques
Le compilateur du langage C utilise une bibliothèque d'exécution développée au sein du projet GNU ( libc.a).
Les bibliothèques suivantes sont fournies avec le compilateur Intel C++ :
- libcprts.a- Bibliothèque de langage d'exécution C++ développée par Dinkumware.
- libcxa.a- bibliothèque d'exécution supplémentaire pour le développement C++ par Intel.
- libimf.a- une bibliothèque de fonctions mathématiques développées par Intel, qui comprend des implémentations optimisées et de haute précision de fonctions trigonométriques, hyperboliques, exponentielles, spéciales, complexes et autres (pour plus de détails, voir la liste des fonctions).
- libirc.a- prise en charge du runtime pour le profilage (PGO) et l'envoi de code en fonction du processeur (voir ci-dessus).
- libguide.a- Implémentation OpenMP.
Cette liste contient des bibliothèques statiques, mais pour la plupart d'entre elles il existe également des bibliothèques dynamiques, c'est-à-dire options connectées au démarrage ( .donc).
Les bibliothèques suivantes sont fournies avec le compilateur Fortran : libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a, la bibliothèque de fonctions mathématiques libimf.a est également utilisée.
Construire le fichier exécutable
Les bibliothèques peuvent être connectées de manière statique (lors de la construction) ou dynamiquement (lors du démarrage du programme). L'approche dynamique vous permet de réduire la taille du fichier exécutable et de partager la même copie de la bibliothèque en mémoire, mais pour cela vous devez installer un ensemble complet de bibliothèques dynamiques utilisées sur chaque nœud où les programmes seront exécutés .
Ainsi, si vous avez installé le compilateur Intel sur votre machine Linux et souhaitez exécuter les fichiers exécutables compilés sur d'autres machines, vous devez alors soit utiliser une version statique (ce qui est plus simple), soit copier les bibliothèques dynamiques Intel sur ces machines (généralement à partir de un répertoire comme /opt/intel /compiler70/ia32/lib) vers l'un des répertoires répertoriés dans le fichier /etc/ld.so.conf, et assurez-vous également que le même ensemble de bibliothèques dynamiques GNU/Linux est installé sur ces machines .
Par défaut, toutes les bibliothèques de développement Intel (à l'exception de libcxa.so) sont liées de manière statique, et toutes les bibliothèques système Linux et bibliothèques GNU sont liées de manière dynamique. Utilisation de l'option -statique vous pouvez forcer le collecteur (éditeur de liens) à connecter toutes les bibliothèques de manière statique (ce qui augmentera le volume fichier exécutable), et en utilisant l'option -i_dynamique Vous pouvez lier dynamiquement toutes les bibliothèques de développement Intel.
Lors de la connexion de bibliothèques supplémentaires à l'aide de l'option d'affichage -bibliothèque vous devrez peut-être utiliser l'option -Lrépertoire pour spécifier le chemin où se trouvent les bibliothèques.
Utilisation des options -Bstatique Et -Bdynamique vous pouvez spécifier explicitement une connexion dynamique ou statique de chacune des bibliothèques spécifiées dans ligne de commande.
Utilisation de l'option -c l'assemblage du fichier exécutable est désactivé et seule la compilation est effectuée (génération de module objet).
Partage de modules en Fortran et C
Pour partager des modules écrits en Fortran et C, vous devez vous mettre d'accord sur la dénomination des procédures dans les modules objets, la transmission des paramètres et l'accès aux variables globales, le cas échéant.
Par défaut, le compilateur Intel Fortran convertit les noms de procédures en minuscules et ajoute un trait de soulignement à la fin du nom. Le compilateur C ne change jamais les noms de fonctions. Ainsi, si nous voulons appeler une fonction ou une procédure FNNAME implémentée en C à partir d'un module Fortran, alors dans le module C, elle doit être appelée fnname_.
Le compilateur Fortran prend en charge l'option -nus [nom de fichier], qui vous permet de désactiver l'ajout de traits de soulignement aux noms de procédures internes. Si un nom de fichier est spécifié, cela est effectué uniquement pour les noms de procédures répertoriés dans le fichier spécifié.
Par défaut, en Fortran, les paramètres sont passés par référence, et en C, ils sont toujours passés par valeur. Ainsi, lors de l'appel d'une procédure Fortran depuis un module C, il faut passer des pointeurs vers les variables correspondantes contenant les valeurs des paramètres réels en tant que paramètres. Lors de l'écriture d'une fonction en C qui devra être appelée depuis un module Fortran, il faut décrire les paramètres formels comme des pointeurs vers les types correspondants.
Dans les modules C, il est possible d'utiliser des blocs COMMON définis à l'intérieur des modules Fortran (pour plus d'informations, voir le Guide de l'utilisateur du compilateur Intel Fortran, chapitre Mixage C et Fortran).
Partage des compilateurs Intel et GCC
Les modules objets C produits par le compilateur Intel C++ sont compatibles avec les modules produits par le compilateur GCC et la bibliothèque GNU C. Ainsi, ces modules peuvent être utilisés ensemble dans un seul programme compilé à l'aide des commandes icc ou gcc, mais il est recommandé d'utiliser icc pour inclure correctement les bibliothèques Intel.
Le compilateur Intel prend en charge un certain nombre d'extensions de langage C non standard utilisées par le projet GNU et prises en charge par le compilateur GCC (mais pas toutes, voir ici pour plus de détails).
Le manuel d'utilisation ne dit rien sur la compatibilité des modules objets dans les langages C++ et Fortran ; apparemment, il n'est pas supporté.
Prise en charge des normes
Le compilateur Intel C++ 7.0 pour Linux prend en charge la norme de langage ANSI/ISO C (ISO/IEC 9899/1990). Il est possible d'établir une compatibilité stricte avec la norme ANSI C ( -ansi) ou un dialecte ANSI C étendu ( -Xa). Lorsque vous utilisez l'option -c99
Dans le numéro précédent du magazine, nous avons discuté des produits de la famille Intel VTune Performance Analyser - des outils d'analyse des performances qui sont à juste titre populaires parmi les développeurs d'applications et permettent la détection dans le code. candidatures d'équipe, qui gaspillent trop de ressources CPU, donnant aux développeurs la possibilité d'identifier et d'éliminer les potentiels endroits étroits, associés à des sections de code similaires, accélérant ainsi le processus de développement d'applications. Notez cependant que les performances des applications dépendent en grande partie de l'efficacité des compilateurs utilisés dans leur développement et des fonctionnalités. matériel ils sont utilisés lors de la génération de code machine.
Les dernières versions des compilateurs Intel Intel C++ et Intel Fortran pour Windows et Linux vous permettent de bénéficier d'avantages en termes de performances applicatives pour les systèmes basés sur Processeurs Intel Itanium 2, Intel Xeon et Intel Pentium 4 jusqu'à 40 % par rapport aux compilateurs existants d'autres fabricants grâce à l'utilisation de fonctionnalités de ces processeurs telles que la technologie Hyper-Threading.
Les différences associées à l'optimisation du code par cette famille de compilateurs incluent l'utilisation d'une pile pour effectuer des opérations en virgule flottante, l'optimisation interprocédurale (IPO), l'optimisation conformément au profil d'application (Profile Guided Optimization (PGO), le préchargement des données dans le cache ( Data prefetching), qui évite la latence liée à l'accès à la mémoire, prise en charge des fonctionnalités caractéristiques des processeurs Intel (par exemple, extensions pour le traitement des données en streaming Intel Streaming SIMD Extensions 2, caractéristiques de l'Intel Pentium 4), parallélisation automatique de l'exécution du code, application création, fonctionnant sur plusieurs différents types processeurs lors de l'optimisation pour l'un d'entre eux, outils pour « prédire » le code ultérieur (prédiction de branche), prise en charge étendue du travail avec les threads d'exécution.
Notez que les compilateurs Intel sont utilisés dans des sociétés aussi connues que Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM. Selon des tests indépendants effectués par un certain nombre d'entreprises, les performances des compilateurs Intel sont nettement supérieures à celles des compilateurs d'autres fabricants (voir, par exemple, http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf .pdf).
Ci-dessous, nous examinerons quelques fonctionnalités dernières versions Compilateurs Intel pour ordinateur de bureau et serveur systèmes d'exploitation.
Compilateurs pour la plateforme Microsoft Windows
Compilateur Intel C++ 7.1 pour Windows
Intel C++ Compiler 7.1 est un compilateur publié plus tôt cette année qui fournit un code hautement optimisé pour les processeurs Intel Itanium, Intel Itanium 2, Intel Pentium 4 et Intel Xeon, ainsi que pour le processeur Intel Pentium M utilisant la technologie Intel Centrino et destiné à être utilisé dans appareils mobiles.
Le compilateur spécifié est entièrement compatible avec les outils de développement Microsoft Visual C++ 6.0 et Microsoft Visual Studio .NET : il peut être intégré aux environnements de développement correspondants.
Ce compilateur prend en charge les normes ANSI et ISO C/C++.
Compilateur Intel Fortran 7.1 pour Windows
Intel Fortran Compiler 7.1 pour Windows, également publié plus tôt cette année, vous permet de créer du code optimisé pour les processeurs Intel Itanium, Intel Itanium 2, Intel Pentium 4 et Intel Xeon, Intel Pentium M.
Ce compilateur est entièrement compatible avec les outils de développement Microsoft Visual C++ 6.0 et Microsoft Visual Studio .NET, c'est-à-dire qu'il peut être intégré aux environnements de développement correspondants. De plus, ce compilateur vous permet de développer des applications 64 bits pour les systèmes d'exploitation fonctionnant sur des processeurs Itanium/Itanium 2 à l'aide de Microsoft Visual Studio sur un processeur Pentium 32 bits à l'aide du compilateur Intel Fortran 64 bits. Lors du débogage du code, ce compilateur vous permet d'utiliser un débogueur pour Plateformes Microsoft.FILET.
Si le produit Compaq est installé, Visual Fortran 6.6 peut être utilisé à la place du compilateur Intel Fortran 7.1 d'origine, car ces compilateurs sont compatibles au niveau code source.
Intel Fortran Compiler 7.1 pour Windows est entièrement compatible avec la norme ISO Fortran 95 et prend en charge la création et le débogage d'applications contenant du code en deux langages : C et Fortran.
Compilateurs pour la plateforme Linux
Compilateur Intel C++ 7.1 pour Linux
Un autre compilateur sorti en début d'année, Intel C++ Compiler 7.1 pour Linux, permet d'atteindre un haut degré d'optimisation du code pour les processeurs Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Ce compilateur est entièrement compatible avec le compilateur GNU C au niveau du code source et des modules objets, ce qui vous permet d'y migrer sans frais supplémentaires des applications créées à l'aide de GNU C. Le compilateur Intel C++ prend en charge l'ABI C++ (un ajout au noyau Linux qui vous permet d'exécuter sous Contrôle Linux code compilé pour d'autres plates-formes telles que les premiers systèmes d'exploitation SCO, premières versions Sun Solaris, etc.), ce qui signifie une compatibilité totale avec le compilateur gcc 3.2 au niveau du code binaire. Enfin, avec Intel C++ Compiler 7.1 pour Linux, vous pouvez même recompiler le noyau Linux en apportant quelques modifications mineures à son code source.
Compilateur Intel Fortran 7.1 pour Linux
Intel Fortran Compiler 7.1 pour Linux vous permet de créer du code optimisé pour les processeurs Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M. Ce compilateur est entièrement compatible avec le compilateur Compaq Visual Fortran 6.6 au niveau du code source, vous permettant de recompiler les applications l'utilisant créées à l'aide de Compaq Visual Fortran, augmentant ainsi leurs performances.
De plus, le compilateur spécifié est compatible avec les utilitaires utilisés par les développeurs tels que l'éditeur emacs, le débogueur gdb et l'utilitaire de création d'application make.
Comme la version Windows de ce compilateur, Intel Fortran Compiler 7.1 pour Linux est entièrement compatible avec la norme ISO Fortran 95 et prend en charge la création et le débogage d'applications contenant du code en deux langages : C et Fortran.
Il convient de souligner en particulier qu'une contribution significative à la création des compilateurs Intel répertoriés a été apportée par des spécialistes du Centre de développement de logiciels Intel russe à Nijni Novgorod. Plus des informations détaillées Des informations sur les compilateurs Intel sont disponibles sur le site Web d'Intel à l'adresse www.intel.com/software/products/.
La deuxième partie de cet article sera consacrée aux compilateurs Intel qui créent des applications pour appareils mobiles.
Vous n'êtes pas un esclave !
Cours pédagogique fermé pour les enfants des élites : « Le véritable arrangement du monde ».
http://noslave.org
Matériel de Wikipédia - l'encyclopédie gratuite
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). | ||||||||||||||||||||||||||||||||||||
Taper | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Auteur |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Développeur | ||||||||||||||||||||||||||||||||||||
Développeurs |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Écrit sur |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Interface |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
système opérateur | ||||||||||||||||||||||||||||||||||||
Langues d'interface |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Première édition |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Plateforme matérielle | ||||||||||||||||||||||||||||||||||||
Dernière version | ||||||||||||||||||||||||||||||||||||
Libération candidate |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Version bêta |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Version alpha |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Version d'essai |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Formats de fichiers lisibles |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Formats de fichiers générés |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
État |
Erreur Lua dans Module:Wikidata à la ligne 170 : tentative d'indexation du champ "wikibase" (une valeur nulle). |
|||||||||||||||||||||||||||||||||||
Licence |
Caractéristiques principales:
Le compilateur prend en charge la norme OpenMP 3.0 pour l'écriture de programmes parallèles. Contient également une modification d'OpenMP appelée Cluster OpenMP, avec laquelle vous pouvez exécuter des applications écrites conformément à OpenMP sur des clusters utilisant MPI. Le compilateur Intel C++ utilise le frontend (la partie du compilateur qui analyse le programme compilé) d'Edison Design Group. La même interface est utilisée par les compilateurs SGI MIPSpro, Comeau C++ et Portland Group. Ce compilateur est largement utilisé pour compiler des benchmarks CPU SPEC. Il existe 4 séries de produits Intel contenant le compilateur :
Les inconvénients de la version Linux du compilateur incluent une incompatibilité partielle avec les extensions GNU du langage C (prises en charge par le compilateur GCC), ce qui peut entraîner des problèmes lors de la compilation de certains programmes.
Options expérimentalesLes versions expérimentales suivantes du compilateur ont été publiées :
Drapeaux de base
Donnez votre avis sur l'article "Compilateur Intel C++"Remarquesvoir égalementLiens
Un extrait caractérisant le compilateur Intel C++Et aussi, elle retourna voir le Mage Blanc pour la dernière fois... Son mari et ami le plus fidèle, qu'elle ne pourrait jamais oublier. Dans son cœur, elle lui a pardonné. Mais, à son grand regret, elle n'a pas pu lui apporter le pardon de Madeleine... Ainsi, comme tu le vois, Isidora, la grande fable chrétienne sur le « pardon » n'est qu'un mensonge enfantin pour les croyants naïfs, afin de leur permettre faire n'importe quel mal, sachant que peu importe ce qu'ils font, ils finiront par être pardonnés. Mais vous ne pouvez pardonner que ce qui mérite vraiment le pardon. Une personne doit comprendre qu'elle doit répondre de tout Mal commis... Et non pas devant un Dieu mystérieux, mais devant lui-même, se forçant à souffrir cruellement. Magdalena n'a pas pardonné à Vladyka, même si elle le respectait profondément et l'aimait sincèrement. Tout comme elle n'a pas réussi à nous pardonner à tous la terrible mort de Radomir. Après tout, ELLE a compris mieux que quiconque : nous aurions pu l'aider, nous aurions pu le sauver d'une mort cruelle... Mais nous ne le voulions pas. Considérant la culpabilité du Mage Blanc trop cruelle, elle le laissa vivre avec cette culpabilité, sans l'oublier une minute... Elle ne voulait pas lui accorder un pardon facile. Nous ne l'avons jamais revue. Comme s'ils n'avaient jamais vu leurs bébés. Par l'intermédiaire d'un des chevaliers de son Temple - notre sorcier - Madeleine a transmis la réponse à la Vladyka à sa demande de revenir vers nous : « Le soleil ne se lève pas deux fois le même jour... La joie de votre monde (Radomir) sera ne reviendra jamais vers toi, tout comme je ne reviendrai pas vers toi et moi... J'ai trouvé ma FOI et ma VÉRITÉ, ils sont VIVANTS, mais le vôtre est MORT... Pleurez vos fils - ils vous aimaient. Je ne vous pardonnerai jamais leur mort de mon vivant. Et que ta culpabilité reste avec toi. Peut-être qu'un jour elle vous apportera Lumière et Pardon... Mais pas de ma part. La tête du Mage Jean n'a pas été amenée aux Météores pour la même raison - aucun des Chevaliers du Temple ne voulait revenir vers nous... Nous les avons perdus, comme nous en avons perdu beaucoup d'autres plus d'une fois, qui ne voulaient pas revenir. comprendre et accepter nos victimes... Ceux qui ont fait comme vous sont partis en nous condamnant.J'avais la tête qui tournait !.. Comme une personne assoiffée, étancheant mon éternelle faim de connaissances, j'absorbais avec avidité le flux d'informations étonnantes généreusement donné par le Nord... Et j'en voulais bien plus !.. Je voulais tout savoir pour la fin. C'était une bouffée d'eau fraîche dans un désert brûlé par la douleur et les ennuis ! Et je ne pouvais pas en avoir assez... – J'ai des milliers de questions ! Mais il ne reste plus de temps... Que dois-je faire, North ?... - Demande, Isidora !.. Demande, je vais essayer de te répondre... – Dis-moi, Sever, pourquoi me semble-t-il que cette histoire semble combiner deux histoires de vie, entrelacées d'événements similaires, et qu'elles sont présentées comme la vie d'une seule personne ? Ou est-ce que je n'ai pas raison ? – Tu as tout à fait raison, Isidora. Comme je vous l'ai dit plus tôt, les « puissances de ce monde », qui ont créé la fausse histoire de l'humanité, « ont mis » sur la vraie vie du Christ la vie étrangère du prophète juif Josué, qui a vécu il y a mille cinq cents ans ( du temps de l'histoire du Nord). Et pas seulement lui-même, mais aussi sa famille, ses parents et amis, ses amis et disciples. Après tout, c'était l'épouse du prophète Josué, la juive Marie, qui avait une sœur Marthe et un frère Lazare, la sœur de sa mère Maria Yakobe, et d'autres qui n'ont jamais été proches de Radomir et de Madeleine. Tout comme il n'y avait pas d'autres « apôtres » à côté d'eux - Paul, Matthieu, Pierre, Luc et les autres... C'est la famille du prophète Josué qui s'est installée il y a mille cinq cents ans en Provence (qui s'appelait à l'époque la Gaule transalpine), dans la ville grecque de Massalia (aujourd'hui Marseille), puisque Massalia était à cette époque la « porte d'entrée » entre l'Europe et l'Asie, et c'était le moyen le plus simple pour tous ceux « persécutés » d'éviter les persécutions et les troubles.
|