354 research outputs found

    Compiling global name-space programs for distributed execution

    Get PDF
    Distributed memory machines do not provide hardware support for a global address space. Thus programmers are forced to partition the data across the memories of the architecture and use explicit message passing to communicate data between processors. The compiler support required to allow programmers to express their algorithms using a global name-space is examined. A general method is presented for analysis of a high level source program and along with its translation to a set of independently executing tasks communicating via messages. If the compiler has enough information, this translation can be carried out at compile-time. Otherwise run-time code is generated to implement the required data movement. The analysis required in both situations is described and the performance of the generated code on the Intel iPSC/2 is presented

    Semi-automatic process partitioning for parallel computation

    Get PDF
    On current multiprocessor architectures one must carefully distribute data in memory in order to achieve high performance. Process partitioning is the operation of rewriting an algorithm as a collection of tasks, each operating primarily on its own portion of the data, to carry out the computation in parallel. A semi-automatic approach to process partitioning is considered in which the compiler, guided by advice from the user, automatically transforms programs into such an interacting task system. This approach is illustrated with a picture processing example written in BLAZE, which is transformed into a task system maximizing locality of memory reference

    Supporting shared data structures on distributed memory architectures

    Get PDF
    Programming nonshared memory systems is more difficult than programming shared memory systems, since there is no support for shared data structures. Current programming languages for distributed memory architectures force the user to decompose all data structures into separate pieces, with each piece owned by one of the processors in the machine, and with all communication explicitly specified by low-level message-passing primitives. A new programming environment is presented for distributed memory architectures, providing a global name space and allowing direct access to remote parts of data values. The analysis and program transformations required to implement this environment are described, and the efficiency of the resulting code on the NCUBE/7 and IPSC/2 hypercubes are described

    Analysis of the Evolution of the Hominin Jaw & Dentition

    Get PDF
    The food an organism consumes impacts the evolution of its dentition and facial morphology. As the teeth of early hominins are often some of the only parts of the skeleton to be fossilized, their morphological changes throughout time are better documented and understood than many other body parts. A literature review of articles focusing on the evolution of the dentition and mandibular morphology of members of the tribe Homininae was conducted. We deduced the ways in which tool use and cooking directly affected the teeth of hominins from the late Pleistocene to Pliocene from this information. The tangible ways that changing dietary patterns acted as selective forces throughout the course of hominin evolution are discussed

    Compiling Programs for Nonshared Memory Machines

    Get PDF
    Nonshared-memory parallel computers promise scalable performance for scientific computing needs. Unfortunately, these machines are now difficult to program because the message-passing languages available for them do not reflect the computational models used in designing algorithms. This introduces a semantic gap in the programming process which is difficult for the programmer to fill. The purpose of this research is to show how nonshared-memory machines can be programmed at a higher level than is currently possible. We do this by developing techniques for compiling shared-memory programs for execution on those architectures. The heart of the compilation process is translating references to shared memory into explicit messages between processors. To do this, we first define a formal model for distribution data structures across processor memories. Several abstract results describing the messages needed to execute a program are immediately derived from this formalism. We then develop two distinct forms of analysis to translate these formulas into actual programs. Compile-time analysis is used when enough information is available to the compiler to completely characterize the data sent in the messages. This allows excellent code to be generated for a program. Run-time analysis produces code to examine data references while the program is running. This allows dynamic generation of messages and a correct implementation of the program. While the over-head of the run-time approach is higher than the compile-time approach, run-time analysis is applicable to any program. Performance data from an initial implementation show that both approaches are practical and produce code with acceptable efficiency

    Semi-automatic Process Decomposition for Non-shared Memory Machines

    Get PDF

    Getting to know people

    Get PDF

    Leveraging Transparent Data Distribution in OpenMP via User-Level Dynamic Page Migration

    Full text link

    Mind the gap: trajectory of cognitive development in young individuals with sickle cell disease: a cross-sectional study

    Get PDF
    STUDY OBJECTIVES: Compared to typically developing children and young adults (CYA-TD), those living with Sickle Cell Disease (CYA-SCD) experience more cognitive difficulties, particularly with executive function. Few studies have examined the relative importance of silent cerebral infarction (SCI), haemoglobin and arterial oxygen content on age-related cognitive changes using cross-sectional or longitudinal (developmental trajectory) data. This study presents cohort data from a single timepoint to inform studies with multiple timepoints. METHODS: We compared cross-sectional raw and scaled scores as age-related changes in cognition (trajectories) in CYA-SCD and age-and ethnicity-matched CYA-TD. We also compared cross-sectional age-related changes in cognition (trajectories) in CYA-SCD with and without SCI to CYA-TD. General cognitive abilities were assessed using Wechsler Intelligence Scales, including the Verbal Comprehension Index (VCI) and Perceptual Reasoning Index (PRI) underpinning IQ. Executive function was evaluated using the Delis-Kaplan Executive Function System (D-KEFS) Tower subtest and the Behaviour Rating Inventory of Executive Function (BRIEF) questionnaire. SCI were identified from contemporaneous 3 T MRI; participants with overt stroke were excluded. Recent haemoglobin was available and oxygen saturation (SpO2) was measured on the day of the MRI. RESULTS: Data were available for 120 CYA-SCD [62 male; age = 16.78 ± 4.79 years; 42 (35%) with SCI] and 53 CYA-TD (23 male; age = 17.36 ± 5.16). Compared with CYA-TD, CYA-SCD experienced a delayed onset in VCI and slower rate of development for BRIEF Global Executive Composite, Metacognition Index (MI), and Behaviour Regulation Index. The rate of executive function development for the BRIEF MI differed significantly between CYA-TD and CYA-SCD, with those with SCI showing a 26% delay compared with CYA-TD. For CYA-SCD with SCI, arterial oxygen content explained 22% of the variance in VCI and 37% in PRI, while haemoglobin explained 29% of the variance in PRI. CONCLUSION: Age-related cognitive trajectories of CYA-SCD may not be impaired but may progress more slowly. Longitudinal studies are required, using tests unaffected by practice. In addition to initiation of medical treatment, including measures to improve arterial oxygen content, early cognitive intervention, educational support, and delivery of extracurricular activities could support cognitive development for CYA-SCD.Graphical Abstract
    corecore