Atjaunināt sīkdatņu piekrišanu

Fortran 2018 with Parallel Programming [Hardback]

  • Formāts: Hardback, 682 pages, height x width: 254x178 mm, weight: 1560 g, 75 Tables, black and white; 103 Line drawings, black and white
  • Izdošanas datums: 27-Aug-2019
  • Izdevniecība: Chapman & Hall/CRC
  • ISBN-10: 0367218437
  • ISBN-13: 9780367218430
Citas grāmatas par šo tēmu:
  • Hardback
  • Cena: 178,26 €
  • Grāmatu piegādes laiks ir 3-4 nedēļas, ja grāmata ir uz vietas izdevniecības noliktavā. Ja izdevējam nepieciešams publicēt jaunu tirāžu, grāmatas piegāde var aizkavēties.
  • Daudzums:
  • Ielikt grozā
  • Piegādes laiks - 4-6 nedēļas
  • Pievienot vēlmju sarakstam
  • Bibliotēkām
  • Formāts: Hardback, 682 pages, height x width: 254x178 mm, weight: 1560 g, 75 Tables, black and white; 103 Line drawings, black and white
  • Izdošanas datums: 27-Aug-2019
  • Izdevniecība: Chapman & Hall/CRC
  • ISBN-10: 0367218437
  • ISBN-13: 9780367218430
Citas grāmatas par šo tēmu:

The programming language Fortran dates back to 1957 when a team of IBM engineers released the first Fortran Compiler. During the past 60 years, the language had been revised and updated several times to incorporate more features to enable writing clean and structured computer programs. The present version is Fortran 2018. Since the dawn of the computer era, there had been a constant demand for a “larger” and “faster” machine. To increase the speed there are three hurdles. The density of the active components on a VLSI chip cannot be increased indefinitely and with the increase of the density heat dissipation becomes a major problem. Finally, the speed of any signal cannot exceed the velocity of the light. However, by using several inexpensive processors in parallel coupled with specialized software and hardware, programmers can achieve computing speed similar to a supercomputer.

This book can be used to learn the modern Fortran from the beginning and the technique of developing parallel programs using Fortran. It is for anyone who wants to learn Fortran. Knowledge beyond high school mathematics is not required. There is not another book on the market yet which deals with Fortran 2018 as well as parallel programming.

FEATURES         

  • Descriptions of majority of Fortran 2018 instructions
  • Numerical Model
  • String with Variable Length
  • IEEE Arithmetic and Exceptions
  • Dynamic Memory Management
  • Pointers
  • Bit handling
  • C-Fortran Interoperability
  • Object Oriented Programming
  • Parallel Programming using Coarray
  • Parallel Programming using OpenMP
  • Parallel Programming using Message Passing Interface (MPI)

THE AUTHOR

Dr Subrata Ray, is a retired Professor, Indian Association for the Cultivation of Science, Kolkata.

