[mpich2-commits] r7432 - mpich2/trunk
jayesh at mcs.anl.gov
jayesh at mcs.anl.gov
Wed Nov 10 16:07:46 CST 2010
Author: jayesh
Date: 2010-11-10 16:07:46 -0600 (Wed, 10 Nov 2010)
New Revision: 7432
Modified:
mpich2/trunk/winconfigure.wsf
Log:
Since fortran does not support unsigned ints, create fortran MPI dts appropriately on Windows. Without the fix we were creating out of range ints representing fortran dts.
Modified: mpich2/trunk/winconfigure.wsf
===================================================================
--- mpich2/trunk/winconfigure.wsf 2010-11-10 01:06:59 UTC (rev 7431)
+++ mpich2/trunk/winconfigure.wsf 2010-11-10 22:07:46 UTC (rev 7432)
@@ -1133,91 +1133,124 @@
ToInteger = i
End Function
+' eg: IsSignedInteger(0x8000, 4) = True
+Function IsSignedInteger(hex_str, nb)
+ Dim max_nibbles
+
+ IsSignedInteger = False
+ max_nibbles = nb/4
+
+ If (len(hex_str) > 2) AND (len(hex_str) - 2 <= max_nibbles) Then
+ If len(hex_str) - 2 < max_nibbles Then
+ ' IsSignedInteger = False
+ Else
+ If ToInteger(Mid(hex_str, 3, 1)) >= 8 Then
+ IsSignedInteger = True
+ End If
+ End If
+ Else
+ printMsg "ERROR", "Invalid HEX string provided , str=" & hex_str
+ End If
+End Function
+
'first = true
-Function HexToInt(str)
- Dim i, multiplier, index
- i = 0
- multiplier = 1
- for index = len(str) to 3 step -1
- i = i + (ToInteger(Mid(str, index, 1)) * multiplier)
- multiplier = multiplier * 16
- 'if first then
- ' MsgBox "char " & Mid(str, index, 1) & ", i = " & i
- 'end if
- next
- 'first = false
- HexToInt = i
+' eg: HexToInt(0x1, 32) = 1, HexToInt(0x1f, 32)=31
+Function HexToInt(str, nb)
+ Dim i, multiplier, index, max_nibbles
+ i = 0
+ multiplier = 1
+ max_nibbles = nb/4
+ if len(str) - 2 > max_nibbles then
+ printMsg "ERROR", "Cannot convert hex to integer, hex=" & str
+ HexToInt = 0
+ else
+ for index = len(str) to 3 step -1
+ i = i + (ToInteger(Mid(str, index, 1)) * multiplier)
+ multiplier = multiplier * 16
+ next
+ If IsSignedInteger(str, nb) Then
+ HexToInt = i - 2^nb
+ Else
+ HexToInt = i
+ End If
+ end if
End Function
-F77_MPI_DOUBLE_COMPLEX = HexToInt(dtypes.Item("MPI_DOUBLE_COMPLEX"))
-F77_MPI_COMPLEX = HexToInt(dtypes.Item("MPI_COMPLEX"))
-F77_MPI_LOGICAL_W32 = HexToInt(dtypes.Item("MPI_LOGICAL"))
-F77_MPI_LOGICAL_W64 = HexToInt(dtypes64.Item("MPI_LOGICAL"))
-F77_MPI_REAL_W32 = HexToInt(dtypes.Item("MPI_REAL"))
-F77_MPI_REAL_W64 = HexToInt(dtypes64.Item("MPI_REAL"))
-F77_MPI_DOUBLE_PRECISION = HexToInt(dtypes.Item("MPI_DOUBLE_PRECISION"))
-F77_MPI_INTEGER_W32 = HexToInt(dtypes.Item("MPI_INTEGER"))
-F77_MPI_INTEGER_W64 = HexToInt(dtypes64.Item("MPI_INTEGER"))
-F77_MPI_2INTEGER = HexToInt(dtypes.Item("MPI_2INTEGER"))
-F77_MPI_2COMPLEX = HexToInt(dtypes.Item("MPI_2COMPLEX"))
-F77_MPI_2DOUBLE_COMPLEX = HexToInt(dtypes.Item("MPI_2DOUBLE_COMPLEX"))
-F77_MPI_2REAL = HexToInt(dtypes.Item("MPI_2REAL"))
-F77_MPI_2DOUBLE_PRECISION = HexToInt(dtypes.Item("MPI_2DOUBLE_PRECISION"))
-F77_MPI_CHARACTER = HexToInt(dtypes.Item("MPI_CHARACTER"))
-F77_MPI_BYTE = HexToInt(dtypes.Item("MPI_BYTE"))
-F77_MPI_LB = HexToInt(dtypes.Item("MPI_LB"))
-F77_MPI_PACKED = HexToInt(dtypes.Item("MPI_PACKED"))
-F77_MPI_UB = HexToInt(dtypes.Item("MPI_UB"))
-F77_COMPLEX8 = HexToInt(dtypes.Item("MPI_COMPLEX8"))
-F77_COMPLEX16 = HexToInt(dtypes.Item("MPI_COMPLEX16"))
-F77_COMPLEX32 = HexToInt(dtypes.Item("MPI_COMPLEX32"))
-F77_INTEGER1 = HexToInt(dtypes.Item("MPI_INTEGER1"))
-F77_INTEGER2 = HexToInt(dtypes.Item("MPI_INTEGER2"))
-F77_INTEGER4 = HexToInt(dtypes.Item("MPI_INTEGER4"))
-F77_INTEGER8 = HexToInt(dtypes.Item("MPI_INTEGER8"))
-F77_INTEGER16 = HexToInt(dtypes.Item("MPI_INTEGER16"))
-F77_REAL4 = HexToInt(dtypes.Item("MPI_REAL4"))
-F77_REAL8 = HexToInt(dtypes.Item("MPI_REAL8"))
-F77_REAL16 = HexToInt(dtypes.Item("MPI_REAL16"))
-F77_CHAR = HexToInt(dtypes.Item("MPI_CHAR"))
-F77_SIGNED_CHAR = HexToInt(dtypes.Item("MPI_SIGNED_CHAR"))
-F77_UNSIGNED_CHAR = HexToInt(dtypes.Item("MPI_UNSIGNED_CHAR"))
-F77_WCHAR = HexToInt(dtypes.Item("MPI_WCHAR"))
-F77_SHORT = HexToInt(dtypes.Item("MPI_SHORT"))
-F77_UNSIGNED_SHORT = HexToInt(dtypes.Item("MPI_UNSIGNED_SHORT"))
-F77_INT = HexToInt(dtypes.Item("MPI_INT"))
-F77_UNSIGNED = HexToInt(dtypes.Item("MPI_UNSIGNED"))
-F77_LONG = HexToInt(dtypes.Item("MPI_LONG"))
-F77_UNSIGNED_LONG = HexToInt(dtypes.Item("MPI_UNSIGNED_LONG"))
-F77_FLOAT = HexToInt(dtypes.Item("MPI_FLOAT"))
-F77_DOUBLE = HexToInt(dtypes.Item("MPI_DOUBLE"))
-F77_LONG_DOUBLE = HexToInt(dtypes.Item("MPI_LONG_DOUBLE"))
-F77_LONG_LONG_INT = HexToInt(dtypes.Item("MPI_LONG_LONG_INT"))
-F77_UNSIGNED_LONG_LONG = HexToInt(dtypes.Item("MPI_UNSIGNED_LONG_LONG"))
-F77_LONG_LONG = HexToInt(dtypes.Item("MPI_LONG_LONG"))
-F77_FLOAT_INT = HexToInt(dtypes.Item("MPI_FLOAT_INT"))
-F77_DOUBLE_INT = HexToInt(dtypes.Item("MPI_DOUBLE_INT"))
-F77_LONG_INT = HexToInt(dtypes.Item("MPI_LONG_INT"))
-F77_SHORT_INT = HexToInt(dtypes.Item("MPI_SHORT_INT"))
-F77_2INT = HexToInt(dtypes.Item("MPI_2INT"))
-F77_LONG_DOUBLE_INT = HexToInt(dtypes.Item("MPI_LONG_DOUBLE_INT"))
-F77_INT8_T = HexToInt(dtypes.Item("MPI_INT8_T"))
-F77_INT16_T = HexToInt(dtypes.Item("MPI_INT16_T"))
-F77_INT32_T = HexToInt(dtypes.Item("MPI_INT32_T"))
-F77_INT64_T = HexToInt(dtypes.Item("MPI_INT64_T"))
-F77_UINT8_T = HexToInt(dtypes.Item("MPI_UINT8_T"))
-F77_UINT16_T = HexToInt(dtypes.Item("MPI_UINT16_T"))
-F77_UINT32_T = HexToInt(dtypes.Item("MPI_UINT32_T"))
-F77_UINT64_T = HexToInt(dtypes.Item("MPI_UINT64_T"))
-F77_C_BOOL = HexToInt(dtypes.Item("MPI_C_BOOL"))
-F77_C_FLOAT_COMPLEX = HexToInt(dtypes.Item("MPI_C_FLOAT_COMPLEX"))
-F77_C_COMPLEX = HexToInt(dtypes.Item("MPI_C_COMPLEX"))
-F77_C_DOUBLE_COMPLEX = HexToInt(dtypes.Item("MPI_C_DOUBLE_COMPLEX"))
-F77_C_LONG_DOUBLE_COMPLEX = HexToInt(dtypes.Item("MPI_C_LONG_DOUBLE_COMPLEX"))
-F77_AINT_W32 = HexToInt(dtypes.Item("MPI_AINT_W32"))
-F77_AINT_W64 = HexToInt(dtypes64.Item("MPI_AINT_W64"))
-F77_OFFSET_W64 = HexToInt(dtypes.Item("MPI_OFFSET_W64"))
+'Convert hex to a fortran integer
+Function HexToFint(str)
+ ' sizeof(fint) = 4 bytes
+ HexToFint = HexToInt(str, 32)
+End Function
+F77_MPI_DOUBLE_COMPLEX = HexToFint(dtypes.Item("MPI_DOUBLE_COMPLEX"))
+F77_MPI_COMPLEX = HexToFint(dtypes.Item("MPI_COMPLEX"))
+F77_MPI_LOGICAL_W32 = HexToFint(dtypes.Item("MPI_LOGICAL"))
+F77_MPI_LOGICAL_W64 = HexToFint(dtypes64.Item("MPI_LOGICAL"))
+F77_MPI_REAL_W32 = HexToFint(dtypes.Item("MPI_REAL"))
+F77_MPI_REAL_W64 = HexToFint(dtypes64.Item("MPI_REAL"))
+F77_MPI_DOUBLE_PRECISION = HexToFint(dtypes.Item("MPI_DOUBLE_PRECISION"))
+F77_MPI_INTEGER_W32 = HexToFint(dtypes.Item("MPI_INTEGER"))
+F77_MPI_INTEGER_W64 = HexToFint(dtypes64.Item("MPI_INTEGER"))
+F77_MPI_2INTEGER = HexToFint(dtypes.Item("MPI_2INTEGER"))
+F77_MPI_2COMPLEX = HexToFint(dtypes.Item("MPI_2COMPLEX"))
+F77_MPI_2DOUBLE_COMPLEX = HexToFint(dtypes.Item("MPI_2DOUBLE_COMPLEX"))
+F77_MPI_2REAL = HexToFint(dtypes.Item("MPI_2REAL"))
+F77_MPI_2DOUBLE_PRECISION = HexToFint(dtypes.Item("MPI_2DOUBLE_PRECISION"))
+F77_MPI_CHARACTER = HexToFint(dtypes.Item("MPI_CHARACTER"))
+F77_MPI_BYTE = HexToFint(dtypes.Item("MPI_BYTE"))
+F77_MPI_LB = HexToFint(dtypes.Item("MPI_LB"))
+F77_MPI_PACKED = HexToFint(dtypes.Item("MPI_PACKED"))
+F77_MPI_UB = HexToFint(dtypes.Item("MPI_UB"))
+F77_COMPLEX8 = HexToFint(dtypes.Item("MPI_COMPLEX8"))
+F77_COMPLEX16 = HexToFint(dtypes.Item("MPI_COMPLEX16"))
+F77_COMPLEX32 = HexToFint(dtypes.Item("MPI_COMPLEX32"))
+F77_INTEGER1 = HexToFint(dtypes.Item("MPI_INTEGER1"))
+F77_INTEGER2 = HexToFint(dtypes.Item("MPI_INTEGER2"))
+F77_INTEGER4 = HexToFint(dtypes.Item("MPI_INTEGER4"))
+F77_INTEGER8 = HexToFint(dtypes.Item("MPI_INTEGER8"))
+F77_INTEGER16 = HexToFint(dtypes.Item("MPI_INTEGER16"))
+F77_REAL4 = HexToFint(dtypes.Item("MPI_REAL4"))
+F77_REAL8 = HexToFint(dtypes.Item("MPI_REAL8"))
+F77_REAL16 = HexToFint(dtypes.Item("MPI_REAL16"))
+F77_CHAR = HexToFint(dtypes.Item("MPI_CHAR"))
+F77_SIGNED_CHAR = HexToFint(dtypes.Item("MPI_SIGNED_CHAR"))
+F77_UNSIGNED_CHAR = HexToFint(dtypes.Item("MPI_UNSIGNED_CHAR"))
+F77_WCHAR = HexToFint(dtypes.Item("MPI_WCHAR"))
+F77_SHORT = HexToFint(dtypes.Item("MPI_SHORT"))
+F77_UNSIGNED_SHORT = HexToFint(dtypes.Item("MPI_UNSIGNED_SHORT"))
+F77_INT = HexToFint(dtypes.Item("MPI_INT"))
+F77_UNSIGNED = HexToFint(dtypes.Item("MPI_UNSIGNED"))
+F77_LONG = HexToFint(dtypes.Item("MPI_LONG"))
+F77_UNSIGNED_LONG = HexToFint(dtypes.Item("MPI_UNSIGNED_LONG"))
+F77_FLOAT = HexToFint(dtypes.Item("MPI_FLOAT"))
+F77_DOUBLE = HexToFint(dtypes.Item("MPI_DOUBLE"))
+F77_LONG_DOUBLE = HexToFint(dtypes.Item("MPI_LONG_DOUBLE"))
+F77_LONG_LONG_INT = HexToFint(dtypes.Item("MPI_LONG_LONG_INT"))
+F77_UNSIGNED_LONG_LONG = HexToFint(dtypes.Item("MPI_UNSIGNED_LONG_LONG"))
+F77_LONG_LONG = HexToFint(dtypes.Item("MPI_LONG_LONG"))
+F77_FLOAT_INT = HexToFint(dtypes.Item("MPI_FLOAT_INT"))
+F77_DOUBLE_INT = HexToFint(dtypes.Item("MPI_DOUBLE_INT"))
+F77_LONG_INT = HexToFint(dtypes.Item("MPI_LONG_INT"))
+F77_SHORT_INT = HexToFint(dtypes.Item("MPI_SHORT_INT"))
+F77_2INT = HexToFint(dtypes.Item("MPI_2INT"))
+F77_LONG_DOUBLE_INT = HexToFint(dtypes.Item("MPI_LONG_DOUBLE_INT"))
+F77_INT8_T = HexToFint(dtypes.Item("MPI_INT8_T"))
+F77_INT16_T = HexToFint(dtypes.Item("MPI_INT16_T"))
+F77_INT32_T = HexToFint(dtypes.Item("MPI_INT32_T"))
+F77_INT64_T = HexToFint(dtypes.Item("MPI_INT64_T"))
+F77_UINT8_T = HexToFint(dtypes.Item("MPI_UINT8_T"))
+F77_UINT16_T = HexToFint(dtypes.Item("MPI_UINT16_T"))
+F77_UINT32_T = HexToFint(dtypes.Item("MPI_UINT32_T"))
+F77_UINT64_T = HexToFint(dtypes.Item("MPI_UINT64_T"))
+F77_C_BOOL = HexToFint(dtypes.Item("MPI_C_BOOL"))
+F77_C_FLOAT_COMPLEX = HexToFint(dtypes.Item("MPI_C_FLOAT_COMPLEX"))
+F77_C_COMPLEX = HexToFint(dtypes.Item("MPI_C_COMPLEX"))
+F77_C_DOUBLE_COMPLEX = HexToFint(dtypes.Item("MPI_C_DOUBLE_COMPLEX"))
+F77_C_LONG_DOUBLE_COMPLEX = HexToFint(dtypes.Item("MPI_C_LONG_DOUBLE_COMPLEX"))
+F77_AINT_W32 = HexToFint(dtypes.Item("MPI_AINT_W32"))
+F77_AINT_W64 = HexToFint(dtypes64.Item("MPI_AINT_W64"))
+F77_OFFSET_W64 = HexToFint(dtypes.Item("MPI_OFFSET_W64"))
+
if false then
foo = ""
foo = "F77_MPI_COMPLEX = " & F77_MPI_COMPLEX & vbCrLf
More information about the mpich2-commits
mailing list