10 research outputs found

    Analyse de performance de systèmes distribués et hétérogènes à l'aide de traçage noyau

    Get PDF
    RÉSUMÉ Les systèmes infonuagiques sont en utilisation croissante. La complexité de ces systèmes provient du fait qu'ils s'exécutent de manière distribuée sur des architectures multicoeurs. Cette composition de services est souvent hétérogène, c.-à-d. qui implique différentes technologies, librairies et environnements de programmation. L'interopérabilité est assurée plutôt par l'utilisation de protocoles ouverts. L'espace de configuration résultant croît de manière exponentielle avec le nombre de paramètres, et change continuellement en fonction des nouveaux besoins et de l'adaptation de la capacité. Lorsqu'un problème de performance survient, il doit être possible d'identifier rapidement la cause pour y remédier. Or, ce problème peut être intermittent et difficile à reproduire, et dont la cause peut être une interaction transitoire entre des tâches ou des ressources. Les outils utilisés actuellement pour le diagnostic des problèmes de performance comprennent les métriques d'utilisation des ressources, les outils de profilage, la surveillance du réseau, des outils de traçage, des débogueurs interactifs et les journaux systèmes. Or, chaque composant doit être analysé séparément, ou l'utilisateur doit corréler manuellement cette information pour tenter de déduire la cause du problème. L'observation globale de l'exécution de systèmes distribués est un enjeu majeur pour en maitriser la complexité et régler les problèmes efficacement. L'objectif principal de cette recherche est d'obtenir un outil d'analyse permettant de comprendre la performance d'ensemble d'une application distribuée. Ce type d'analyse existe au niveau applicatif, mais elles sont spécifiques à un environnement d'exécution ou un domaine particulier. Nos travaux se distinguent par l'utilisation d'une trace noyau, qui procure un niveau plus abstrait de l'exécution d'un programme, et qui est indépendant du langage ou des librairies utilisées. La présente recherche vise à déterminer si la sémantique des évènements du système d'exploitation peut servir à une analyse satisfaisante. Le surcout du traçage est un enjeu important, car il doit demeurer faible pour ne pas perturber le système et être utile en pratique. Nous proposons un nouvel algorithme permettant de retrouver les relations d'attente entre les tâches et les périphériques d'un ordinateur local. Nous avons établi que le chemin critique exact d'une application nécessite des évènements qui ne sont pas visibles depuis le système d'exploitation. Nous proposons donc une approximation du chemin critique, dénomée chemin actif d'exécution, où chaque attente est remplacée par sa cause racine. Les approches antérieures reposent sur l'analyse des appels système. L'analyse doit tenir en compte la sémantique de centaines d'appels système, ce qui n'est pas possible dans le cas général, car le fonctionnement d'un appel système dépend de l'état du système au moment de son exécution. Par exemple, le comportement de l'appel système read() est complètement différent si le fichier réside sur un disque local ou sur un serveur de fichier distant. L'appel système ioctl() est particulièrement problématique, car son comportement est défini par le programmeur. Le traçage des appels système contribue aussi à augmenter le surcout, alors qu'une faible proportion d'entre eux modifie le flot de l'exécution. Les tâches d'arrière-plan du noyau n'effectuent pas d'appels système et ne peuvent pas être prises en compte par cette méthode. À cause de ces propriétés, l'analyse basée sur des appels système est fortement limitée. Notre approche remplace les appels système par des évènements de l'ordonnanceur et des interruptions. Ces évènements de plus bas niveau sont indépendants de la sémantique des appels système et prennent en compte les tâches noyau. Le traçage des appels système est donc optionnel, ce qui contribue à réduire le surcout et simplifie drastiquement l'analyse. Les bancs d'essais réalisés avec des logiciels commerciaux populaires indiquent qu'environ 90% du surcout est lié aux évènements d'ordonnancement. En produisant des cycles d'ordonnancement à la fréquence maximale du système, il a été établi que le surcout moyen au pire cas est de seulement 11%. Nous avons aussi réalisé une interface graphique interactive montrant les résultats de l'analyse. Grâce à cet outil, il a été possible d'identifier avec succès plusieurs problèmes de performance et de synchronisation. Le fonctionnement interne et l'architecture du programme sont exposés par l'outil de visualisation, qui se révèle utile pour effectuer la rétro-ingénierie d'un système complexe. Dans un second temps, la dimension distribuée du problème a été ajoutée. L'algorithme de base a été étendu pour supporter l'attente indirecte pour un évènement distant, tout en préservant ses propriétés antérieures. Le même algorithme peut donc servir pour des processus locaux ou distants. Nous avons instrumenté le noyau de manière à pouvoir faire correspondre les paquets TCP/IP émis et reçus entre les machines impliqués dans le traitement à observer. L'algorithme tient en compte que la réception ou l'émission de paquets peut se produire de manière asynchrone. Les traces obtenues sur plusieurs systèmes n'ont pas une base de temps commune, car chacun possède sa propre horloge. Aux fins de l'analyse, toutes les traces doivent être synchronisées, et les échanges apparaitre dans l'ordre de causalité. Pour cette raison, les traces doivent être préalablement synchronisées. L'algorithme a été utilisé pour explorer le comportement de différentes architectures logicielles. Différentes conditions d'opérations ont été simulées (délais réseau, durée de traitement, retransmission, etc.) afin de valider le comportement et la robustesse de la technique. Il a été vérifié que le résultat obtenu sur une grappe d'ordinateurs est le même que celui obtenu lorsque les services s'exécutent dans des machines virtuelles. Le surcout moyen nécessaire pour tracer une requête Web s'établit à 5%. La borne supérieure du surcout pour des requêtes distantes est d'environ 18%. Pour compléter l'analyse, nous avons réalisé des cas d'utilisation impliquant six environnements logiciel et domaines différents, dont une application Web Django, un serveur de calcul Java-RMI, un système de fichier distribué CIFS, un service Erlang et un calcul parallèle MPI. Comme contribution secondaire, nous avons proposé deux améliorations à l'algorithme de synchronisation. La première consiste en une étape de présynchronisation qui réduit considérablement la consommation maximale de mémoire. La deuxième amélioration concerne la performance de la fonction de transformation du temps. Le temps est représenté en nanosecondes et le taux de variation à appliquer doit être très précis. L'utilisation de l'arithmétique à point flottant de précision double n'est pas assez précis et produit des inversions d'évènements. Un couteux calcul à haute précision est requis. Grâce à une simple factorisation de l'équation linéaire, la plupart des calculs à haute précision ont été remplacés par une arithmétique entière 64-bit. Les bancs d'essai ont mesuré que cette optimisation procure une accélération de 65 fois en moyenne et que la précision du résultat n'est pas affectée. Le troisième thème de la recherche porte sur le profilage des segments du chemin d'exécution. L'échantillonnage des compteurs de performance matériel permet le profilage du code natif avec un faible surcout. Une limitation concerne le code interprété qui peut se retrouver dans une application hétérogène. Dans ce cas, le code profilé est celui de l'interpréteur, et le lien avec les sources du programme est perdu. Nous avons conçu une technique permettant de transférer à un interpréteur l'évènement de débordement du compteur de performance, provenant d'une interruption non masquable du processeur. L'analyse de l'état de l'interpréteur peut être effectuée en espace utilisateur. Un module d'analyse pour Python a été développé. Nous avons comparé le cout des méthodes pour obtenir la pile d'appel de l'interpréteur Python et celle du code interprété. Ces données sont sauvegardées par l'entremise de LTTng-UST, dont la source de temps est cohérente avec les traces produites en mode noyau, ce qui permet d'associer les échantillons produits avec le chemin d'exécution. Nous avons validé le profil à l'aide d'une application d'étalonnage. Nous avons mesuré une erreur inférieure à 1%, et ce résultat est équivalent à celui produit par un profileur déterministe. La période d'échantillonnage est établie selon un compromis entre le surcout et la résolution de l'échantillonnage. Nos tests indiquent que, pour un chemin d'exécution de 50ms, une plage de taux d'échantillonnage existe et satisfait à la fois une marge d'erreur inférieure à 5% et un surcout de moins de 10%.----------ABSTRACT Cloud systems are increasingly used. These systems have a complex behavior, because they run on a cluster of multi-core computers. This composition of services is often heterogeneous, involving different technologies, libraries and programming environments. Interoperability is ensured using open protocols rather than standardizing runtime environments. The resulting configuration space grows exponentially with the number of parameters, and constantly changes in response to new needs and capacity adaptation. When a performance problem arises, it should be possible to quickly identify the cause in order to address it. However, performance problems can be intermittent and difficult to reproduce, and their cause can be a transient interaction between tasks or resources. The tools currently used to diagnose performance problems include resource utilization metrics, profiling tools, network monitoring, layout tools, interactive debuggers and system logs. However, each component must be analyzed separately, or the user must manually correlate that information to try deducing the root cause. Observing the performance of globally distributed systems is a major challenge, to master their complexity and solve problems effectively. The main objective of this research is to obtain an analysis tool for understanding the overall performance of a distributed application. This type of analysis exists at the application level, but they are specific to a runtime environment or a particular application domain. To address this issue, we propose to use kernel tracing, which provides a more abstract information about the execution of a program and is independent of the language or the libraries used. This research aims to determine whether the semantics of the operating system events are effective for performance analysis of such systems. The additional cost of tracing is an important issue because it must remain low, to avoid disturbing the system and be useful in practice. We propose a new algorithm to find the waiting relationships between tasks and devices on a local computer. We established that the exact critical path of an application requires events which are not visible from the operating system. We therefore propose an approximation of the critical path, that we named execution path. Previous approaches rely on system call analysis. However, the analysis must take into account the semantics of hundreds of system calls. Tracing all system calls increases the overhead, while most system calls do not change the flow of execution. Furthermore, the background kernel threads do not perform system calls and are not taken into account. Our approach relies instead on lower-level events, namely from the scheduler and the interruptions. These events are independent of the semantics of system calls and take into account the kernel threads. Tracing system calls is optional, which helps reduce the overhead and simplifies the analysis. The benchmarks made with popular commercial software indicate that about 90% of the overhead is related to scheduling events. By producing scheduling cycles at the maximum frequency, we established that the average worst case overhead is only 11%. Finally, we implemented an interactive graphical view showing the results of the analysis. With this tool, it was possible to identify quickly several performance and synchronization problems in actual applications. The tool also exposes the internal functioning and architecture of the program, which is useful for performing reverse engineering of a complex system. Secondly, we addressed the distributed dimension of the problem. The basic algorithm has been extended to support indirect network wait, while preserving its previous properties. The same algorithm can therefore be used for local or remote processes. We instrumented the kernel for matching the TCP/IP packets sent and received between machines involved in the processing. The algorithm takes into account the fact that reception and transmission of packets can occur asynchronously. The traces obtained on several systems do not have a common time base, as each has its own clock. The analysis requires that all traces have the same time reference and exchanges must appear in the causal order. For this reason, the traces must first be synchronized. The algorithm was used to explore the behavior of different software architectures. We simulated various operating conditions (network delays, processing delays, retransmission, etc.) to validate the behavior and robustness of the technique. We verified that the result on a cluster of physical computers is the same as the one obtained when the services are running inside virtual machines. The average overhead to trace Web requests is about 5%. The worst case overhead measured with the higest frequency remote procedure call (empty remote call) is approximately 18\%. To complete the analysis, we implemented use cases and software environments involving six different application domains, including a Django Web application, a Java-RMI server, a CIFS distributed file system, an Erlang service and a MPI parallel computation. As a secondary contribution, we proposed two improvements to the synchronization algorithm. The first is a pre-synchronization step that dramatically reduces the maximum memory consumption. The second improvement concerns the performance of the time transformation function. The time is represented in nanoseconds and the rate of change to apply must be very precise. The use of double precision floating point arithmetic is not accurate enough and produces event inversions. Expensive high-precision calculation is required. We replaced most of high-precision calculations by integer arithmetic of native register size, providing an average acceleration of approximately 65 times for the synchronization. The third area of research focuses on profiling the execution path segments. Sampling hardware performance counters allows efficient profiling of native code. One limitation concerns the interpreted code that may be found in an heterogeneous application. In this case, the native code running is the interpreter itself, and the link with the actual sources of the interpreted program is lost. We developed a technique to transfer to an interpreter the performance counter overflow event from the non-maskable interrupt of the processor. The analysis of the interpreter state can then be performed in user-space. To demonstrate the feasability of the approach, we implemented the analysis module for Python. We compared the cost of methods to get the call stack of the Python interpreter and the interpreted code. This data is saved through LTTng-UST, which has a time source consistent with the kernel mode trace and allows the association of the samples produced with the execution path. We validated the profile using a calibrated program. We measured less than 1% profile error, and this result is equivalent to the error rate of a deterministic profiler. The sampling period is a compromise between the overhead and the profile resolution. Our tests indicate that, for an execution path of 50ms, a range of sampling exists that satisfies both a margin of error lower than 5% and an overhead of less than 10%

    Un modèle de transport et de chimie atmosphérique à grande échelle adapté aux calculateurs massivement parallèles

    Get PDF
    We present in this thesis the development of a large-scale bidimensional atmospheric transport scheme designed for parallel architectures with scalability in mind. The current version, named Pangolin, contains a bi-dimensional advection and a simple linear chemistry scheme for stratospheric ozone and will serve as a basis for a future CTM. For mass-preservation, a van Leer finite-volume scheme was chosen for advection and extended to 2D with operator splitting. To ensure mass preservation, winds are corrected in a preprocessing step. We aim at addressing the "pole issue" of the traditional regular latitude-longitude by presenting a new quasi-area-preserving grid mapping the sphere uniformly. The parallelization of the model is based on the advection operator and a custom domain-decomposition algorithm is presented here to attain load-balancing in a message-passing context. To run efficiently on current and future parallel architectures, algebraic features of the grid are exploited in the advection scheme and parallelization algorithm to favor the cheaper costs of flops versus data movement. The model is validated on algebraic test cases and compared to other state-of-the-art schemes using a recent benchmark. Pangolin is also compared to the CTM of Météo-France, MOCAGE, using a linear ozone scheme and isentropic coordinates.Cette thèse présente un modèle bi-dimensionnel pour le transport atmosphérique à grande échelle, nommé Pangolin, conçu pour passer à l'échelle sur les achitectures parallèles. La version actuelle comporte une advection 2D ainsi qu'un schéma linéaire de chimie et servira de base pour un modèle de chimie-transport (MCT). Pour obtenir la conservation de la masse, un schéma en volume-finis de type van Leer a été retenu pour l'advection et étendu au cas 2D en utilisant des opérateurs alternés. La conservation de la masse est assurée en corrigeant les vents en amont. Nous proposons une solution au problème "des pôles" de la grille régulière latitude-longitude grâce à une nouvelle grille préservant approximativement les aires des cellules et couvrant la sphère uniformément. La parallélisation du modèle se base sur l'advection et utilise un algorithme de décomposition de domaines spécialement adapté à la grille. Cela permet d'obtenir l'équilibrage de la charge de calcul avec MPI, une librairie d'échanges de messages. Pour que les performances soient à la hauteur sur les architectures parallèles actuelles et futures, les propriétés analytiques de la grille sont exploitées pour le schéma d'advection et la parallélisation en privilégiant le moindre coût des flops par rapport aux mouvement de données. Le modèle est validé sur des cas tests analytiques et comparé à des schémas de transport à l'aide d'un comparatif récemment publié. Pangolin est aussi comparé au MCT de Météo-France via un schéma linéaire d'ozone et l'utilisation de coordonnées isentropes

    Calcul haute performance & chimie quantique

    Get PDF
    This thesis work has two main objectives: 1. To develop and apply original electronic structure methods for quantum chemistry 2. To implement several computational strategies to achieve efficient large-scale computer simulations. In the first part, both the Configuration Interaction (CI) and the Quantum Monte Carlo (QMC) methods used in this work for calculating quantum properties are presented. We then describe more specifically the selected CI approach (so-called CIPSI approach, Configuration Interaction using a Perturbative Selection done Iteratively) that we used for building trial wavefunctions for QMC simulations. As a first application, we present the QMC calculation of the total non-relativistic energies of transition metal atoms of the 3d series. This work, which has required the implementation of Slater type basis functions in our codes, has led to the best values ever published for these atoms. We then present our original implementation of the pseudo-potentials for QMC and discuss the calculation of atomization energies for a benchmark set of 55 organic molecules. The second part is devoted to the Hight Performance Computing (HPC) aspects. The objective is to make possible and/or facilitate the deployment of very large-scale simulations. From the point of view of the developer it includes: The use of original programming paradigms, single-core optimization process, massively parallel calculations on grids (supercomputer and Cloud), development of collaborative tools , etc - and from the user's point of view: Improved code installation, management of the input/output parameters, GUI, interfacing with other codes, etc.L'objectif de ce travail de thèse est double : - Le développement et application de méthodes originales pour la chimie quantique ; - La mise au point de stratégies informatiques variées permettant la réalisation de simulations à grande échelle. Dans la première partie, les méthodes d'integration de configuration (IC) et monte carlo quantique (QMC) utilisées dans ce travail pour le calcul des propriétés quantiques sont présentées. Nous détaillerons en particulier la méthode d'\IC sélectionnée perturbativement (CISPI) que nous avons utilisée pour construire des fonctions d'onde d'essai pour le QMC. La première application concerne le calcul des énergies totales non-relativistes des atomes de transition de la série 3d ; ceci a nécessité l'implémentation de fonctions de base de type Slater et a permis d'obtenir les meilleures valeurs publiées à ce jour. La deuxième application concerne l'implémentation de pseudo-potentiels adaptés à notre approche QMC, avec pour application une étude concernant le calcul des énergies d'atomisation d'un ensemble de 55 molécules. La seconde partie traite des aspects calcule haute performance (HPC) avec pour objectif l'aide au déploiement des simulations à très grande échelle, aussi bien sous l'aspect informatique proprement dit - utilisation de paradigmes de programmation originaux, optimisation des processus monocœurs, calculs massivement parallèles sur grilles de calcul (supercalculateur et Cloud), outils d'aide au développement collaboratif \textit{et cætera} -, que sous l'aspect \emph{utilisateur} - installation, gestion des paramètres d'entrée et de sortie, interface graphique, interfaçage avec d'autres codes. L'implémentation de ces différents aspects dans nos codes-maison quantum pakcage et qmc=chem est également présentée

    Programmation haute performance pour architectures hybrides

    Get PDF
    Clusters of multicore/GPU nodes connected with a fast network offer very high therotical peak performances, reaching tens of TeraFlops. Unfortunately, the efficient programing of such architectures remains challenging because of their complexity and the diversity of the existing programming models. The purpose of this thesis is to improve the programmability of dense scientific applications on hybrid architectures in three ways: reducing the execution times, processing larger data sets and reducing the programming effort. We propose DSTEP, a directive-based programming model expressing both data and computation distribution. A large set of distribution types are unified in a "dstep distribute" directive and the replication of some distributed elements can be expressed using a "halo". The "dstep gridify" directive expresses both the computation distribution and the schedule constraints of loop iterations. We define a distribution model and demonstrate the correctness of the code transformation from the sequential domain to the parallel domain. From the distribution model, we derive a generic compilation scheme transforming DSTEP annotated input programs into parallel hybrid ones. We have implemented such a tool as a compiler integrated to the PIPS compilation workbench together with a library offering the runtime functionality, especially the communication. Our solution is validated on scientific programs from the NAS Parallel Benchmarks and the PolyBenchs as well as on an industrial signal procesing application.Les architectures parallèles hybrides constituées d'un grand nombre de noeuds de calcul multi-coeurs/GPU connectés en réseau offrent des performances théoriques très élevées, de l'ordre de quelque dizaines de TeraFlops. Mais la programmation efficace de ces machines reste un défi à cause de la complexité de l'architecture et de la multiplication des modèles de programmation utilisés. L'objectif de cette thèse est d'améliorer la programmation des applications scientifiques denses sur les architectures parallèles hybrides selon trois axes: réduction des temps d'exécution, traitement de données de très grande taille et facilité de programmation. Nous avons pour cela proposé un modèle de programmation à base de directives appelé DSTEP pour exprimer à la fois la distribution des données et des calculs. Dans ce modèle, plusieurs types de distribution de données sont exprimables de façon unifiée à l'aide d'une directive "dstep distribute" et une réplication de certains éléments distribués peut être exprimée par un "halo". La directive "dstep gridify" exprime à la fois la distribution des calculs ainsi que leurs contraintes d'ordonnancement. Nous avons ensuite défini un modèle de distribution et montré la correction de la transformation de code du domaine séquentiel au domaine distribué. À partir du modèle de distribution, nous avons dérivé un schéma de compilation pour la transformation de programmes annotés de directives DSTEP en des programmes parallèles hybrides. Nous avons implémenté notre solution sous la forme d'un compilateur intégré à la plateforme de compilation PIPS ainsi qu'une bibliothèque fournissant les fonctionnalités du support d'exécution, notamment les communications. Notre solution a été validée sur des programmes de calcul scientifiques standards tirés des NAS Parallel Benchmarks et des Polybenchs ainsi que sur une application industrielle

    13th International Conference on Modeling, Optimization and Simulation - MOSIM 2020

    Get PDF
    Comité d’organisation: Université Internationale d’Agadir – Agadir (Maroc) Laboratoire Conception Fabrication Commande – Metz (France)Session RS-1 “Simulation et Optimisation” / “Simulation and Optimization” Session RS-2 “Planification des Besoins Matières Pilotée par la Demande” / ”Demand-Driven Material Requirements Planning” Session RS-3 “Ingénierie de Systèmes Basées sur les Modèles” / “Model-Based System Engineering” Session RS-4 “Recherche Opérationnelle en Gestion de Production” / "Operations Research in Production Management" Session RS-5 "Planification des Matières et des Ressources / Planification de la Production” / “Material and Resource Planning / Production Planning" Session RS-6 “Maintenance Industrielle” / “Industrial Maintenance” Session RS-7 "Etudes de Cas Industriels” / “Industrial Case Studies" Session RS-8 "Données de Masse / Analyse de Données” / “Big Data / Data Analytics" Session RS-9 "Gestion des Systèmes de Transport” / “Transportation System Management" Session RS-10 "Economie Circulaire / Développement Durable" / "Circular Economie / Sustainable Development" Session RS-11 "Conception et Gestion des Chaînes Logistiques” / “Supply Chain Design and Management" Session SP-1 “Intelligence Artificielle & Analyse de Données pour la Production 4.0” / “Artificial Intelligence & Data Analytics in Manufacturing 4.0” Session SP-2 “Gestion des Risques en Logistique” / “Risk Management in Logistics” Session SP-3 “Gestion des Risques et Evaluation de Performance” / “Risk Management and Performance Assessment” Session SP-4 "Indicateurs Clés de Performance 4.0 et Dynamique de Prise de Décision” / ”4.0 Key Performance Indicators and Decision-Making Dynamics" Session SP-5 "Logistique Maritime” / “Marine Logistics" Session SP-6 “Territoire et Logistique : Un Système Complexe” / “Territory and Logistics: A Complex System” Session SP-7 "Nouvelles Avancées et Applications de la Logique Floue en Production Durable et en Logistique” / “Recent Advances and Fuzzy-Logic Applications in Sustainable Manufacturing and Logistics" Session SP-8 “Gestion des Soins de Santé” / ”Health Care Management” Session SP-9 “Ingénierie Organisationnelle et Gestion de la Continuité de Service des Systèmes de Santé dans l’Ere de la Transformation Numérique de la Société” / “Organizational Engineering and Management of Business Continuity of Healthcare Systems in the Era of Numerical Society Transformation” Session SP-10 “Planification et Commande de la Production pour l’Industrie 4.0” / “Production Planning and Control for Industry 4.0” Session SP-11 “Optimisation des Systèmes de Production dans le Contexte 4.0 Utilisant l’Amélioration Continue” / “Production System Optimization in 4.0 Context Using Continuous Improvement” Session SP-12 “Défis pour la Conception des Systèmes de Production Cyber-Physiques” / “Challenges for the Design of Cyber Physical Production Systems” Session SP-13 “Production Avisée et Développement Durable” / “Smart Manufacturing and Sustainable Development” Session SP-14 “L’Humain dans l’Usine du Futur” / “Human in the Factory of the Future” Session SP-15 “Ordonnancement et Prévision de Chaînes Logistiques Résilientes” / “Scheduling and Forecasting for Resilient Supply Chains

    Algorithmique hiérarchique parallèle haute performance pour les problèmes à N-corps

    Get PDF
    Cette thèse porte sur la méthode dite « méthode multipôle rapide » qui résout hiérarchiquement le problème à N-corps avec une complexité linéaire pour n'importe quelle précision. Dans le cadre de l'équation de Laplace, nous souhaitons pouvoir traiter efficacement toutes les distributions de particules rencontrées en astrophysique et en dynamique moléculaire. Nous étudions tout d'abord deux expressions distinctes du principal opérateur (« multipôle-to-local ») ainsi que les bornes d'erreur associées. Pour ces deux expressions, nous présentons une formulation matricielle dont l'implémentation avec des routines BLAS (Basic Linear Algebra Subprograms) permet d'améliorer fortement l'efficacité de calcul. Dans la gamme de précisions qui nous intéresse, cette approche se révèle plus performante que les améliorations existantes (FFT, rotations et ondes planes), pour des distributions uniformes ou non. Outre une nouvelle structure de données pour l'octree sous-jacent et des contributions algorithmiques à la version adaptative, nous avons aussi efficacement parallélisé notre méthode en mémoire partagée et en mémoire distribuée. Enfin, des comparaisons avec des codes dédiés justifient l'intérêt de notre code pour des simulations en astrophysique

    Speedup, Communication Complexity and Blocking - A La Recherche du Temps Perdu

    Get PDF

    Beauvoir in Time

    Get PDF
    Beauvoir in Time situates Simone de Beauvoir\u27s The Second Sex in the historical context of its writing and in later contexts of its international reception, from then till now. The book takes up three aspects of Beauvoir\u27s work more recent feminists find embarrassing: bad sex, dated views about lesbians, and intersections with race and class. Through close reading of Beauvoir\u27s writing in many genres, alongside contemporaneous discourses (good and bad novels in French and English, outmoded psychoanalytic and sexological authorities, ethnographic surrealism, the writing of Richard Wright and Franz Fanon), and in light of her travels to the U.S. and China, the author uncovers insights more recent feminist methodologies obscure, showing that Beauvoir is still good to think with today

    Beauvoir in Time

    Get PDF
    Beauvoir in Time situates Simone de Beauvoir's The Second Sex in the historical context of its writing and in later contexts of its international reception, from then till now. The book takes up three aspects of Beauvoir's work more recent feminists find embarrassing: "bad sex," "dated" views about lesbians, and intersections with race and class. Through close reading of Beauvoir's writing in many genres, alongside contemporaneous discourses (good and bad novels in French and English, outmoded psychoanalytic and sexological authorities, ethnographic surrealism, the writing of Richard Wright and Franz Fanon), and in light of her travels to the U.S. and China, the author uncovers insights more recent feminist methodologies obscure, showing that Beauvoir is still good to think with today. Readership: Important to scholars of Beauvoir and existentialism, whether based in philosophy or literary studies, also accessible to those without specialized knowledge but interested in feminism in 20th century and today
    corecore