Preface xxiii
Acknowledgments xxv
Author xxvii
1 Preliminaries 1(24)
1.1 Character Set
2(1)
1.2 Identifiers
3(1)
1.3 Intrinsic Data Types
4(1)
1.4 Constants and Variables
4(1)
1.5 Integer Constants
4(1)
1.6 Real Constants
5(1)
1.7 Double Precision Constants
6(1)
1.8 Complex Constants
6(1)
1.9 Double Precision Complex Constants
7(1)
1.10 Quadruple (Quad) Precision Constants
7(1)
1.11 Logical Constants
7(1)
1.12 Character Constants
7(1)
1.13 Literal Constants
8(1)
1.14 Variables
8(1)
1.15 Variable Declarations
8(1)
1.16 Meaning of a Declaration
9(1)
1.17 Assignment Operator
10(1)
1.18 Named Constants
10(1)
1.19 Keywords
11(1)
1.20 Lexical Tokens
12(1)
1.21 Delimiters
12(1)
1.22 Source Form
13(1)
1.23 Free Form
13(2)
1.24 Continuation of Character Strings
15(1)
1.25 Structure of a Program
16(1)
1.26 IMPLICIT NONE
16(1)
1.27 IMPLICIT
17(1)
1.28 Rules of IMPLICIT
18(1)
1.29 Type Declarations
18(1)
1.30 Comments on IMPLICIT Statement
19(1)
1.31 PROGRAM Statement
19(1)
1.32 END Statement
19(1)
1.33 Initialization
20(1)
1.34 Number System
20(1)
1.35 Binary Numbers
21(1)
1.36 Octal Numbers
21(1)
1.37 Hexadecimal Numbers
21(1)
1.38 Initialization Using DATA Statement
21(1)
1.39 BOZ Numbers
22(1)
1.40 Integer Variables and BOZ Numbers
22(1)
1.41 Executable and Non-Executable Statements
23(1)
1.42 INCLUDE Directive
23(1)
1.43 Statement Ordering
24(1)
1.44 Processor Dependencies
24(1)
1.45 Compilation and Execution of Fortran Programs
24(1)
2 Arithmetic, Relational and Logical Operators and Expressions 25(18)
2.1 Arithmetic Operators
25(1)
2.2 Arithmetic Expressions
26(1)
2.3 Assignment Sign
26(1)
2.4 Rules for Arithmetic Expressions
27(1)
2.5 Precedence of the Arithmetic Operators
28(1)
2.6 Multiple Statements
29(1)
2.7 Mixed-Mode Operations
30(2)
2.8 Integer Division
32(1)
2.9 List-Directed Input/Output Statement
33(2)
2.10 Variable Assignment-Comparative Study
35(1)
2.11 Library Functions
35(1)
2.12 Memory Requirement of Intrinsic Data Types
36(1)
2.13 Programming Examples
36(1)
2.14 BLOCK Construct
37(1)
2.15 Assignment of BOZ Numbers
38(1)
2.16 Initialization and Library Functions
39(1)
2.17 Relational Operators
39(1)
2.18 Precedence Rule of Relational Operators
40(1)
2.19 Relational Operators and Complex Numbers
40(1)
2.20 Logical Operators
40(2)
2.21 Precedence Rule of Logical Operators
42(1)
2.22 Precedence of the Operators Discussed So Far
42(1)
3 Branch and Loop Statements 43(28)
3.1 GO TO Statement
43(1)
3.2 Block IF
44(1)
3.3 IF-THEN-ELSE
44(2)
3.4 ELSE-IF
46(2)
3.5 Nested IF
48(1)
3.6 Nested IF without ELSE
49(1)
3.7 Rules of Block IF
49(2)
3.8 CASE Statement
51(2)
3.9 CASE DEFAULT
53(1)
3.10 CASE and LOGICAL
54(1)
3.11 Nested CASE
54(1)
3.12 EXIT Statement and CASE
54(1)
3.13 Rules of CASE
55(1)
3.14 Programming Example
56(1)
3.15 DO Statement
57(2)
3.16 Negative Increment
59(1)
3.17 Infinite Loop
59(1)
3.18 EXIT Statement
60(1)
3.19 CYCLE Statement
60(1)
3.20 DO WHILE
61(2)
3.21 Nested DO
63(2)
3.22 CYCLE, EXIT and the Nested Loop
65(1)
3.23 Termination of DO Loop
66(1)
3.24 Rules of DO Statement
66(4)
3.25 Remark about Loop Statements
70(1)
4 Handling of Characters 71(16)
4.1 Assignment
71(1)
4.2 Concatenation
71(1)
4.3 Collating Sequence
72(1)
4.4 Character Comparison
73(1)
4.5 Comparison of Character Strings
73(1)
4.6 Lexical Comparison Functions
74(1)
4.7 Length of a String
75(1)
4.8 Trimming and Adjusting a String
75(1)
4.9 REPEAT
76(1)
4.10 Character-Integer Conversion
77(1)
4.11 Character Substring
77(2)
4.12 Programming Examples
79(2)
4.13 Library Functions INDEX, SCAN and VERIFY
81(3)
4.14 CASE and CHARACTER
84(1)
4.15 NEW LINE
85(2)
5 Precision and Range 87(12)
5.1 SELECTED_INT_KIND
88(2)
5.2 Precision and Range of Real Numbers
90(1)
5.3 SELECTED_REAL_KIND
90(2)
5.4 SELECTED_CHAR_KIND
92(1)
5.5 KIND Intrinsic
92(2)
5.6 KIND and COMPLEX Constants
94(1)
5.7 KIND and Character Handling Intrinsics
94(1)
5.8 Quadruple (Quad) Precision
95(1)
5.9 DOUBLE COMPLEX
95(1)
5.10 IMPLICIT and SELECTED KIND
96(1)
5.11 Type Parameter Inquiry
97(1)
5.12 Named Kind Constants
97(2)
6 Array and Array-Handling Intrinsics 99(64)
6.1 Array Declaration
99(2)
6.2 Multidimensional Array
101(1)
6.3 Storage Arrangement of Two dimensional Array
101(1)
6.4 Characteristics of Array
102(2)
6.5 Array Constants
104(1)
6.6 Initialization
105(1)
6.7 Initialization with DATA Statement
105(1)
6.8 Repeat Factor and Initialization
106(1)
6.9 DATA Statement and Implied DO Loop
107(1)
6.10 Named Array Constant
108(1)
6.11 Character Variable and Array Constructors
108(1)
6.12 Array Elements
109(1)
6.13 Array Assignment and Array Arithmetic
109(2)
6.14 Array Section
111(3)
6.15 Array Input
114(1)
6.16 Array Output
114(1)
6.17 Programming Examples
115(4)
6.18 Array Bounds
119(1)
6.19 LBOUND
120(1)
6.20 UBOUND
120(1)
6.21 RESHAPE
121(3)
6.22 Vector Subscripts
124(2)
6.23 WHERE Statement
126(3)
6.24 DO CONCURRENT
129(3)
6.25 FORALL Statement
132(1)
6.26 Rules for FORALL
133(1)
6.27 EQUIVALENCE Statement
134(2)
6.28 EQUIVALENCE and Character Variables
136(2)
6.29 Programming Examples
138(3)
6.30 Array-Handling Intrinsics
141(1)
6.31 Maximum, Minimum and Finding Location
141(5)
6.32 SUM and PRODUCT
146(1)
6.33 Handling of Arrays of More than Two Dimensions
147(2)
6.34 DOT_PRODUCT
149(1)
6.35 Matrix Multiplication
149(1)
6.36 TRANSPOSE of a Matrix
150(1)
6.37 Array Shift
151(4)
6.38 Euclidian Norm
155(1)
6.39 Parity of Logical Array
156(1)
6.40 Locating and Counting Array Elements
156(2)
6.41 Packing and Unpacking
158(3)
6.42 MERGE
161(1)
6.43 REDUCE
162(1)
7 User Defined Data Type 163(12)
7.1 Derived Type
163(1)
7.2 Assignment
164(1)
7.3 Initialization
165(1)
7.4 Named Constant and Derived Type
165(1)
7.5 Keywords and Derived Types
166(1)
7.6 IMPLICIT and Derived Types
166(1)
7.7 Input and Output
166(1)
7.8 Substrings
167(1)
7.9 Array and Derived Types
168(1)
7.10 Nested Derived Types
169(1)
7.11 Arrays as Elementary Items
170(1)
7.12 SEQUENCE
171(1)
7.13 Derived Types and EQUIVALENCE Statement
171(1)
7.14 Parameterized Derived Types
172(3)
8 Format Statement 175(28)
8.1 Edit Descriptors
175(1)
8.2 Input/Output Lists
176(1)
8.3 General Form of Format Statement
177(1)
8.4 Carriage Control
178(1)
8.5 Summary of Edit Descriptors
178(1)
8.6 Descriptor for Integer
178(2)
8.7 Descriptors for Real Number
180(3)
8.8 Insufficient Width
183(1)
8.9 Format and List Elements
184(1)
8.10 Descriptors for Complex Number
185(1)
8.11 Descriptors for BOZ Numbers
185(1)
8.12 Descriptor for Logical
186(1)
8.13 Descriptor for Character
186(1)
8.14 General Edit Descriptor
187(2)
8.15 Unlimited Repeat Factor
189(1)
8.16 Scale Factor
189(1)
8.17 Leading Signs
190(1)
8.18 Tab Descriptors
191(1)
8.19 X Descriptor
192(1)
8.20 Slash Descriptor
192(1)
8.21 Embedded Blanks
193(1)
8.22 Apostrophe and Quote Descriptors
194(1)
8.23 Colon Descriptor
195(1)
8.24 Decimal Editing
195(1)
8.25 Rounding Modes
195(1)
8.26 Variable Format
196(1)
8.27 Memory to Memory Input/Output
197(1)
8.28 NAMELIST
197(4)
8.29 NAMELIST Comment
201(1)
8.30 Rules for NAMELIST
201(1)
8.31 Processor Dependency
202(1)
9 Auxiliary Storage 203(26)
9.1 Record
203(1)
9.2 File
203(1)
9.3 Formatted Record
203(1)
9.4 Unformatted Record
204(1)
9.5 Endfile Record
204(1)
9.6 Sequential File
204(1)
9.7 Direct File
204(1)
9.8 Stream File
204(1)
9.9 Unit Number
204(1)
9.10 Scratch and Saved Files
205(1)
9.11 OPEN, CLOSE and INQUIRE Statements
205(1)
9.12 Optional Specifiers
205(10)
9.13 Kind Type Parameters of Integer Specifiers
215(1)
9.14 ENDFILE Statement
215(1)
9.15 REWIND Statement
215(1)
9.16 BACKSPACE Statement
215(1)
9.17 Data Transfer Statement
216(1)
9.18 READ/WRITE Statement
216(3)
9.19 Asynchronous Input/Output
219(2)
9.20 FLUSH Statement
221(1)
9.21 Rules for Input/Output Control List
221(1)
9.22 IS_IOSTAT_END
222(1)
9.23 IS_IOSTAT_EOR
222(1)
9.24 Examples of File Operations
222(2)
9.25 Stream Input/Output
224(1)
9.26 Storage Unit of Stream Input/Output
224(1)
9.27 Stream Input/Output Type
225(1)
9.28 Stream File Opening
225(1)
9.29 Unformatted Stream File
225(1)
9.30 Formatted Stream I/O
226(1)
9.31 Rule of Thumb
227(1)
9.32 Recursive Input/Output
228(1)
9.33 Processor Dependencies
228(1)
10 Numerical Model 229(8)
10.1 Numerical Model for Integers
229(1)
10.2 BASE
229(1)
10.3 Largest Integer
230(1)
10.4 DIGITS for Integers
230(1)
10.5 RANGE for Integers
230(1)
10.6 Real Numbers
231(1)
10.7 FRACTION and EXPONENT
231(1)
10.8 MAXEXPONENT and MINEXPONENT
231(1)
10.9 Largest and Smallest Real Numbers
232(1)
10.10 DIGITS for Real Numbers
232(1)
10.11 RANGE for Real Numbers
232(1)
10.12 PRECISION
233(1)
10.13 SCALE
233(1)
10.14 SET EXPONENT
233(1)
10.15 EPSILON
233(1)
10.16 NEAREST
234(1)
10.17 SPACING
234(1)
10.18 RRSPACING
234(1)
10.19 Programming Example
235(2)
11 Library Functions 237(4)
11.1 Generic Names
237(1)
11.2 Intrinsic Procedures
237(1)
11.3 Pure Procedures
237(1)
11.4 Elemental Procedures
237(1)
11.5 Enquiry Functions
238(1)
11.6 Transformational Functions
238(1)
11.7 Non-elemental Procedures
238(1)
11.8 Argument Keywords
238(1)
11.9 Variable Number of Arguments
239(1)
11.10 Optional Arguments
239(1)
11.11 Types of Available Intrinsics
239(1)
11.12 Intrinsic Statement
240(1)
11.13 Processor Dependencies
240(1)
11.14 Final Word
240(1)
12 Subprograms 241(78)
12.1 FUNCTION Subprogram
242(3)
12.2 SUBROUTINE Subprogram
245(1)
12.3 CALL Statement
246(3)
12.4 INTENT
249(1)
12.5 Internal Procedure
249(3)
12.6 Character Type Argument
252(3)
12.7 Argument Types
255(1)
12.8 Call by Reference
255(1)
12.9 Call by Value
255(1)
12.10 RETURN Statement
256(1)
12.11 INTERFACE Block
257(1)
12.12 Array as Arguments
258(2)
12.13 User Defined Type as Argument
260(1)
12.14 MODULE
261(2)
12.15 MODULE PROCEDURE
263(2)
12.16 PUBLIC and PRIVATE Attributes
265(5)
12.17 PROTECTED Attribute
270(2)
12.18 Scope Rules
272(2)
12.19 Generic Subprograms
274(2)
12.20 ABSTRACT Interface
276(2)
12.21 Keyword Arguments
278(1)
12.22 Operator Overloading
279(4)
12.23 Overloading of Assignment Operator
283(1)
12.24 Overloading of Standard Library Functions
284(1)
12.25 User Defined Operators
285(2)
12.26 Use Statement and Renaming Operators
287(1)
12.27 Precedence of Overloaded Operators
288(1)
12.28 Precedence of User Defined Operators
288(1)
12.29 OPTIONAL Arguments
289(1)
12.30 PRESENT Intrinsic
290(1)
12.31 Assumed Rank of Dummy Arguments
291(1)
12.32 Array-Valued Functions
292(1)
12.33 SAVE Variables
292(2)
12.34 COMMON Statement
294(1)
12.35 BLOCK DATA
295(2)
12.36 COMMON and DIMENSION
297(1)
12.37 COMMON and User Defined Type
297(1)
12.38 COMMON and EQUIVALENCE
297(1)
12.39 EXTERNAL Statement
298(3)
12.40 Recursion
301(1)
12.41 RECURSIVE FUNCTION
301(2)
12.42 RECURSIVE SUBROUTINE
303(2)
12.43 PURE Procedure
305(1)
12.44 Rules for PURE Procedure
305(1)
12.45 ELEMENTAL Procedure
306(1)
12.46 IMPURE ELEMENTAL Procedure
307(1)
12.47 SUBMODULE
308(3)
12.48 EQUIVALENCE and MODULE
311(1)
12.49 Function Calls and Side Effects
311(1)
12.50 Mechanism of a Subprogram Call
312(1)
12.51 Recursive Input/Output
312(1)
12.52 Programming Examples
313(6)
13 String with Variable Length 319(8)
13.1 Assignment
319(2)
13.2 Concatenation
321(1)
13.3 Comparison
321(1)
13.4 Extended Meaning of Intrinsics
322(1)
13.5 PUT
322(1)
13.6 PUT_LINE
322(1)
13.7 GET
323(1)
13.8 EXTRACT
324(1)
13.9 REMOVE
324(1)
13.10 REPLACE
324(1)
13.11 SPLIT
325(2)
14 IEEE Floating Point Arithmetic and Exceptions 327(30)
14.1 Representation of Floating Point Numbers (IEEE Standard)
327(1)
14.2 Single Precision 32-Bit Floating Point Numbers (IEEE Standard)
327(3)
14.3 Denormal (Subnormal) Numbers
330(1)
14.4 Representation of Zero
330(1)
14.5 Representation of Infinity
331(1)
14.6 Representation of NaN (Not a Number)
332(1)
14.7 Summary of IEEE "Numbers"
332(2)
14.8 Divide by Zero
334(1)
14.9 Overflow
334(1)
14.10 Underflow
334(1)
14.11 Inexact Computation
334(1)
14.12 Invalid Arithmetic Operation
334(1)
14.13 IEEE Modules
334(1)
14.14 IEEE Features
335(1)
14.15 IEEE FLAGS
335(1)
14.16 Derived Types and Constants Defined in the Modules
336(1)
14.17 IEEE Operators
336(1)
14.18 Inquiry Functions (Arithmetic Module)
337(1)
14.19 IEEE_CLASS
338(1)
14.20 IEEE_COPY_SIGN
339(1)
14.21 IEEE VALUE
339(1)
14.22 IEEE_IS_FINITE
340(1)
14.23 IEEE_IS_NAN
340(1)
14.24 IEEE IS NEGATIVE
340(1)
14.25 IEEE_IS_NORMAL
340(1)
14.26 IEEE_INT
340(1)
14.27 IEEE REAL
341(1)
14.28 IEEE_SIGNBIT
341(1)
14.29 IEEE_MAX_NUM and IEEE_MIN_NUM
341(1)
14.30 IEEE_MAX_NUM_MAG and IEEE_MIN_NUM_MAG
341(1)
14.31 IEEE_FMA
341(1)
14.32 IEEE_LOGB
342(1)
14.33 IEEE_NEXT_AFTER, IEEE_NEXT_DOWN and IEEE_NEXT_UP
342(1)
14.34 IEEE_REM
343(1)
14.35 IEEE_SCALB
343(1)
14.36 IEEE_GET_ROUNDING_MODE
343(1)
14.37 IEEE_SET_ROUNDING_MODE
344(1)
14.38 IEEE_RINT
344(1)
14.39 IEEE_UNORDERED
345(1)
14.40 IEEE_GET_HALTING_MODE
345(1)
14.41 IEEE_SET_HALTING_MODE
345(1)
14.42 IEEE_GET_MODES and IEEE_SET_MODES
346(1)
14.43 IEEE_GET_STATUS and IEEE_SET_STATUS
346(1)
14.44 IEEE_GET_FLAG and IEEE_SET_FLAG
347(1)
14.45 IEEE_GET_UNDERFLOW_MODE
347(1)
14.46 IEEE_SET_UNDERFLOW_MODE
348(1)
14.47 IEEE_SELECTED_REAL_KIND
348(1)
14.48 Arithmetic IF and IEEE VALUE
349(1)
14.49 IEEE_QUIET Compare Routines
349(1)
14.50 IEEE_SIGNALING Compare Routines
349(1)
14.51 NaN, Infinity and Format
349(1)
14.52 Relational Operators, Infinity and NaN
350(1)
14.53 Exception within a Procedure
351(1)
14.54 Exception Outside a Procedure
352(1)
14.55 Programming Examples
353(2)
14.56 Out of Range
355(1)
14.57 Processor Dependencies
355(2)
15 Dynamic Memory Management 357(16)
15.1 ALLOCATABLE Arrays
357(3)
15.2 DEALLOCATE Statement
360(1)
15.3 ALLOCATED Intrinsic
361(1)
15.4 Derived Type and ALLOCATE
361(1)
15.5 Allocated Array and Subprogram
362(3)
15.6 ALLOCATE and Dummy Parameter
365(1)
15.7 Allocatable Character Length
366(1)
15.8 Character and Allocatable Arrays
367(1)
15.9 Allocatable Scalar
367(1)
15.10 Allocatable Function
368(1)
15.11 Allocation Transfer
369(1)
15.12 Restriction on Allocatable Arrays
370(1)
15.13 Programming Example
370(3)
16 Pointers 373(24)
16.1 POINTER Declaration
373(1)
16.2 TARGET
373(1)
16.3 POINTER Status
374(1)
16.4 POINTER InitiMization
374(1)
16.5 POINTER Assignment
374(2)
16.6 NULLIFY
376(1)
16.7 POINTER and Array
376(1)
16.8 POINTER as Alias
377(1)
16.9 ALLOCATE and POINTER
378(1)
16.10 POINTER and ALLOCATABLE Array
379(2)
16.11 REALLOCATE
381(1)
16.12 Unreferenced Storage
382(1)
16.13 ASSOCIATED Intrinsic
382(1)
16.14 Dangling Pointer
382(1)
16.15 POINTER within Subprogram
383(1)
16.16 POINTER and Derived Type
383(1)
16.17 Self-Referencing Pointer
384(1)
16.18 FUNCTION and POINTER
384(1)
16.19 POINTER and Subprogram
385(1)
16.20 POINTER INTENT
386(1)
16.21 PROCEDURE and POINTER
386(3)
16.22 ALLOCATE with SOURCE
389(1)
16.23 ALLOCATE with MOLD
390(1)
16.24 CONTIGUOUS
390(1)
16.25 IS_CONTIGUOUS
391(1)
16.26 Programming Example
391(6)
17 Bit Handling 397(26)
17.1 BIT_SIZE
397(1)
17.2 BTEST
397(2)
17.3 IBSET
399(1)
17.4 IBCLR
400(1)
17.5 IBITS
401(2)
17.6 LEADZ and TRAILZ
403(1)
17.7 POPCNT
404(1)
17.8 POPPAR
404(1)
17.9 MASKL
404(1)
17.10 MASKR
405(1)
17.11 IAND
405(2)
17.12 IOR
407(1)
17.13 IEOR
408(2)
17.14 NOT
410(1)
17.15 Bit Sequence Comparison
410(1)
17.16 Programming Example
411(1)
17.17 ISHFT
412(1)
17.18 SHIFTL
413(1)
17.19 SHIFTR
413(1)
17.20 SHIFTA
413(1)
17.21 MERGE_BITS
413(1)
17.22 ISHFTC
414(2)
17.23 DSHIFTL
416(1)
17.24 DSHIFTR
416(1)
17.25 Logical Operations with Array Elements
416(2)
17.26 MVBITS
418(2)
17.27 TRANSFER
420(3)
18 C-Fortran Interoperability 423(20)
18.1 Interoperability of Intrinsic Types
423(2)
18.2 C Procedure and Interface Block
425(1)
18.3 Function, Subroutine and C Procedure
425(1)
18.4 Interoperability with a C Pointer
425(1)
18.5 Procedures in the Module ISO_C_BINDING
425(2)
18.6 Compilation and Linking
427(1)
18.7 IMPORT Statement
427(1)
18.8 Fortran and C Interoperability-Examples
427(9)
18.9 Interoperation with Global Variables
436(3)
18.10 C-Fortran Interoperation
439(1)
18.11 ENUMERATOR
440(3)
19 Object-Oriented Programming 443(38)
19.1 Object and Its Properties
443(1)
19.2 Inheritance
444(1)
19.3 ASSOCIATE
445(2)
19.4 Rules of ASSOCIATE
447(1)
19.5 Polymorphic Variables
448(2)
19.6 SELECT TYPE Construct
450(6)
19.7 Allocation and Polymorphic Variables
456(1)
19.8 Type Bound Procedure
457(5)
19.9 Generic Binding
462(2)
19.10 Overriding Type Bound Procedures
464(2)
19.11 Deferred Binding
466(1)
19.12 Finalization
467(3)
19.13 SAME_TYPE_AS
470(1)
19.14 EXTENDS_TYPE_OF
471(1)
19.15 Derived Type Input and Output
472(9)
20 Parallel Programming Using Coarray 481(42)
20.1 Parallel Computing
481(1)
20.2 Coarray
482(1)
20.3 Compilation of Fortran Program with Coarray
482(1)
20.4 Declaration
483(1)
20.5 Initialization
484(1)
20.6 Input and Output with Coarray
484(1)
20.7 THIS_IMAGE
484(2)
20.8 NUM IMAGES
486(1)
20.9 SYNC
486(1)
20.10 Array of Coarray
487(1)
20.11 Multidimensional Coarray
487(1)
20.12 Upper Bound of the Last CODIMENSION
488(1)
20.13 Properties of Coarray
489(1)
20.14 LCOBOUND
489(1)
20.15 UCOBOUND
490(1)
20.16 COSHAPE
490(1)
20.17 THIS IMAGE with Argument
491(1)
20.18 IMAGE_INDEX-
491(1)
20.19 Synchronization
492(2)
20.20 CRITICAL Section
494(2)
20.21 ALLOCATABLE Coarray
496(1)
20.22 CO Routines
496(1)
20.23 CO_MAX
497(1)
20.24 CO_MIN
498(1)
20.25 CO_SUM
498(1)
20.26 CO_REDUCE
499(1)
20.27 CO_BROADCAST
500(1)
20.28 Coarray and Subprogram
501(3)
20.29 Coarray and Function
504(1)
20.30 Coarray and Floating Point Status
505(1)
20.31 User Defined Type and Coarray
505(4)
20.32 COARRAY and POINTER
509(1)
20.33 Operator Overloading and Coarray
510(1)
20.34 Atomic Variables and Subroutines
511(1)
20.35 ATOMIC_DEFINE
512(1)
20.36 ATOMIC_REF
512(1)
20.37 ATOMIC_ADD
512(1)
20.38 ATOMIC_FETCH_ADD
512(1)
20.39 ATOMIC_AND
513(1)
20.40 ATOMIC_FETCH_AND
513(1)
20.41 ATOMIC_OR
513(1)
20.42 ATOMIC_FETCH_OR
513(1)
20.43 ATOMIC_XOR
514(1)
20.44 ATOMIC_FETCH_XOR
514(1)
20.45 ATOMIC CAS
514(1)
20.46 LOCK and UNLOCK
515(1)
20.47 Status Specifiers
516(1)
20.48 ERROR STOP
516(1)
20.49 Coarray and Interoperability
516(1)
20.50 COMMON, EQUIVALENCE and Coarray
516(1)
20.51 VOLATILE Variable
516(1)
20.52 EVENT
517(1)
20.53 EVENT POST
517(1)
20.54 EVENT WAIT
518(1)
20.55 EVENT_QUERY
519(1)
20.56 Programming Examples Using Coarray
519(4)
21 Parallel Programming Using OpenMP 523(48)
21.1 Thread
523(1)
21.2 Structured Block
523(1)
21.3 Parallelism
524(1)
21.4 Memory Management
524(1)
21.5 Application Program Interface (API)
524(1)
21.6 Compiler Support
524(1)
21.7 Compilation of Program Containing Openmp Directives
525(1)
21.8 Structure of Compiler Directives
525(1)
21.9 Parallel Region
526(1)
21.10 Parallelization Directives
526(1)
21.11 Clauses Associated with the Directives
527(1)
21.12 Parallel Directive
528(1)
21.13 Lexical and Dynamic Region
529(1)
21.14 Three Runtime Routines
529(1)
21.15 Nested Parallel
530(1)
21.16 Clauses Associated with Parallel Construct
531(1)
21.17 IF Clause
531(1)
21.18 NUM_THREADS
532(1)
21.19 PRIVATE
532(1)
21.20 SHARED
533(1)
21.21 DEFAULT NONE
533(1)
21.22 DEFAULT PRIVATE
533(1)
21.23 DEFAULT SHARED
533(1)
21.24 FIRSTPRIVATE
534(1)
21.25 Rules for OMP PARALLEL Directive
534(2)
21.26 Workshare Construct
536(1)
21.27 OMP DO/OMP END DO
536(1)
21.28 Rules of OMP DO/OMP END DO
537(1)
21.29 OMP SECTIONS/OMP END SECTIONS
537(2)
21.30 OMP WORKSHARE
539(2)
21.31 OMP SINGLE/OMP END SINGLE
541(1)
21.32 OMP MASTER/OMP END MASTER
542(1)
21.33 REDUCTION
543(3)
21.34 CRITICAL/END CRITICAL
546(1)
21.35 LASTPRIVATE
547(2)
21.36 ATOMIC
549(1)
21.37 OMP BARRIER
550(1)
21.38 THREADPRIVATE
551(2)
21.39 Rules for THREADPRIVATE
553(1)
21.40 COPYIN
553(2)
21.41 ORDERED
555(1)
21.42 COPYPRIVATE
555(1)
21.43 NOWAIT
556(1)
21.44 FLASH
557(1)
21.45 Openmp LOCK
557(3)
21.46 SCHEDULE
560(1)
21.47 STATIC SCHEDULE
561(1)
21.48 DYNAMIC SCHEDULE
562(1)
21.49 GUIDED SCHEDULE
563(1)
21.50 RUNTIME SCHEDULE
564(1)
21.51 AUTO SCHEDULE
564(1)
21.52 Openmp Runtime Library Routines
564(2)
21.53 Runtime Time Routines
566(1)
21.54 Environment Control
567(1)
21.55 Environment Variables
567(1)
21.56 Programming Examples
568(2)
21.57 Final Word
570(1)
22 Parallel Programming Using Message Passing Interface (MPI) 571(50)
22.1 MPI Module
571(1)
22.2 Compilation
571(1)
22.3 Error Parameter of MPI Routines
572(1)
22.4 MPI Version
572(1)
22.5 MPI_INIT
573(1)
22.6 MPI_INITIALIZED
573(1)
22.7 MPI_FINALIZE
573(1)
22.8 MPI Handles
574(1)
22.9 About This
Chapter
574(1)
22.10 Structure of a MPI Program
574(1)
22.11 MPI_COMM_RANK
575(1)
22.12 MPI_COMM_SIZE
575(1)
22.13 Use of Rank in Controlling the Flow of the MPI Program
576(1)
22.14 MPI_BARRIER
576(1)
22.15 Basic MPI Datatype in Fortran
577(1)
22.16 Point-to-Point Communication
577(1)
22.17 Communication Modes
577(1)
22.18 Message Sent and Received
578(1)
22.19 MPI_SEND and MPI_RECV
578(3)
22.20 MPI_SSEND
581(1)
22.21 MPI_BSEND
581(1)
22.22 MPI_RSEND
582(1)
22.23 Deadlock
582(1)
22.24 Non-blocking Send and Receive
583(2)
22.25 Send Function-Naming Conventions in Blocking and Non-blocking Forms
585(1)
22.26 MPI_ANY_TAG and MPI_ANY_SOURCE
585(1)
22.27 REDUCTION
586(6)
22.28 MPI_SCAN
592(1)
22.29 MPI_ALLREDUCE
593(2)
22.30 MPI_REDUCE_SCATTER_BLOCK
595(1)
22.31 MPI_REDUCE_SCATTER
596(1)
22.32 MPI BROADCAST
597(1)
22.33 MPI_GATHER
598(1)
22.34 MPI_ALLGATHER
599(1)
22.35 MPI_SCATTER
600(1)
22.36 MPI_SCATTERV
601(2)
22.37 MPI_ALLTOALL
603(1)
22.38 Derived Data Types
604(1)
22.39 MPI_TYPE_CONTIGUOUS
604(2)
22.40 MPLTYPE VECTOR
606(1)
22.41 MPLTYPE_CREATE HVECTOR
607(1)
22.42 MPI TYPE_INDEXED-
608(1)
22.43 MPI TYPE_CREATE_HINDEXED
609(1)
22.44 MPI TYPE_CREATE_INDEXED_BLOCK
609(1)
22.45 MPI TYPE_CREATE_HINDEXED_BLOCK
610(1)
22.46 MPI TYPE_CREATE_STRUCT
610(2)
22.47 MPI_PACK and MPI_UNPACK
612(1)
22.48 MPI_COMM_SPLIT
613(2)
22.49 Timing Routines
615(1)
22.50 Programming Examples
615(5)
22.51 Final Word
620(1)
Appendix A 621(2)
Appendix B 623(2)
Appendix C 625(8)
Appendix D 633(2)
Appendix E 635(2)
Appendix F 637(2)
Appendix G 639(2)
Appendix H 641(2)
Appendix I 643(2)
References 645(2)
Index 647
Dr Subrata Ray is a retired Senior Professor of the Indian Association for the Cultivation of Science, Kolkata. Spanning over a period of 40 years he taught computer software in Universities, Research Institutes, Colleges and Professional Bodies of the country. As an in-charge of computer centres he had built several computer centres almost from the scratch in universities and research institutes. Though his field of specialization is scientific computing, yet he participated in developing many Systems and Commercial Software.

He obtained M.Sc, Post M.Sc (Saha Institute of Nuclear Physics) and PhD from the Calcutta University and served renowned institutes like Tata Institute of Fundamental Research, Indian Institute of Technology, Kharagpur, Regional Computer Centre, Calcutta, University of Burdwan and Indian Association for the Cultivation of Science.

He is actively associated with the voluntary blood donation movement of the country and is an active member of the Association of Voluntary Blood Donors, West Bengal. He offers his voluntary services to the Eye Care & Research Centre and the National Council of Education, Bengal.

He is an amateur photographer.

He is married to Sanghamitra and they have a daughter Sumitra. He lives in Kolkata with his brother Debabrata and sister Uma.