Difference between revisions of "Cvmbycols"
Line 1: | Line 1: | ||
= Overview = | = Overview = | ||
− | Cvmbycols is a set of codes for producing compacted Etrees for geographic regions with material properties drawn from a community velocity model. | + | Cvmbycols is a set of codes for producing compacted Etrees for geographic regions with material properties drawn from a community velocity model. Serial and MPI versions of the program are provided. |
+ | = Description = | ||
+ | |||
+ | == Cvmbycols Serial == | ||
+ | |||
+ | Divides etree region into columns, then extracts each column from the underlying CVM and inserts the octants into the final Etree. | ||
+ | |||
+ | |||
+ | == Cvmbycols MPI == | ||
+ | |||
+ | There are two main steps. | ||
+ | |||
+ | Extraction: Division of the etree region into X columns for extraction. This is an embarrassingly parallel operation. A dispatcher (rank 0) farms out each column to a worker in a pool of N cores for extraction. Each worker writes its own local etree. After program execution, there are N small etrees. The extractor must be run on 2^N + 1 cores. | ||
− | + | Merging: Merging of the N small etrees into the final Etree. This is essentially a merge sort on the keys from the Etree addresses extracted | |
+ | from the local etrees. The cores at the lowest level of the merge tree each read in octants from two etrees with a pre-order traversal, merge sort the addresses, then pass the locally sorted list of addresses to a parent node for additional merging. This proceeds until the points rise to rank 1 which has a completely sorted list of etree addresses. Rank 0 takes this sorted list and performs a transactional append on the final etree. | ||
+ | Merging is a very fast opertion. Speeds in excess of 3M points/sec have been achieved on Kraken. | ||
= Defining properties of an Etree = | = Defining properties of an Etree = |
Revision as of 20:22, 8 March 2011
Contents
Overview
Cvmbycols is a set of codes for producing compacted Etrees for geographic regions with material properties drawn from a community velocity model. Serial and MPI versions of the program are provided.
Description
Cvmbycols Serial
Divides etree region into columns, then extracts each column from the underlying CVM and inserts the octants into the final Etree.
Cvmbycols MPI
There are two main steps.
Extraction: Division of the etree region into X columns for extraction. This is an embarrassingly parallel operation. A dispatcher (rank 0) farms out each column to a worker in a pool of N cores for extraction. Each worker writes its own local etree. After program execution, there are N small etrees. The extractor must be run on 2^N + 1 cores.
Merging: Merging of the N small etrees into the final Etree. This is essentially a merge sort on the keys from the Etree addresses extracted from the local etrees. The cores at the lowest level of the merge tree each read in octants from two etrees with a pre-order traversal, merge sort the addresses, then pass the locally sorted list of addresses to a parent node for additional merging. This proceeds until the points rise to rank 1 which has a completely sorted list of etree addresses. Rank 0 takes this sorted list and performs a transactional append on the final etree.
Merging is a very fast opertion. Speeds in excess of 3M points/sec have been achieved on Kraken.
Defining properties of an Etree
The following properties are defined:
- Bounding box of geographic region in lon,lat coordinates
- Extents of Etree volume in 3D, in km
- Number of columns in x,y axis to partition 3D space. The resulting columns must be square along the x-y axis.
- Frequency limit to support in Hz
- Number of points per wavelength to support
- Minimum Vs to support
- Maximum octant size to allow
- Name of the output etree file
- CVM to use for material properties (from UCVM)
User Guide
Source Code
SVN: https://source.usc.edu/svn/cvmbycols
Supported CVMs
The cvmbycols utility is built upon UCVM. As a result, it can extract etrees from the following CMV sources:
- CVM-H
- CVM-S
- USGS Cencal (which itself is an etree)
- 1D