2,062 research outputs found
Vectorization and Parallelization of the Adaptive Mesh Refinement N-body Code
In this paper, we describe our vectorized and parallelized adaptive mesh
refinement (AMR) N-body code with shared time steps, and report its performance
on a Fujitsu VPP5000 vector-parallel supercomputer. Our AMR N-body code puts
hierarchical meshes recursively where higher resolution is required and the
time step of all particles are the same. The parts which are the most difficult
to vectorize are loops that access the mesh data and particle data. We
vectorized such parts by changing the loop structure, so that the innermost
loop steps through the cells instead of the particles in each cell, in other
words, by changing the loop order from the depth-first order to the
breadth-first order. Mass assignment is also vectorizable using this loop order
exchange and splitting the loop into loops, if the cloud-in-cell
scheme is adopted. Here, is the number of dimension. These
vectorization schemes which eliminate the unvectorized loops are applicable to
parallelization of loops for shared-memory multiprocessors. We also
parallelized our code for distributed memory machines. The important part of
parallelization is data decomposition. We sorted the hierarchical mesh data by
the Morton order, or the recursive N-shaped order, level by level and split and
allocated the mesh data to the processors. Particles are allocated to the
processor to which the finest refined cells including the particles are also
assigned. Our timing analysis using the -dominated cold dark matter
simulations shows that our parallel code speeds up almost ideally up to 32
processors, the largest number of processors in our test.Comment: 21pages, 16 figures, to be published in PASJ (Vol. 57, No. 5, Oct.
2005
An exploration of CUDA and CBEA for a gravitational wave data-analysis application (Einstein@Home)
We present a detailed approach for making use of two new computer hardware
architectures -- CBEA and CUDA -- for accelerating a scientific data-analysis
application (Einstein@Home). Our results suggest that both the architectures
suit the application quite well and the achievable performance in the same
software developmental time-frame, is nearly identical.Comment: Accepted for publication in International Conference on Parallel
Processing and Applied Mathematics (PPAM 2009
Parafrase restructuring of FORTRAN code for parallel processing
Parafrase transforms a FORTRAN code, subroutine by subroutine, into a parallel code for a vector and/or shared-memory multiprocessor system. Parafrase is not a compiler; it transforms a code and provides information for a vector or concurrent process. Parafrase uses a data dependency to reveal parallelism among instructions. The data dependency test distinguishes between recurrences and statements that can be directly vectorized or parallelized. A number of transformations are required to build a data dependency graph
Vienna FORTRAN: A FORTRAN language extension for distributed memory multiprocessors
Exploiting the performance potential of distributed memory machines requires a careful distribution of data across the processors. Vienna FORTRAN is a language extension of FORTRAN which provides the user with a wide range of facilities for such mapping of data structures. However, programs in Vienna FORTRAN are written using global data references. Thus, the user has the advantage of a shared memory programming paradigm while explicitly controlling the placement of data. The basic features of Vienna FORTRAN are presented along with a set of examples illustrating the use of these features
Parallelization of the AVL FIRE Benchmark with SVM-Fortran
This article outlines the parallelization of an irregular grid application with SVM-Fortran. It describes the different optimizations and their effectiveness. The parallelization was much simplified by the performance analysis tool OPAL, a source code based tool for requesting and analyzing runtime performance data. Although shared memory parallelization is easier than distributed memory parallelization, understanding and eliminating the overhead from page faults is impossible without such a tool. It relates the page faults to the arrays and to the location in the source code. An area which is not supported by OPAL but where supporting tools are highly desirable, is the performance degradation due to low utilization of the on-chip cache
High Performance Algorithms for Counting Collisions and Pairwise Interactions
The problem of counting collisions or interactions is common in areas as
computer graphics and scientific simulations. Since it is a major bottleneck in
applications of these areas, a lot of research has been carried out on such
subject, mainly focused on techniques that allow calculations to be performed
within pruned sets of objects. This paper focuses on how interaction
calculation (such as collisions) within these sets can be done more efficiently
than existing approaches. Two algorithms are proposed: a sequential algorithm
that has linear complexity at the cost of high memory usage; and a parallel
algorithm, mathematically proved to be correct, that manages to use GPU
resources more efficiently than existing approaches. The proposed and existing
algorithms were implemented, and experiments show a speedup of 21.7 for the
sequential algorithm (on small problem size), and 1.12 for the parallel
proposal (large problem size). By improving interaction calculation, this work
contributes to research areas that promote interconnection in the modern world,
such as computer graphics and robotics.Comment: Accepted in ICCS 2019 and published in Springer's LNCS series.
Supplementary content at https://mjsaldanha.com/articles/1-hpc-ssp
- …