Spelling suggestions: "subject:"lowsensitive"" "subject:"forsensitive""
1 |
Lightweight Software Isolation via Flow-Sensitive Capabilities in Scala / Lättviktsisolering för mjukvara via flödeskänsliga förmågor i ScalaReimers, Erik January 2017 (has links)
Aliasing is a potential source of problems in software development and can, for example,lead to data races in concurrent programs. More recent programming languages includealiasing control in order to catch more errors at compile time. However, this does notexist for most widely-used languages.LaCasa introduces aliasing control to Scala. LaCasa is a type system and program-ming model that provides lightweight unique and affine (consumable) object referencesin Scala. The unique references provided by LaCasa enable messages to be passed effi-ciently by reference. They also guarantee a deep-copy semantic which makes it possible tomore easily port a concurrent program from running on a single machine to being dis-tributed and running on a large cluster of machines.One aspect that makes LaCasa inconvenient to use is the fact that code needs to bewritten in an explicit continuation-passing style (CPS), different to how code is usuallywritten, which makes programs harder to write, understand and maintain.This project presents a flow-sensitive version of LaCasa which avoids the use of con-tinuations. Flow-sensitivity is achieved by adding an extra compiler phase that performsa static analysis, enforcing LaCasa’s type-checking rules. The flow-sensitive version wasevaluated by measuring the code complexity compared to the original flow-insensitiveLaCasa. A few case studies were performed, as part of the evaluation, to show how flow-sensitive LaCasa can be used to extend LaCasa into other fields of application.The evaluation showed that a flow-sensitive LaCasa can reduce the complexity of ap-plications using LaCasa. It allows programmers to write code in a more usual way whichmakes LaCasa easier to use. / Aliasing är en potentiell källa till problem inom mjukvaruutveckling och can till exempelleda till data races i samtidiga program. Nyare programmeringsspråk inkluderar aliasing-kontroller för att kunna fånga fel vid kompilering. Sådana kontroller existerar inte för deflesta utbredda språken.LaCasa introducerar aliasing-kontroll till Scala. LaCasa är ett typsystem och program-meringsmodell som tillhandahåller unika och affina (förbrukningsbara) objektreferenser iScala. De unika references som tillhandahålls av LaCasa gör det möjligt att effektivt skic-ka meddelanden via referenser. De garanterar också en djup-kopierings-semantik som gördet möjligt att mer enkelt konvertera ett samtidigt program från att köras på en endamaskin till att distribueras och köras på ett stort maskinkluster.En aspekt som gör LaCasa obekvämt att använda är att kod måste skrivas i en ex-plicit continuation-passing-stil (CPS), olik det vanliga sättet att skriva kod, som gör pro-gram svårare att skriva, förstå och underhålla.Det här projektet presenterar en flödeskänslig version av LaCasa som unviker an-vändningen av continuations. Flödeskänslighet uppnås genom att lägga till en extra kom-pileringsfas som utför en statisk analys som upprätthåller LaCasas typ-regler. Den flö-deskänsliga versionen utvärderades genom att mäta kodkomplexitet jämfört med denursprungliga flödesokänsliga LaCasa. Några fallstudier utfördes, som en del av utvär-deringen, för att visa hur flödekänsliga LaCasa kan användas för att utöka LaCasa tillandra användningsområden.Utvärdering visade att ett flödeskänsligt LaCasa kan reducera komplexiteten hos ap-plikationer som använder LaCasa. Det tillåter programmerare att skriva kod på ett mervanligt sätt som gör LaCasa enklare att använda.
|
2 |
The implementation of visualization tool for dynamic 4D flow-sensitive MR dataLai, Zhong-De 19 June 2012 (has links)
Based on many studies and experiments, blood flow patterns are associated with cardiovascular diseases and it usually is a sign of cardiovascular disease when the blood flow becomes unusual. Magnetic resonance (MR) imaging is a non-invasive medical technique and the characteristic of phase contrast can use to measure the flow velocity and patterns in vivo.
As far as we know, for the cardiovascular of region of interest, 4D Flow-sensitive MRI technology is good at spatial coverage and temporal resolutions.It is easier for the researcher to analyze blood flow patterns in the clinical diagnosis by visualization processing.
EnSight (CEI, USA), a kind of commercial software, is often used to do visualization processing of data of 4D Flow-sensitive MRI. However, before visualization of the data, several actions must be completed, such as ROI selection, correction or conversion of data, and etc.
Therefore, our thesis hopes to develop a simple but practical user interface tool for 4D Flow-sensitive MRI data. From reading the file and ROI selection to correction and conversion of data as well as the visualization processing are completed by this tool. It provides researchers a rapid examination of data and analysis of blood flow patterns in the diagnosis.
|
3 |
Expression data flow graph: precise flow-sensitive pointer analysis for C programsThiessen, Rei Unknown Date
No description available.
|
4 |
Analyse des pointeurs pour le langage C / Points to analysis for the C languageMensi, Amira 24 June 2013 (has links)
Les analyses statiques ont pour but de déterminer les propriétés des programmes au moment de la compilation. Contrairement aux analyses dynamiques, le comportement exact du programme ne peut être connu. Par conséquent, on a recours à des approximations pour remédier à ce manque d'information. Malgré ces approximations, les analyses statiques permettent des optimisations et des transformations efficaces pour améliorer les performances des programmes. Parmi les premières analyses du processus d'optimisation figure l'analyse des pointeurs. Son but est d'analyser statiquement un programme en entrée et de fournir en résultat une approximation des emplacements mémoire vers lesquels pointent ses variables pointeurs. Cette analyse est considérée comme l'une des analyses de programmes les plus délicates et l'information qu'elle apporte est très précieuse pour un grand nombre d'autres analyses clientes. En effet, son résultat est nécessaire à d'autres optimisations, comme la propagation de constante, l'élimination du code inutile, le renommage des scalaires ainsi que la parallélisation automatique des programmes. L'analyse des pointeurs est très nécessaire pour l'exploitation du parallélisme présent dans les applications scientifiques écrites en C. Ceci est dû au fait que les tableaux, très présents dans ce type d'applications, sont accédés via les pointeurs. Il devient nécessaire d'analyser les dépendances entre les éléments de tableau dans le but de paralléliser les boucles. Le langage C présente beaucoup de difficultés lors de son analyse par la liberté qu'il offre aux utilisateurs pour gérer et manipuler la mémoire par le biais des pointeurs. Ces difficultés apparaissent par exemple lors de l'accès aux tableaux par pointeurs, l'allocation dynamique (via «malloc») ainsi que les structures de données récursives. L'un des objectifs principaux de cette thèse est de déterminer les emplacements mémoire vers lesquels les pointeurs pointent. Ceci se fait en assurant plusieurs dimensions comme : - la sensibilité au flot de contrôle, c'est-à-dire la mise à jour des informations d'un point programme à un autre ; - la non-sensibilité au contexte, c'est-à-dire l'utilisation de résumés au lieu de l'analyse du corps de la fonction à chaque appel ; - la modélisation des champs pointeurs des structures de données agrégées, dans laquelle chaque champ représente un emplacement mémoire distinct. D'autres aspects sont pris en compte lors de l'analyse des programmes écrits en C comme la précision des emplacements mémoire alloués au niveau du tas, l'arithmétique sur pointeurs ou encore les pointeurs vers tableaux. Notre travail permet l'amélioration des résultats des analyses clientes et en particulier il permet la parallélisation des boucles lorsqu'on accède aux éléments de tableaux via les pointeurs, la détection de code inutile ou le calcul du graphe de dépendances. Il est implémenté dans le compilateur parallélliseur PIPS (Parallélisation Interprocédurale de Programmes Scientifiques) et permet d'analyser, en particulier, les applications scientifiques de traitement du signal tout en assurant une analyse intraprocédurale précise et une analyse interprocédurale efficace via les résumés. / Static analysis algorithms strive to extract the information necessary for the understanding and optimization of programs at compile time. The potential values of the variables of type pointer are the most difficult information to determine. This information is often used to assess if two pointers are potential aliases, i.e. if they can point to the same memory area. An analysis of pointers, also called points-to analysis, may provide more precision to other analyses such as constant propagation, analysis of dependencies or analysis of live variables. The analysis of pointers is very important for the exploitation of parallelism in scientific C programs since the most important structures they manipulate are arrays, which are typically accessed by pointers. It is necessary to analyse the dependencies between arrays in order to exploit the parallelism between loops. C language is very hard to analyse since it allows to users to manipulate the memory through pointers. These difficulties arise for example when accessing arrays by pointers, dynamic allocation (via "malloc") and recursive data structures. Points-to analysis may also attempt to handle recursive data structures and other structures that are accessed by pointers. This work provides a points-to analysis which is : - flow-sensitive, by taking into account the order of execution of instructions ; - field-sensitive, since structure fields are treated as individual locations ; - context-insensitive, because functions summaries are computed to avoid re-analyzing functions bodies. Other issues such as heap modeling, pointer arithmetics and pointers to arrays are also taken into account while analyzing C programs. Our intraprocedural analysis provides precise results to client analyses, in particular it allows parallelization when accessing the array elements loops via pointers, detecting useless code or computing the dependency graph. while our interprocedural one allows to propagate them efficiently. Our work is implemented within the PIPS (Parallélisation Interprocédurale de Programmes Scientifiques) parallelizer, a framework designed to analyze, optimize and parallelize scientific and signal processing applications. Keywords : static analysis, points-to analysis, flow-sensitive, context-insensitive, field-sensitive.
|
5 |
Access Path Based Dataflow Analysis For Sequential And Concurrent ProgramsArnab De, * 12 1900 (has links) (PDF)
In this thesis, we have developed a flow-sensitive data flow analysis framework for value set analyses for Java-like languages. Our analysis frame work is based on access paths—a variable followed by zero or more field accesses. We express our abstract states as maps from bounded access paths to abstract value sets. Using access paths instead of allocation sites enables us to perform strong updates on assignments to dynamically allocated memory locations. We also describe several optimizations to reduce the number of access paths that need to be tracked in our analysis. We have instantiated this frame work for flow-sensitive pointer and null-pointer analysis for Java. We have implemented our analysis inside the Chord frame work. A major part of our implementation is written declaratively using Datalog. We leverage the use of BDDs in Chord for keeping our memory usage low. We show that our analysis is much more precise and faster than traditional flow-sensitive and flow-insensitive pointer and null-pointer analysis for Java.
We further extend our access path based analysis frame work to concurrent Java programs. We use the synchronization structure of the programs to transfer abstract states from one thread to another. Therefore, we do not need to make conservative assumptions about reads or writes to shared memory. We prove our analysis to be sound for the happens-before memory model, which is weaker than most common memory models, including sequential consistency and the Java Memory Model. We implement a null-pointer analysis for concurrent Java programs and show it to be more precise than the traditional analysis.
|
Page generated in 0.0507 seconds