80 likes | 159 Views
CCAData Object. Craig Rasmussen Los Alamos National Laboratory. CCAData Raison D’etre. Consistent and abstract interchange of data Hides Data type Size Parallel layout. CCAData Is Minimalistic. No geometry (no dimensions, no arrays) No physics (no units) Implementation Iovec
E N D
CCAData Object Craig Rasmussen Los Alamos National Laboratory
CCAData Raison D’etre • Consistent and abstract interchange of data • Hides • Data type • Size • Parallel layout
CCAData Is Minimalistic • No geometry (no dimensions, no arrays) • No physics (no units) • Implementation • Iovec • source_machine • source_pointer • size • type
CCAData Hierarchy • CCAData • CCAMesh • Adds geometry • CCAArray • CCAUnstructured • CCAField • Adds physics (has units) • CCAField contains a CCAMesh object • CCAMesh contains one (or more?) CCAData objects
CCAData Hierarchy Example Usage • MxP data transfer • MP.send(CCAData src, CCAData dest, MPDistribution dist); • Fourier Transform • fft.run(CCAArray array); • CFD computation • Cfd.run(CCAField field)
CCAArray Methods Class CCAArray { int getArrayRank(); int getShape(in int lenSizes, inout int[] sizes); local int getLocalShape(in int getShape(in int lenSizes, inout int[] sizes); int lenSizes, inout int[] sizes); local int getLocalArrayIteratorFor(in int dim, out int firstOffset, out int lastOffset, out int stride) local int getLocalReadOnlyLock(inout dataPointer); local int getLocalReadWriteLock(inout dataPointer); local int releaseLocal Lock(inout dataPointer); }
Compaq Fortran Descriptor • Byte 0 contains a count of the number of dimensions (rank). • Byte 1 should always contain a 1. • Byte 2 contains the data type of the result, as follows: • 1 for INTEGER (KIND=1) • 2 for INTEGER (KIND=2) • 3 for INTEGER (KIND=4) • 4 for INTEGER (KIND=8) • 5 for LOGICAL (KIND=1) • 6 for LOGICAL (KIND=2) • 7 for LOGICAL (KIND=4) • 8 for LOGICAL (KIND=8) • 9 for REAL (KIND=4) • 10 for REAL (KIND=8)
Compaq Fortran Descriptor, continued • 11 for REAL (KIND=16) • 12 for COMPLEX (KIND=4) or COMPLEX*8 • 13 for COMPLEX (KIND=8) or COMPLEX*16 • 14 for CHARACTER • 15 for RECORD • 17 for COMPLEX (KIND=16) or COMPLEX*32 • Bytes 3 to 7 (inclusive) are reserved. • Bytes 8 to 15 contain the element length for character data, in bytes. • Bytes 16 to 23 contain the address of the first element of an array. • Bytes 24 to 39 are reserved. • The remaining bytes (40 to 207) contain information about each array dimension