From owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org  Thu Mar  5 21:29:27 2015
Return-Path: <owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org>
X-Original-To: sc22wg5-dom8
Delivered-To: sc22wg5-dom8@www.open-std.org
Received: by www.open-std.org (Postfix, from userid 521)
	id 13A453585FC; Thu,  5 Mar 2015 21:29:26 +0100 (CET)
Delivered-To: sc22wg5@open-std.org
X-Greylist: delayed 619 seconds by postgrey-1.34 at www5.open-std.org; Thu, 05 Mar 2015 21:29:25 CET
Received: from mga02.intel.com (mga02.intel.com [134.134.136.20])
	by www.open-std.org (Postfix) with ESMTP id AFD98356942
	for <sc22wg5@open-std.org>; Thu,  5 Mar 2015 21:29:24 +0100 (CET)
Received: from fmsmga002.fm.intel.com ([10.253.24.26])
  by orsmga101.jf.intel.com with ESMTP; 05 Mar 2015 12:19:02 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.11,348,1422950400"; 
   d="p7s'?scan'208,217";a="687545778"
Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133])
  by fmsmga002.fm.intel.com with ESMTP; 05 Mar 2015 12:19:02 -0800
Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by
 ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS)
 id 14.3.195.1; Thu, 5 Mar 2015 12:19:02 -0800
Received: from fmsmsx102.amr.corp.intel.com ([169.254.10.100]) by
 FMSMSX113.amr.corp.intel.com ([169.254.13.112]) with mapi id 14.03.0195.001;
 Thu, 5 Mar 2015 12:19:01 -0800
From: "Lionel, Steve" <steve.lionel@intel.com>
To: WG5 <sc22wg5@open-std.org>
Subject: User observations on PDTs
Thread-Topic: User observations on PDTs
Thread-Index: AdBXgPvr8Re1ZV/IRGKieqzmUF9yDA==
Date: Thu, 5 Mar 2015 20:19:01 +0000
Message-ID: <C87D5B0E7F671B4E97839637C460168E48966ACF@FMSMSX102.amr.corp.intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [10.253.54.21]
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";
	micalg=SHA1; boundary="----=_NextPart_000_01C8_01D05757.B50E9F30"
MIME-Version: 1.0
Sender: owner-sc22wg5@open-std.org
Precedence: bulk

------=_NextPart_000_01C8_01D05757.B50E9F30
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_01C9_01D05757.B50E9F30"


------=_NextPart_001_01C9_01D05757.B50E9F30
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

At the recent J3 meeting I mentioned that Intel had several customers very
interested in PDTs and who were looking for better support of them as well
as further features. A couple of members asked me for more details, so I
posed the question and got this response which is a good summary. (Also
follow the link for more.)

 

