316 research outputs found

    Clarifying and compiling C/C++ concurrency: from C++11 to POWER

    Get PDF
    The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in the form of a subtle *relaxed memory model* (the *C++11 model*). This aims to permit compiler optimisation and to accommodate the differing relaxed-memory behaviours of mainstream multiprocessors, combining simple semantics for most code with high-performance *low-level atomics* for concurrency libraries. In this paper, we first establish two simpler but provably equivalent models for C++11, one for the full language and another for the subset without consume operations. Subsetting further to the fragment without low-level atomics, we identify a subtlety arising from atomic initialisation and prove that, under an additional condition, the model is equivalent to sequential consistency for race-free programs

    Constructing cities, deconstructing scaling laws

    Get PDF
    Cities can be characterised and modelled through different urban measures. Consistency within these observables is crucial in order to advance towards a science of cities. Bettencourt et al have proposed that many of these urban measures can be predicted through universal scaling laws. We develop a framework to consistently define cities, using commuting to work and population density thresholds, and construct thousands of realisations of systems of cities with different boundaries for England and Wales. These serve as a laboratory for the scaling analysis of a large set of urban indicators. The analysis shows that population size alone does not provide enough information to describe or predict the state of a city as previously proposed, indicating that the expected scaling laws are not corroborated. We found that most urban indicators scale linearly with city size regardless of the definition of the urban boundaries. However, when non-linear correlations are present, the exponent fluctuates considerably.Comment: Accepted for publication, Journal of the Royal Society Interfac

    Evaluation of the South Yorkshire Social Infrastructure Programme - Report H: Neighbourhood Infrastructure

    Get PDF

    Evaluation of the South Yorkshire Social Infrastructure Programme - Report D: Investment in Volunteer Centres

    Get PDF

    Evaluation of the South Yorkshire Social Infrastructure Programme - Report F: Core Infrastructure Services

    Get PDF

    Synchronising C/C++ and POWER

    Get PDF
    Shared memory concurrency relies on synchronisation primitives: compare-and-swap, load-reserve/store-conditional (aka LL/SC), language-level mutexes, and so on. In a sequentially consistent setting, or even in the TSO setting of x86 and Sparc, these have well-understood semantics. But in the very relaxed settings of IBM®, POWER®, ARM, or C/C++, it remains surprisingly unclear exactly what the programmer can depend on. This paper studies relaxed-memory synchronisation. On the hardware side, we give a clear semantic characterisation of the load-reserve/store-conditional primitives as provided by POWER multiprocessors, for the first time since they were introduced 20 years ago; we cover their interaction with relaxed loads, stores, barriers, and dependencies. Our model, while not officially sanctioned by the vendor, is validated by extensive testing, comparing actual implementation behaviour against an oracle generated from the model, and by detailed discussion with IBM staff. We believe the ARM semantics to be similar. On the software side, we prove sound a proposed compilation scheme of the C/C++ synchronisation constructs to POWER, including C/C++ spinlock mutexes, fences, and read-modify-write operations, together with the simpler atomic operations for which soundness is already known from our previous work; this is a first step in verifying concurrent algorithms that use load-reserve/store-conditional with respect to a realistic semantics. We also build confidence in the C/C++ model in its own terms, fixing some omissions and contributing to the C standards committee adoption of the C++11 concurrency model

    Mathematizing C++ concurrency

    Get PDF
    Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly defined. This motivated an ongoing shared effort by the standards committees to specify concurrent behaviour in the next versions of both languages. They aim to provide strong guarantees for race-free programs, together with new (but subtle) relaxed-memory atomic primitives for high-performance concurrent code. However, the current draft standards, while the result of careful deliberation, are not yet clear and rigorous definitions, and harbour substantial problems in their details. In this paper we establish a mathematical (yet readable) semantics for C++ concurrency. We aim to capture the intent of the current (`Final Committee') Draft as closely as possible, but discuss changes that fix many of its problems. We prove that a proposed x86 implementation of the concurrency primitives is correct with respect to the x86-TSO model, and describe our Cppmem tool for exploring the semantics of examples, using code generated from our Isabelle/HOL definitions. Having already motivated changes to the draft standard, this work will aid discussion of any further changes, provide a correctness condition for compilers, and give a much-needed basis for analysis and verification of concurrent C and C++ programs

    Alguns aspectos da avifauna da Ilha de Santa Maria.

    Get PDF
    V Expedição Científica do Departamento de Biologia – Santa Maria e Formigas 1990.0s objectivos da presente expedição foram os seguintes: 1) observação de espécies residentes e migratórias; 2) obtenção de dados sobre a distribuição de Calonectris diomedea borealis (Cory, 1881) cagarro; 3) consulta das colecções de aves preservadas do Externato de Vila do Porto e da colecção particular do Senhor Pombo; 4) obtenção de dados sobre a distribuição e ciclo reprodutor de Sterna dougallii (Montagu, 1813) garajau-rosado. Apesar de terem sido definidos estes quatro objectivos, os estudos desenvolvidos visaram sobretudo a distribuição e ciclo reprodutor de S. dougallii (Montagu, 1813). Trata-se de uma espécie que consta da lista mundial de aves ameaçadas da ICBP (International Council for Bird Preservation), do anexo I de Conservação de Aves Selvagens da CEE e do Apêndice II da Convenção de Berna. Ocorre no Reino, França, Irlanda, Portugal (Açores, Selvagens e Madeira) e Espanha (Canárias)

    Social investment and its impact: the evaluation of charity bank in the north: executive summary

    Get PDF

    Social Investment and its Impact: The Evaluation of Charity Bank in the North

    Get PDF
    • …
    corecore