9 research outputs found

    Abstract conflict driven learning

    Full text link

    Abstract Interpretation as Automated Deduction

    Get PDF
    International audienceAlgorithmic deduction and abstract interpretation are two widely used and successful approaches to implementing program veri-fiers. A major impediment to combining these approaches is that their mathematical foundations and implementation approaches are fundamentally different. This paper presents a new, logical perspective on abstract interpreters that perform reachability analysis using non-relational domains. We encode reachability of a location in a control-flow graph as satisfiability in a monadic, second-order logic parameterized by a first-order theory. We show that three components of an abstract interpreter, the lattice, transformers and iteration algorithm, represent a first-order, substructural theory, parametric deduction and abduction in that theory, and second-order constraint propagation

    Contraintes sur les réels et contraintes sur les flottants: contributions.

    Get PDF
    Mes recherches ont principalement porté sur la programmation par contraintes, avec deux thèmes de prédilection, les contraintes sur les réels et les contraintes sur les flottants.Sur les réels, ces travaux se caractérisent principalement par l’utilisation rigoureuse de relaxations linéaires pour la résolution de systèmes de contraintes sur les réels et d’optimisation globale d’une fonction réelle soumise à un ensemble de contraintes sur les réels. Dans le premier cas, notre approche s’appuie sur un filtrage global qui capture le sous-système linéaire augmenté d’un certain nombre de relaxations linéaires de termes non linéaires. Dans le second cas, les relaxations linéaires sont utilisées afin de déterminer une borne inférieure de la fonction objectif. Dans les deux cas, le calcul des coefficients des relaxations linéaires est effectué par des procédures rigoureuses garantes de la préservation de l’ensemble des solutions du problème initial, et le système linéaire obtenu est résolu à l’aide d’un simplexe dont le minimum global est lui aussi calculé de manière rigoureuse.Sur les flottants, ces recherches se sont traduites par l'introduction des contraintes sur les flottants. Ce type de contraintes particulières n’avait pas d’existence avant ces travaux. Elles sont pourtant nécessairement pour traiter des expressions faisant appel à des calculs sur les flottants, chose à laquelle de plus en plus de programmes font appel. Ces recherches partent de l’introduction d’un cadre pour les traiter correctement, pour s’attacher ensuite à améliorer le fonctionnement d’un solveur sur les flottants, que ce soit en introduisant une forme de filtrage plus performante basée sur une consistance de type 2B, en améliorant le fonctionnement de projections particulières telles que l’addition et la soustraction, en plongeant les contraintes sur les flottants dans les réels, ou en faisant collaborer contraintes sur les flottants et interprétation abstraite. Une application à la détection de fausses alarmes illustre le fonctionnement des outils développés sur un exemple industriel

    Évaluation de l'impact des erreurs numériques dans un logiciel de calcul de dose en radiothérapie par la méthode de Monte-Carlo sur GPU

    Get PDF
    RÉSUMÉ Cette étude se penche sur les erreurs issues de la représentation imparfaite des nombres réels par les ordinateurs dans le cadre de programmes de calcul scientifique, plus particulièrement ceux exécutés sur carte graphique (GPU). Ces erreurs se produisent parce que les nombres manipulés constituent seulement une approximation des nombres réels, qui doivent donc être arrondis. En général, les calculs sont faits avec une précision suffisante pour donner les résultats attendus, mais il arrive que les erreurs d’arrondi s’accumulent ou se combinent pour donner des résultats inexacts. L’objectif de ce travail est de déterminer, à l’aide d’une série de tests, si de telles erreurs sont présentes dans un programme spécifique sur GPU, bGPUMCD. bGPUMCD est un programme utilisé en radiothérapie pour simuler la quantité de radiation distribuée à un patient. La simulation est basée sur une méthode de Monte-Carlo, c’est-à-dire qu’un grand nombre de particules sont simulées individuellement, avec leur trajectoire et leurs interactions, et l’énergie qu’elles déposent en chaque point du volume simulé est enregistrée. Pour calculer le dépôt d’énergie, le volume est divisé en une grille régulière de voxels, qui contiennent chacun l’énergie donnée par toutes les particules qui les ont traversés. Pour évaluer la précision des résultats de bGPUMCD, trois aspects des calculs sont testés : la précision utilisée (simple ou double), l’implantation des fonctions arithmétiques (logicielle ou matérielle) et la dimension des voxels. Deux composantes de bGPUMCD sont également analysées plus en profondeur : l’accumulation de l’énergie dans chaque voxel et le traçage de particule. Pour faciliter, de façon générale, l’analyse de programmes pour des erreurs numériques, une méthode automatisée de détection d’erreurs est développée. Les résultats révèlent la présence d’erreurs importantes dans le processus d’accumulation d’énergie dans les voxels entourant les sources de radiation. Lorsque l’énergie atteint une certaine quantité, les contributions individuelles des particules sont trop petites pour avoir un effet lors d’une addition en précision simple. Par ailleurs, une fonction importante pour le calcul de la trajectoire des particules retourne dans quelques cas rares un résultat erroné. Les autres aspects étudiés, soient l’implantation particulière des fonctions arithmétiques et la discrétisation en voxels, ne semblent pas causer d’erreurs majeures. Finalement, la méthode automatique d’analyse mise au point permet de détecter les erreurs trouvées par d’autres moyens au cours de l’étude. Des erreurs d’origine numérique se produisent en effet dans bGPUMCD, sous des conditions très spécifiques. Certaines de ces erreurs sont facilement réparables, par exemple en changeant l’ordre de certaines opérations, tandis que d’autres nécessitent des changements majeursv dans les algorithmes utilisés. Les types d’erreurs détectées sont très génériques et peuvent se retrouver dans de nombreux programmes de calcul scientifique, qu’ils soient basés sur des méthodes de Monte-Carlo ou non ; nos résultats peuvent donc servir d’exemples pour certaines situations auxquelles il est nécessaire de porter une attention particulière lors du développement d’une application sur GPU.----------ABSTRACT This study examines errors produced by the representation of real numbers by processors in the context of a scientific program executed on a graphics processor (GPU). This representation only approximates real numbers and thus contains a rounding error. In most cases, this error is too small to significantly alter the computed values, but in some situations it can accumulate in such a way that the results become inaccurate or meaningless. The purpose of this work is to design a series of tests that will help determine whether such errors occur in a specific GPU-based program, bGPUMCD. bGPUMCD is used in radiation therapy to simulate the radiation distribution received by a patient. This simulation is based on Monte Carlo methods, by which a large number of particles are simulated individually to determine the amount of energy they deposit in every part of the simulated volume. The volume is divided into voxels for the purpose of energy scoring. To provide a general idea of the precision of bGPUMCD’s results, three aspects of the computations were tested: their precision (single or double), the implementation used for arithmetic functions (software of hardware) and voxel size. Additionally, two components of bGPUMCD, energy accumulation per voxel and particle tracking, were further tested. Finally, an automatic error detection method was implemented in order to provide an easier way to analyse programs for numerical errors. Major errors were detected in the energy accumulation process, in the voxels surrounding radiation sources. When the energy in a voxel reaches a certain threshold, contributions from individual particles are too small to be taken into account during a single-precision addition. In the particle tracking component, a function was found to return a meaningless value in some rare cases. The other tests indicate no major errors in other aspects of the computations (arithmetic functions and discretization). The automatic analysis method was able to detect the errors found by other means during the study. Numerical errors do occur in bGPUMCD, under very specific conditions. Some can be avoided by simply reordering some operations, while others require major changes in the algorithm. The detected errors arise from very simple computations which can be found in many program other than bGPUMCD, which may or may not be Monte Carlo simulations. When precision is important, careful consideration must be given to such possibilities

    Programming with Numerical Uncertainties

    Get PDF
    Numerical software, common in scientific computing or embedded systems, inevitably uses an approximation of the real arithmetic in which most algorithms are designed. In many domains, roundoff errors are not the only source of inaccuracy and measurement as well as truncation errors further increase the uncertainty of the computed results. Adequate tools are needed to help users select suitable approximations (data types and algorithms) which satisfy their accuracy requirements, especially for safety- critical applications. Determining that a computation produces accurate results is challenging. Roundoff errors and error propagation depend on the ranges of variables in complex and non-obvious ways; even determining these ranges accurately for nonlinear programs poses a significant challenge. In numerical loops, roundoff errors grow, in general, unboundedly. Finally, due to numerical errors, the control flow in the finite-precision implementation may diverge from the ideal real-valued one by taking a different branch and produce a result that is far-off of the expected one. In this thesis, we present techniques and tools for automated and sound analysis, verification and synthesis of numerical programs. We focus on numerical errors due to roundoff from floating-point and fixed-point arithmetic, external input uncertainties or truncation errors. Our work uses interval or affine arithmetic together with Satisfiability Modulo Theories (SMT) technology as well as analytical properties of the underlying mathematical problems. This combination of techniques enables us to compute sound and yet accurate error bounds for nonlinear computations, determine closed-form symbolic invariants for unbounded loops and quantify the effects of discontinuities on numerical errors. We can furthermore certify the results of self-correcting iterative algorithms. Accuracy usually comes at the expense of resource efficiency: more precise data types need more time, space and energy. We propose a programming model where the scientist writes his or her numerical program in a real-valued specification language with explicit error annotations. It is then the task of our verifying compiler to select a suitable floating-point or fixed-point data type which guarantees the needed accuracy. Sometimes accuracy can be gained by simply re-arranging the non-associative finite-precision computation. We present a scalable technique that searches for a more optimal evaluation order and show that the gains can be substantial. We have implemented all our techniques and evaluated them on a number of benchmarks from scientific computing and embedded systems, with promising results

    Numeric bounds analysis with conflict-driven learning

    No full text
    This paper presents a sound and complete analysis for determining the range of floating-point variables in control software. Existing approaches to bounds analysis either use convex abstract domains and are efficient but imprecise, or use floating-point decision procedures, and are precise but do not scale. We present a new analysis that elevates the architecture of a modern SAT solver to operate over floating-point intervals. In experiments, our analyser is consistently more precise than a state-of-the-art static analyser and significantly outperforms floating-point decision procedures

    Numeric bounds analysis with conflict-driven learning

    No full text
    This paper presents a sound and complete analysis for determining the range of floating-point variables in control software. Existing approaches to bounds analysis either use convex abstract domains and are efficient but imprecise, or use floating-point decision procedures, and are precise but do not scale. We present a new analysis that elevates the architecture of a modern SAT solver to operate over floating-point intervals. In experiments, our analyser is consistently more precise than a state-of-the-art static analyser and significantly outperforms floating-point decision procedures
    corecore