Rosa Castillo's research while affiliated with University of Malaga and other places

What is this page?


This page lists the scientific contributions of an author, who either does not have a ResearchGate profile, or has not yet added these contributions to their profile.

It was automatically created by ResearchGate to create a record of this author's body of work. We create such pages to advance our goal of creating and maintaining the most comprehensive scientific repository possible. In doing so, we process publicly available (personal) data relating to the author as a member of the scientific community.

If you're a ResearchGate member, you can follow this page to keep up with this author's work.

If you are this author, and you don't want us to display this page anymore, please let us know.

Publications (6)


A data dependence test based on the projection of paths over shape graphs
  • Article

December 2012

·

147 Reads

·

3 Citations

Journal of Parallel and Distributed Computing

·

·

·

[...]

·

We propose a data dependence detection test based on a new conflict analysis algorithm for C codes which make intensive use of recursive data structures dynamically allocated in the heap. This algorithm requires two pieces of information from the code section under analysis (a loop or a recursive function): (i) abstract shape graphs that represent the state of the heap at the code section; and (ii) path expressions that collect the traversing information for each statement. Our algorithm projects the path expressions on the shape graphs and checks over the graphs to ascertain whether one of the sites reached by a write statement matches one of the sites reached by another statement on a different loop iteration (or on a different call instance in a recursive function), in which case a conflict between the two statements is reported. Although our algorithm presents exponential complexity, we have found that in practice the parameters that dominate the computational cost have very low values, and to the best of our knowledge, all the other related studies involve higher costs. In fact, our experimental results show reductions in the data dependence analysis times of one or two orders of magnitude in some of the studied benchmarks when compared to a previous data dependence algorithm. Thanks to the information on uncovered data dependences, we have manually parallelized these codes, achieving speedups of 2.19 to 3.99 in four cores.

Share

Conflict analysis for heap-based data dependence detection

January 2010

·

129 Reads

Advances in Parallel Computing

In this paper we address the problem of detecting carried data dependences on loops or recursive functions for codes that create and traverse dynamic data structures. We propose a data dependence detection test based on a new conflict analysis algorithm. This algorithm requires two pieces of information: i) abstract shape graphs that represent the state of the heap at the code section under analysis and ii) path expressions that collect the traversing information for each statement. Our algorithm projects the path expressions on the shape graphs and checks over the graph if one of the sites reached by a write statement matches one of the sites reached by another statement on a different iteration, in which case a conflict between the two statements is reported. The proposed approach may improve other previous works by some orders of magnitude.


Complete Def-Use Analysis in Recursive Programs with Dynamic Data Structures

August 2008

·

156 Reads

·

4 Citations

Based on some of our previous works, we show in this paper the possibility of accelerating complex analyses (such as shape analyses, dependence analyses...) thanks to a complete def-use chain analysis. In particular, we put our efforts in accelerating the shape analysis technique developed in our research group. Using the gathered Def-Use(DU) information, we have implemented a code slicing pass that computes the relevant statements required by a client analysis. This work is part of a heap-directed pointer analysis framework, where our final goal is the automatic parallelization of codes based on heap-stored dynamic/recursive data structures.


Figure 1. Data dependence test simple example.
Figure 2. Building a RSG for each statement of an example code.
Figure 3. A singly-linked list in both domains.
Figure 4. Shared and cyclic in node n3.
Figure 8. Steps for x=y->sel statement. We present in fig. 7 a worklist algorithm for solving the dataflow equations presented in fig. 6. The input of our

+1

Parallelizing irregular C codes assisted by interprocedural shape analysis
  • Conference Paper
  • Full-text available

May 2008

·

223 Reads

·

12 Citations

In the new multicore architecture arena, the problem of improving the performance of a code is more in the software side than in the hardware one. However, optimizing irregular dynamic data structure based codes for such architectures is not easy, either by hand or compiler assisted. Regarding this last approach, shape analysis is a static technique that achieves abstraction of dynamic memory and can help to disambiguate, quite accurately, memory references in programs that create and traverse recursive data structures. This kind of analysis has promising applicability for accurate data dependence tests in loops or recursive functions that traverse dynamic data structures. However, support for interprocedural programs in shape analysis is still a challenge, especially in the presence of recursive functions. In this work we present a novel fully context-sensitive interprocedural shape analysis algorithm that supports recursion and can be used to uncover parallelism. Our approach is based on three key ideas: i) intraprocedural support based on "coexistent links sets" to precisely describe the memory configurations during the abstract interpretation of the C code; ii) interprocedural support based on "recursive flow links" to trace the state of pointers in previous calls; and Hi) annotations of the read/written heap locations during the program analysis. We present preliminary experiments that reveal that our technique compares favorably with related work, and obtains precise memory abstractions in a variety of recursive programs that create and manipulate dynamic data structures. We have also implemented a data dependence test over our interprocedural shape analysis. With this test we have obtained promising results, automatically detecting parallelism in three C codes, which have been successfully parallelized.

Download

Fig. 1. General layout for the pointer analysis framework
Fig. 4. Different modules working together within the pointer analysis framework.
Towards a Versatile Pointer Analysis Framework

November 2006

·

152 Reads

·

3 Citations

Lecture Notes in Computer Science

Current pointer analysis techniques fail to find parallelism in heap accesses. However, some of them are still capable of obtaining valuable information about the way dynamic memory is used in pointer-based programs. It would be desirable to have a unified framework with a broadened perspective that can take the best out of available techniques and compensate for their weaknesses. We present an early view of such a framework, featuring a graph-based shape analysis technique. We describe some early experiments that obtain detailed information about how dynamic memory arranges in the heap. Furthermore, we document how def-use information can be used to greatly optimize shape analysis.


Citations (3)


... Cetus is already in use by a number of research groups in the U.S. and worldwide [83][84][85][86][87][88][89][90][91][92]. ...

Reference:

A journey through performance evaluation, tuning, and analysis of parallelized applications and parallel architectures: Quantitative approach
Parallelizing irregular C codes assisted by interprocedural shape analysis

... More precisely, our analysis is a static dependency analysis for the αSmil language (presented in Chapter 4) that computes a conservative approximation of the input fragments on which the operations depend. Dependence and liveness analyses are traditionally used in the compilation realm, for code optimization ( Kennedy, 1978), dead code elimination ( Knoop, Rüthing, and Steffen, 1994; Wand and Siveroni, 1999;Liu and Stoller, 2003), program slicing ( Weiser, 1984;Tip, 1995;Reps and Turnidge, 1996;Castillo et al., 2008) or compile-time garbage collection ( Jones and Métayer, 1989;Park and Goldberg, 1992; Wand and Clinger, 1998). In contrast to the vast majority of static analyses that are meant to be used strictly on code and in an essentially purely automatic setting, our analysis is thought of as a companion tool to be exploited in the middle of interactive program verification and it is designed to be used on programs as well as on specifications. ...

Complete Def-Use Analysis in Recursive Programs with Dynamic Data Structures
  • Citing Conference Paper
  • August 2008

... Pointer analysis also helps in performing data prefetching based on future uses and updates on heap data structures in the program [19]. Data locality of dynamically allocated data has been identified and exploited using heap analysis by Castillo et al. [9]. ...

Towards a Versatile Pointer Analysis Framework

Lecture Notes in Computer Science