~ubuntu-branches/ubuntu/trusty/nwchem/trusty-proposed

« back to all changes in this revision

Viewing changes to src/tools/ga-5-1/pario/dra/DRA.doc

  • Committer: Package Import Robot
  • Author(s): Michael Banck, Daniel Leidert, Andreas Tille, Michael Banck
  • Date: 2013-07-04 12:14:55 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130704121455-5tvsx2qabor3nrui
Tags: 6.3-1
* New upstream release.
* Fixes anisotropic properties (Closes: #696361).
* New features include:
  + Multi-reference coupled cluster (MRCC) approaches
  + Hybrid DFT calculations with short-range HF 
  + New density-functionals including Minnesota (M08, M11) and HSE hybrid
    functionals
  + X-ray absorption spectroscopy (XAS) with TDDFT
  + Analytical gradients for the COSMO solvation model
  + Transition densities from TDDFT 
  + DFT+U and Electron-Transfer (ET) methods for plane wave calculations
  + Exploitation of space group symmetry in plane wave geometry optimizations
  + Local density of states (LDOS) collective variable added to Metadynamics
  + Various new XC functionals added for plane wave calculations, including
    hybrid and range-corrected ones
  + Electric field gradients with relativistic corrections 
  + Nudged Elastic Band optimization method
  + Updated basis sets and ECPs 

[ Daniel Leidert ]
* debian/watch: Fixed.

[ Andreas Tille ]
* debian/upstream: References

[ Michael Banck ]
* debian/upstream (Name): New field.
* debian/patches/02_makefile_flags.patch: Refreshed.
* debian/patches/06_statfs_kfreebsd.patch: Likewise.
* debian/patches/07_ga_target_force_linux.patch: Likewise.
* debian/patches/05_avoid_inline_assembler.patch: Removed, no longer needed.
* debian/patches/09_backported_6.1.1_fixes.patch: Likewise.
* debian/control (Build-Depends): Added gfortran-4.7 and gcc-4.7.
* debian/patches/10_force_gcc-4.7.patch: New patch, explicitly sets
  gfortran-4.7 and gcc-4.7, fixes test suite hang with gcc-4.8 (Closes:
  #701328, #713262).
* debian/testsuite: Added tests for COSMO analytical gradients and MRCC.
* debian/rules (MRCC_METHODS): New variable, required to enable MRCC methods.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
                   DISK RESIDENT ARRAYS PRELIMINARY DOCUMENTATION
2
 
                          Jarek Nieplocha, 05.10.95               
3
 
 
4
 
 
5
 
Disk Resident Arrays extend Global Arrays NUMA programming model with  
6
 
disk I/O operations. Either whole or sections of global arrays 
7
 
can be transferred between GA memory and the disk.
8
 
  
9
 
At present time, all operations are declared to be collective. 
10
 
This simplifies implementation on machines where only some processors 
11
 
are connected to I/O devices. 
12
 
 
13
 
Except where stated otherwise, all operations are synchronous (blocking)
14
 
which means that control is returned to the calling process only after
15
 
the requested operation completes. 
16
 
 
17
 
All operations return error code.
18
 
 
19
 
    Return values:
20
 
                     0    - OK
21
 
                    >0    - failure
22
 
 
23
 
 
24
 
A program that uses Disk Resident Arrays should look like:
25
 
 
26
 
      program foo
27
 
#include "mafdecls.h"
28
 
#include "global.fh"
29
 
#include "dra.fh"
30
 
c
31
 
      call pbeginf()                      ! initialize TCGMSG
32
 
      if(.not. ma_init(...)) ERROR        ! initialize MA
33
 
      call ga_initialize()                ! initialize Global Arrays
34
 
      if(dra_init(....).ne.0) ERROR       ! initialize Disk Arrays 
35
 
 
36
 
c     do work
37
 
 
38
 
      if(dra_terminate().ne.0)ERROR       ! destroy DRA internal data structures
39
 
      call ga_terminate                   ! terminate Global Arrays
40
 
      call pend()                         ! terminate TCGMSG
41
 
      end
42
 
 
43
 
 
44
 
      
45
 
List of DRA operations:
46
 
 
47
 
 
48
 
     status = dra_init(max_arrays, max_array_size, total_disk_space, max_memory)
49
 
              integer max_arrays                [input]
50
 
              double precision max_array_size   [input]
51
 
              double precision total_disk_space [input]
52
 
              double precision max_memory       [input]
53
 
 
54
 
            discussion:
55
 
 
56
 
              Initializes disk resident array I/O subsystem.
57
 
 
58
 
              "max_array_size", "total_disk_space" and  "max_memory" are given
59
 
              in bytes. 
60
 
 
61
 
              "max_memory" specifies how much local memory per processor the
62
 
              application is willing to provide to the DRA I/O subsystem for
63
 
              buffering. 
64
 
 
65
 
              The value of "-1" for any of input arguments means:
66
 
              "don't care", "don't know", or "use defaults" 
67
 
 
68
 
 
69
 
 
70
 
     status = dra_terminate()
71
 
 
72
 
            discussion:
73
 
 
74
 
              Close all open disk resident arrays and shut down 
75
 
              DRA I/O subsystem.
76
 
 
77
 
 
78
 
 
79
 
     status = dra_create(type, dim1, dim2, name, filename, mode,rdim1,rdim2,d_a)
80
 
              integer type                      [input]   ! MA type identifier
81
 
              integer dim1                      [input]
82
 
              integer dim2                      [input]
83
 
              character*(*) name                [input]
84
 
              character*(*) filename            [input]
85
 
              integer mode                      [input]
86
 
              integer rdim1                     [input] 
87
 
              integer rdim2                     [input]
88
 
              integer d_a                       [output]  ! DRA handle
89
 
 
90
 
            discussion:
91
 
 
92
 
              Creates new disk resident array with specified dimensions
93
 
              and "type".
94
 
 
95
 
              String "filename" specifies name of an abstract
96
 
              meta-file that will store the data on the disk. The
97
 
              meta-file might be implemented as multiple disk files
98
 
              that will contain parts of the disk resident array. The component
99
 
              files will have names derived from the string "filename"
100
 
              according to some established scheme(s).
101
 
 
102
 
              Only one DRA object can be stored in DRA meta-file identified by
103
 
              "filename".
104
 
 
105
 
              DRA objects persist on the disk after calling dra_close().
106
 
              dra_delete() should be used instead of dra_close() to delete disk
107
 
              array and associated meta-file on the disk.
108
 
 
109
 
              A set of UNIX commands that understand "filename" identifier
110
 
              will be provided to copy, rename, move, change access attributes,
111
 
              and delete DRA meta-files.
112
 
 
113
 
              String "name" can be used for more informative (longer)names.
114
 
 
115
 
              Disk array is implicitly initialized to "0".
116
 
 
117
 
              Access permissions (read, write, read&write) are set in "mode".
118
 
              These are set using defined in DRA.fh (Fortran) and DRA.h (C)
119
 
              preprocessor constants: DRA_R, DRA_W, DRA_RW.
120
 
 
121
 
              The pair [rdim1, rdim2] specifies dimensions of a
122
 
              "typical" request.  The value of "-1" for either of them
123
 
              means "unspecified".  The layout of the data on the
124
 
              disk(s) is determined based on the values of these
125
 
              arguments. Performance of the DRA operations will depend
126
 
              on the dimensions (section shape) of the requests.  If
127
 
              data layout is optimized for "column-like" sections,
128
 
              performance of DRA operations for "row-like" sections
129
 
              might be seriously degraded. This is analogous to the
130
 
              effect of wrong loop order yielding frequent cache misses
131
 
              on RISC processors in the example below.
132
 
 
133
 
 
134
 
              double precision a(1000, 1000)
135
 
              do i = 1, 1000
136
 
                 do j = 1, 1000
137
 
                    a(i,j) = dfloat(i+j)
138
 
                 enddo
139
 
              enddo
140
 
 
141
 
              instead of 
142
 
 
143
 
              do j = 1, 1000
144
 
                 do i = 1, 1000
145
 
                    a(i,j) = dfloat(i+j) 
146
 
                 enddo
147
 
              enddo
148
 
 
149
 
              
150
 
 
151
 
     status = dra_open(filename, mode, d_a)
152
 
              character*(*) filename            [input]
153
 
              integer mode                      [input]
154
 
              integer d_a                       [output]  ! DRA handle
155
 
 
156
 
            discussion:
157
 
 
158
 
              Open and assign DRA handle to disk resident array stored in DRA
159
 
              meta-file "filename".  Disk arrays that are created
160
 
              with 'dra_create' and saved by calling 'dra_close' can be
161
 
              later opened and accessed by the same or different
162
 
              application.
163
 
 
164
 
              Attributes of disk resident array can be found by calling
165
 
              'dra_inquire'.
166
 
 
167
 
 
168
 
 
169
 
     status = dra_write(g_a, d_a, request)
170
 
              integer g_a                       [input]  ! GA handle
171
 
              integer d_a                       [input]  ! DRA handle
172
 
              integer request                   [output] ! request id
173
 
 
174
 
            discussion:
175
 
 
176
 
              Write asynchronously specified global array to specified 
177
 
              disk resident array.
178
 
 
179
 
              Dimensions and type of g_a and d_a must match. If dimensions
180
 
              don't match, 'dra_write_section' should be used instead.   
181
 
 
182
 
              The operation is by definition asynchronous but it might
183
 
              be implemented as synchronous i.e., it would return only
184
 
              when I/O is done.  
185
 
 
186
 
              "request" can be used to 'dra_probe' or 'dra_wait' for completion.
187
 
 
188
 
 
189
 
 
190
 
     status = dra_write_section(transp, g_a, gilo, gihi, gjlo, gjhi, 
191
 
                                        d_a, dilo, dihi, djlo, djhi, request)
192
 
              logical transp                    [input] ! transpose operator 
193
 
              integer g_a                       [input] ! GA handle 
194
 
              integer d_a                       [input] ! DRA handle 
195
 
              integer gilo                      [input] 
196
 
              integer gihi                      [input] 
197
 
              integer gjlo                      [input] 
198
 
              integer gjhi                      [input] 
199
 
              integer dilo                      [input] 
200
 
              integer dihi                      [input] 
201
 
              integer djlo                      [input] 
202
 
              integer djhi                      [input] 
203
 
              integer request                   [output] ! request id
204
 
 
205
 
 
206
 
            discussion:
207
 
 
208
 
              Write asynchronously specified global array section to 
209
 
              specified disk resident array section:
210
 
                OP(g_a[ gilo:gihi, gjlo:gjhi]) --> d_a[ dilo:dihi, djlo:djhi]
211
 
              where OP is the transpose operator (.true./.false.).
212
 
 
213
 
              Return error if the two section's types or sizes mismatch.
214
 
 
215
 
              See 'dra_write' specs for discussion of "request". 
216
 
 
217
 
            Note:
218
 
              Section reshaping and transpose operation not implemented yet.
219
 
 
220
 
 
221
 
     status = dra_read(g_a, d_a, request)
222
 
              integer g_a                       [input]  ! GA handle
223
 
              integer d_a                       [input]  ! DRA handle
224
 
              integer request                   [output] ! request id
225
 
 
226
 
            discussion:
227
 
 
228
 
              Read asynchronously specified global array from specified
229
 
              disk resident array.
230
 
 
231
 
              Dimensions and type of g_a and d_a must match. If dimensions
232
 
              don't match, 'dra_read_section' could be used instead.
233
 
 
234
 
              See 'dra_write' specs for discussion of "request". 
235
 
 
236
 
 
237
 
     status = dra_read_section(transp, g_a, gilo, gihi, gjlo, gjhi,
238
 
                                       d_a, dilo, dihi, djlo, djhi, request)
239
 
              logical transp                    [input] ! transpose operator
240
 
              integer g_a                       [input] ! GA handle
241
 
              integer d_a                       [input] ! DRA handle
242
 
              integer gilo                      [input]
243
 
              integer gihi                      [input]
244
 
              integer gjlo                      [input]
245
 
              integer gjhi                      [input]
246
 
              integer dilo                      [input]
247
 
              integer dihi                      [input]
248
 
              integer djlo                      [input]
249
 
              integer djhi                      [input]
250
 
              integer request                   [output] ! request id
251
 
 
252
 
            discussion:
253
 
 
254
 
              Read asynchronously specified global array section from 
255
 
              specified disk resident array section:
256
 
                OP(d_a[ dilo:dihi, djlo:djhi]) --> g_a[ gilo:gihi, gjlo:gjhi]
257
 
              where OP is the transpose operator (.true./.false.).
258
 
 
259
 
              See 'dra_write' specs for discussion of "request".
260
 
 
261
 
            Note:
262
 
              Section reshaping and transpose operation not implemented yet.
263
 
 
264
 
 
265
 
     status = dra_probe(request, compl_status)
266
 
              integer request                   [input]  ! request id
267
 
              integer compl_status              [output] ! completion status  
268
 
 
269
 
            discussion:
270
 
 
271
 
              Tests for completion of 'dra_write/read' or
272
 
              'dra_write/read_section' operation which set the value
273
 
              passed in "request" argument.
274
 
 
275
 
              compl_status =  0 the operation has been completed
276
 
              compl_status <> 0 not done yet
277
 
 
278
 
 
279
 
 
280
 
     status = dra_wait(request)
281
 
              integer request                   [input]  ! request id
282
 
 
283
 
            discussion:
284
 
 
285
 
              Blocks until completion of 'dra_write/read' or
286
 
              'dra_write/read_section' operation which set the value
287
 
              passed in "request" argument. 
288
 
 
289
 
 
290
 
 
291
 
     status = dra_inquire(d_a, type, dim1, dim2, name, filename)
292
 
              integer d_a                       [input]  ! DRA handle
293
 
              integer type                      [output]
294
 
              integer dim1                      [output]
295
 
              integer dim2                      [output]
296
 
              character*(*) name                [output]
297
 
              character*(*) filename            [output]
298
 
 
299
 
            discussion:
300
 
 
301
 
              Return dimensions, "type", "name" of disk resident array,
302
 
              and "filename" of DRA meta-file associated with "d_a"
303
 
              handle.
304
 
 
305
 
 
306
 
     status = dra_delete(d_a)
307
 
              integer d_a                       [input]  ! DRA handle
308
 
 
309
 
            discussion:
310
 
 
311
 
                Delete a disk resident array associated with "d_a" handle.
312
 
 
313
 
                Invalidate handle.
314
 
 
315
 
                The corresponding DRA meta-file is destroyed.
316
 
 
317
 
 
318
 
 
319
 
     status = dra_close(d_a)
320
 
              integer d_a                       [input]  ! DRA handle
321
 
 
322
 
            discussion:
323
 
 
324
 
              Close DRA meta-file associated with "d_a" handle and
325
 
              deallocate data structures corresponding to this disk
326
 
              array.  Invalidate "d_a" handle. The array on the disk is
327
 
              persistent.
328
 
 
329
 
 
330
 
     subroutine dra_flick()
331
 
 
332
 
            discussion:
333
 
 
334
 
             Returns control to DRA for a VERY short time to improve 
335
 
             progress of pending asynchronous operations.