I think IanH's (Ian Harvey) comments in this topic
(https://software.intel.com/en-us/forums/topic/542336) summarize nicely many
of our motivations for using PDTs, especially what he says in Quote #12.
One can say the solutions we're currently offering to our consumers are very
close to his PositionAlloc example, but the typical use cases by our
customers are such we can be in PositionLen situation i.e., most of the data
dimensions of objects are fixed states and one often does not need the
flexibility offered by allocatable objects.  As mentioned by IanH, "length
type parameters are just awesome."   So we're considering a rewrite of some
of our code to transition from "PositionAlloc" to "PositionLen".  Note if
PDTs had become available much earlier in the Fortran 2003 implementation
cycle in Intel Fortran, then we would have started considering it for our
code design much sooner and a lot of our code would have been developed
using PDTs in the first place, especially with use of the length parameter.


 

In addition, one other area where we're looking PDTs is to use kind
parameters in the implementation of "abstract calculus" (example reference:
Scientific Software Design book by Rouson et al. you mention in your Dr
Fortran blog) in some of our core numerical libraries with both double
precision (real64 and c_double from iso_fortran_env, iso_c_binding
intrinsics) and quadruple precision (real132 from  iso_fortran_env)
arithmetic in mind.  We hope to start investigating  how we might benefit
from quadruple precision computations in certain "numerically sensitive"
sections of our simulations without having to rewrite much code.  Albeit
this is in very early stages and there are a lot of compiler improvements
we're waiting for, but we're excited at the prospect of using kind parameter
facility too.

 

So the belief that PDTs are not all that useful is incorrect.  Once robust
implementations of PDTs become widespread in compilers, it can become very
useful and if the standard can be further improved to facilitate generic
programming (e.g., not requiring include files to handle kind parameter
scenarios or being able to specify some limits on the type parameters, etc),
PDTs can become even more powerful.  So I feel the standard-bearers should
be looking to further improve this feature rather than leaving it as-is.

 

 

Steve Lionel

Intel Developer Support

Merrimack, NH

 


------=_NextPart_001_01C9_01D05757.B50E9F30
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><META =
HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 15 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US =
link=3D"#0563C1" vlink=3D"#954F72"><div class=3DWordSection1><p =
class=3DMsoNormal>At the recent J3 meeting I mentioned that Intel had =
several customers very interested in PDTs and who were looking for =
better support of them as well as further features. A couple of members =
asked me for more details, so I posed the question and got this response =
which is a good summary. (Also follow the link for =
more.)<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>I think IanH's (Ian Harvey) comments in this topic =
(https://software.intel.com/en-us/forums/topic/542336) summarize nicely =
many of our motivations for using PDTs, especially what he says in Quote =
#12.&nbsp;&nbsp; One can say the solutions we're currently offering to =
our consumers are very close to his PositionAlloc example, but the =
typical use cases by our customers are such we can be in PositionLen =
situation i.e., most of the data dimensions of objects are fixed states =
and one often does not need the flexibility offered by allocatable =
objects.&nbsp; As mentioned by IanH, &quot;length type parameters are =
just awesome.&quot;&nbsp;&nbsp; So we're considering a rewrite of some =
of our code to transition from &quot;PositionAlloc&quot; to =
&quot;PositionLen&quot;.&nbsp; Note if PDTs had become available much =
earlier in the Fortran 2003 implementation cycle in Intel Fortran, then =
we would have started considering it for our code design much sooner and =
a lot of our code would have been developed using PDTs in the first =
place, especially with use of the length parameter.&nbsp; =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>In addition, one other area where we're looking PDTs =
is to use kind parameters in the implementation of &quot;abstract =
calculus&quot; (example reference: Scientific Software Design book by =
Rouson et al. you mention in your Dr Fortran blog) in some of our core =
numerical libraries with both double precision (real64 and c_double from =
iso_fortran_env, iso_c_binding intrinsics) and quadruple precision =
(real132 from&nbsp; iso_fortran_env) arithmetic in mind.&nbsp; We hope =
to start investigating&nbsp; how we might benefit from quadruple =
precision computations in certain &quot;numerically sensitive&quot; =
sections of our simulations without having to rewrite much code.&nbsp; =
Albeit this is in very early stages and there are a lot of compiler =
improvements we're waiting for, but we're excited at the prospect of =
using kind parameter facility too.<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>So the =
belief that PDTs are not all that useful is incorrect.&nbsp; Once robust =
implementations of PDTs become widespread in compilers, it can become =
very useful and if the standard can be further improved to facilitate =
generic programming (e.g., not requiring include files to handle kind =
parameter scenarios or being able to specify some limits on the type =
parameters, etc), PDTs can become even more powerful.&nbsp; So I feel =
the standard-bearers should be looking to further improve this feature =
rather than leaving it as-is.<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Steve =
Lionel<o:p></o:p></p><p class=3DMsoNormal>Intel Developer =
Support<o:p></o:p></p><p class=3DMsoNormal>Merrimack, =
NH<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
------=_NextPart_001_01C9_01D05757.B50E9F30--

------=_NextPart_000_01C8_01D05757.B50E9F30
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

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
7VjuPwhuxkIiIDiCsyyDGg9Ed8OJqUoCGqDwlCNno0dYMqZtg5+tZ3N3iYaYc5kA4dPsNKhRREww
K//EayYirlhNIm64Jw3DOTxKuNPxRvbqr67FTZK/dS1KMoGMFXhv/uBcLoixtcHf12yEhCmYdFXm
2/r7s61cznOpOJ8W+DVxD4DH5l+eIRBm6Fl493Au9U7/7dR7JxcroJGxzGmk6NNkOGMBf9xDW8pc
ml+gQw6XR6di4ZK41DASlGcyxsPrCJYyTbX59VgC43Cp6z6XvhibAgMBAAGjggLkMIIC4DALBgNV
HQ8EBAMCB4AwPAYJKwYBBAGCNxUHBC8wLQYlKwYBBAGCNxUIhsOMdYSZ5VGD/YEohY6fU4KRwAln
gd69OZXwQwIBZAIBCDAdBgNVHQ4EFgQUlIaNzQx/L3OuBC9V1exFeRE2xDQwHwYDVR0jBBgwFoAU
HmkqtNwo/kcYTiELP7ysES/wmPUwgckGA1UdHwSBwTCBvjCBu6CBuKCBtYZUaHR0cDovL3d3dy5p
bnRlbC5jb20vcmVwb3NpdG9yeS9DUkwvSW50ZWwlMjBFeHRlcm5hbCUyMEJhc2ljJTIwSXNzdWlu
ZyUyMENBJTIwNEEuY3Jshl1odHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5
L0NSTC9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMlMjBJc3N1aW5nJTIwQ0ElMjA0QS5jcmwwge8G
CCsGAQUFBwEBBIHiMIHfMGkGCCsGAQUFBzAChl1odHRwOi8vd3d3LmludGVsLmNvbS9yZXBvc2l0
b3J5L2NlcnRpZmljYXRlcy9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMlMjBJc3N1aW5nJTIwQ0El
MjA0QS5jcnQwcgYIKwYBBQUHMAKGZmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50ZWwuY29tL3JlcG9z
aXRvcnkvY2VydGlmaWNhdGVzL0ludGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElzc3VpbmclMjBD
QSUyMDRBLmNydDAfBgNVHSUEGDAWBggrBgEFBQcDBAYKKwYBBAGCNwoDDDApBgkrBgEEAYI3FQoE
HDAaMAoGCCsGAQUFBwMEMAwGCisGAQQBgjcKAwwwSQYDVR0RBEIwQKAmBgorBgEEAYI3FAIDoBgM
FnN0ZXZlLmxpb25lbEBpbnRlbC5jb22BFnN0ZXZlLmxpb25lbEBpbnRlbC5jb20wDQYJKoZIhvcN
AQEFBQADggEBAE6q3K9lWrxX6qqR2WViuizSOdq208j5EccWLtPJzVNYWEYtyqXlsw3Wx3P4sKUM
0cpDBP0GadDhIqxzshwQ1kVLDCSawbIwc/7xH4PqgsTcj+AFx8o60iNFM45JGTaTFsyCkSdYzy/+
0zJeATF3uXyMkz7Ito6OSfFi+OxrMW9iCOzlbuuHZ4A9WSV8FPruXi0shKGsiNxGN+AA/9RG0DWx
EMXtXzAnDRuZmXIeUZLXfSfXY/LMZ/k8s+t1a8NIevngxmRQiPFSxh0RSBqE8o9PUujOV+3/kj84
i1xk5eLPB2gD3NtQoZbyhVnt8mdBiaC8wQoKcRfcZI/5Sc8ts2wwggZpMIIFUaADAgECAgobYWsw
AAAAAEEmMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEUMBIGA1UE
BxMLU2FudGEgQ2xhcmExGjAYBgNVBAoTEUludGVsIENvcnBvcmF0aW9uMSswKQYDVQQDEyJJbnRl
bCBFeHRlcm5hbCBCYXNpYyBJc3N1aW5nIENBIDRBMB4XDTE0MDEwOTIwNDUwMloXDTE2MTIyNDIw
NDUwMlowPzEWMBQGA1UEAxMNTGlvbmVsLCBTdGV2ZTElMCMGCSqGSIb3DQEJARYWc3RldmUubGlv
bmVsQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL86omCdPgA21OSk
gqL17YDlXSTdIjK3Uh+mTRUUDYala1+X/OBgsGplR0QcOu6EKElaYKpDeYAunus66qIRnUyZ5XMX
0diF+s7u8neyUwKNlxm90YHEUMGspoKiWjSVG0KFmZc0MIgryXN/ZJMciUJgerqdfGLCGPrLayYN
hl+TZokwJb3RG0fW7VOCLloQhHLB9AfGVQgxvMFkHwQuAwITKx9NE6mv7GuKAyfth+ux57MT5Ub6
deOnBZhlyu4vKIeNorGaMEUnoGD8pApEuvr82KQPOK9gKLJ1EIZgjUpyl3oUtP0z9/UNSI40PFAM
9qLSmNTl9A0NIx7+4sOPvG0CAwEAAaOCAyswggMnMAsGA1UdDwQEAwIEMDA9BgkrBgEEAYI3FQcE
MDAuBiYrBgEEAYI3FQiGw4x1hJnlUYP9gSiFjp9TgpHACWeEudlBh4T/TgIBZAIBDTBEBgkqhkiG
9w0BCQ8ENzA1MA4GCCqGSIb3DQMCAgIAgDAOBggqhkiG9w0DBAICAIAwBwYFKw4DAgcwCgYIKoZI
hvcNAwcwHQYDVR0OBBYEFARKxJsmEbiB1NhYPG8p7xe3GWx4MB8GA1UdIwQYMBaAFB5pKrTcKP5H
GE4hCz+8rBEv8Jj1MIHJBgNVHR8EgcEwgb4wgbuggbiggbWGVGh0dHA6Ly93d3cuaW50ZWwuY29t
L3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwRXh0ZXJuYWwlMjBCYXNpYyUyMElzc3VpbmclMjBDQSUy
MDRBLmNybIZdaHR0cDovL2NlcnRpZmljYXRlcy5pbnRlbC5jb20vcmVwb3NpdG9yeS9DUkwvSW50
ZWwlMjBFeHRlcm5hbCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwNEEuY3JsMIHvBggrBgEFBQcB
AQSB4jCB3zBpBggrBgEFBQcwAoZdaHR0cDovL3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9jZXJ0
aWZpY2F0ZXMvSW50ZWwlMjBFeHRlcm5hbCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwNEEuY3J0
MHIGCCsGAQUFBzAChmZodHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2Nl
cnRpZmljYXRlcy9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMlMjBJc3N1aW5nJTIwQ0ElMjA0QS5j
cnQwHwYDVR0lBBgwFgYIKwYBBQUHAwQGCisGAQQBgjcKAwQwKQYJKwYBBAGCNxUKBBwwGjAKBggr
BgEFBQcDBDAMBgorBgEEAYI3CgMEMEkGA1UdEQRCMECgJgYKKwYBBAGCNxQCA6AYDBZzdGV2ZS5s
aW9uZWxAaW50ZWwuY29tgRZzdGV2ZS5saW9uZWxAaW50ZWwuY29tMA0GCSqGSIb3DQEBBQUAA4IB
AQAOOGyTiGWRfF6I+TTsMAqBPsjsGK1Jimut8pMRC8Imj9aCDWukStExF98IF4nXmVL9RieeVbgh
Z19mXHiY/mQO/pM57+AzloIf28dehzqCCe3HfmHsLOkXflShMNnaubnb9O1y05FRz3oeOmHUIk4+
M5s4HcgANLCPDj0zzcDdUg47selypUEJRq9NMwpj8w2fBcwuUDARwHe5tQEqOmpnKwhNKvvhp3Di
hzGZFyVKT0ngfT7oTuv6u7oxieCyKBP0LhXHOc0z0Kwjjx79dPqYKOp3O2HigITV/oqEatZzB2jB
Q381sd1u4vRAF4K866LaGPDFuBJoBiOXNqZnkp/XMYID3jCCA9oCAQEwgYcweTELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAkNBMRQwEgYDVQQHEwtTYW50YSBDbGFyYTEaMBgGA1UEChMRSW50ZWwgQ29y
cG9yYXRpb24xKzApBgNVBAMTIkludGVsIEV4dGVybmFsIEJhc2ljIElzc3VpbmcgQ0EgNEECChtm
EBYAAAAAQScwCQYFKw4DAhoFAKCCAiswGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG
9w0BCQUxDxcNMTUwMzA1MjAxOTAwWjAjBgkqhkiG9w0BCQQxFgQU1HMhO8rLRwtgSMzgrzsIqAbQ
VSwwgZMGCSqGSIb3DQEJDzGBhTCBgjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAoGCCqGSIb3
DQMHMAsGCWCGSAFlAwQBAjAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAhow
CwYJYIZIAWUDBAIDMAsGCWCGSAFlAwQCAjALBglghkgBZQMEAgEwgZgGCSsGAQQBgjcQBDGBijCB
hzB5MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC1NhbnRhIENsYXJhMRowGAYD
VQQKExFJbnRlbCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgRXh0ZXJuYWwgQmFzaWMgSXNz
dWluZyBDQSA0QQIKG2FrMAAAAABBJjCBmgYLKoZIhvcNAQkQAgsxgYqggYcweTELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAkNBMRQwEgYDVQQHEwtTYW50YSBDbGFyYTEaMBgGA1UEChMRSW50ZWwgQ29y
cG9yYXRpb24xKzApBgNVBAMTIkludGVsIEV4dGVybmFsIEJhc2ljIElzc3VpbmcgQ0EgNEECChth
azAAAAAAQSYwDQYJKoZIhvcNAQEBBQAEggEAdzAUB23w5z0AFRGn08CipVpuSsH18se6DZwLbApY
My77WJ10a4Nh63r+I76VSVEQ/QB3ZdQZLHITiJmyAdHgooHyM+beoymBVlXRRtR/c5OnP+6MHEdB
RDpyc2TQ9qcQ+XgCc6jZtHZmKdOWiOPedTCZADgTjXyjuf8fYR5RDxGiTw6cMFtijorr+QaC3wr3
BC/mxD/wsrH24FoxjP92sWl4fjAi8dEwRde70pkB8ndo5Iywt00LTxS93ha3mJyhir97vkPn4u+U
4n4wbDxezfrq4HKfsNqELyg/zlhaN4H/Kruafi88ZQTy1d+AmvPcvS8kB1egBb141DNL7xPoDwAA
AAAAAA==

------=_NextPart_000_01C8_01D05757.B50E9F30--
