3 resultados para optimising compiler

em Universitätsbibliothek Kassel, Universität Kassel, Germany


Relevância:

20.00% 20.00%

Publicador:

Resumo:

The study aims to analyse factors affecting contributions of goat farming to household economic success and food security in three goat production systems of Ethiopia. A study was conducted in three districts of Ethiopia representing arid agro-pastoral (AAP), semi-arid agro-pastoral (SAAP) and highland mixed crop-livestock (HMCL) systems involving 180 goat keeping households. Gross margin (GM) and net benefit (NB1 and NB2) were used as indicators of economic success of goat keeping. NB1 includes in-kind benefits of goats (consumption and manure), while NB2 additionally constitutes intangible benefits (insurance and finance). Household dietary diversity score (HDDS) was used as a proxy indicator of food security. GM was significantly affected by an off-take rate and flock size interaction (P<0.001). The increment of GM due to increased off-take rate was more prominent for farmers with bigger flocks. Interaction between flock size and production system significantly (P<0.001) affected both NB1 and NB2. The increment of NB1 and NB2 by keeping larger flocks was higher in AAP system, due to higher in-kind and intangible benefits of goats in this system. Effect of goat flock size as a predictor of household dietary diversity was not significant (P>0.05). Nevertheless, a significant positive correlation (P<0.05) was observed between GM from goats and HDDS in AAP system, indicating the indirect role of goat production for food security. The study indicated that extent of utilising tangible and intangible benefits of goats varied among production systems and these differences should be given adequate attention in designing genetic improvement programs.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

The process of developing software that takes advantage of multiple processors is commonly referred to as parallel programming. For various reasons, this process is much harder than the sequential case. For decades, parallel programming has been a problem for a small niche only: engineers working on parallelizing mostly numerical applications in High Performance Computing. This has changed with the advent of multi-core processors in mainstream computer architectures. Parallel programming in our days becomes a problem for a much larger group of developers. The main objective of this thesis was to find ways to make parallel programming easier for them. Different aims were identified in order to reach the objective: research the state of the art of parallel programming today, improve the education of software developers about the topic, and provide programmers with powerful abstractions to make their work easier. To reach these aims, several key steps were taken. To start with, a survey was conducted among parallel programmers to find out about the state of the art. More than 250 people participated, yielding results about the parallel programming systems and languages in use, as well as about common problems with these systems. Furthermore, a study was conducted in university classes on parallel programming. It resulted in a list of frequently made mistakes that were analyzed and used to create a programmers' checklist to avoid them in the future. For programmers' education, an online resource was setup to collect experiences and knowledge in the field of parallel programming - called the Parawiki. Another key step in this direction was the creation of the Thinking Parallel weblog, where more than 50.000 readers to date have read essays on the topic. For the third aim (powerful abstractions), it was decided to concentrate on one parallel programming system: OpenMP. Its ease of use and high level of abstraction were the most important reasons for this decision. Two different research directions were pursued. The first one resulted in a parallel library called AthenaMP. It contains so-called generic components, derived from design patterns for parallel programming. These include functionality to enhance the locks provided by OpenMP, to perform operations on large amounts of data (data-parallel programming), and to enable the implementation of irregular algorithms using task pools. AthenaMP itself serves a triple role: the components are well-documented and can be used directly in programs, it enables developers to study the source code and learn from it, and it is possible for compiler writers to use it as a testing ground for their OpenMP compilers. The second research direction was targeted at changing the OpenMP specification to make the system more powerful. The main contributions here were a proposal to enable thread-cancellation and a proposal to avoid busy waiting. Both were implemented in a research compiler, shown to be useful in example applications, and proposed to the OpenMP Language Committee.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Software Defined Radio (SDR) hardware platforms use parallel architectures. Current concepts of developing applications (such as WLAN) for these platforms are complex, because developers describe an application with hardware-specifics that are relevant to parallelism such as mapping and scheduling. To reduce this complexity, we have developed a new programming approach for SDR applications, called Virtual Radio Engine (VRE). VRE defines a language for describing applications, and a tool chain that consists of a compiler kernel and other tools (such as a code generator) to generate executables. The thesis presents this concept, as well as describes the language and the compiler kernel that have been developed by the author. The language is hardware-independent, i.e., developers describe tasks and dependencies between them. The compiler kernel performs automatic parallelization, i.e., it is capable of transforming a hardware-independent program into a hardware-specific program by solving hardware-specifics, in particular mapping, scheduling and synchronizations. Thus, VRE simplifies programming tasks as developers do not solve hardware-specifics manually.