{"action":"created","issue":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/18","repository_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/18/labels{/name}","comments_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/18/comments","events_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/18/events","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/18","id":167209041,"number":18,"title":"New Predefined Datatypes","user":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/Enhancements%20to%20standard","name":"Enhancements to standard","color":"fbca04"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/MPI%202%5C.2","name":"MPI 2\\.2","color":"ededed"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/Not%20ready%20%5C/%20author%20rework","name":"Not ready \\/ author rework","color":"ededed"},{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/labels/Text%20committed","name":"Text committed","color":"d93f0b"}],"state":"open","locked":false,"assignee":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"assignees":[{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/milestones/6","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/milestones/2009/04/06%20Chicago","labels_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/milestones/6/labels","id":1900467,"number":6,"title":"2009/04/06 Chicago","description":"","creator":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":3,"state":"closed","created_at":"2016-07-23T22:09:07Z","updated_at":"2016-07-23T23:44:33Z","due_on":"2009-04-08T04:00:00Z","closed_at":"2016-07-23T22:09:07Z"},"comments":43,"created_at":"2016-07-23T23:39:02Z","updated_at":"2016-07-23T23:49:41Z","closed_at":null,"body":"**Originally by _goodell_ on 2008-09-10 09:59:10 -0500**\n\n___\n# New Predefined DatatypesAuthor: Dave Goodell\n\n## Description\nThis proposal addresses the need for additional predefined MPI datatypes that correspond to built-in and MPI-defined language types.\n\n## History\nI recently (Aug-2008) encountered these shortcomings in my own development work.  A limited version of this proposal is also mentioned on the errata page: http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/mpi2-2issues.htm\n\n## Proposed Solution\n\n 1. Add the following MPI datatypes that correspond to the indicated exact-width C99 types:\n\n|| MPI Datatype             || C99 Type || \n|| MPI_INT8_T               || int8_t   || \n|| MPI_INT16_T              || int16_t  || \n|| MPI_INT32_T              || int32_t  || \n|| MPI_INT64_T              || int64_t  || \n|| MPI_UINT8_T              || uint8_t  || \n|| MPI_UINT16_T             || uint16_t || \n|| MPI_UINT32_T             || uint32_t || \n|| MPI_UINT64_T             || uint64_t || \n\n Sep 8 2008 Straw Vote for Proposal 1 (included now-dropped C++ bindings)\n\n|| Yes || Maybe || No for 2.2 || Abstain ||\n||11 || 11 || 3 || 3 ||\n\n 2. Add the following MPI predefined datatypes that correspond to C99 types:\n|| MPI Datatype               || C99 Type             || \n|| MPI_C_BOOL                 || _Bool                || \n|| MPI_C_COMPLEX              || float _Complex       || \n|| MPI_C_FLOAT_COMPLEX        || float _Complex       || \n|| MPI_C_DOUBLE_COMPLEX       || double _Complex      || \n|| MPI_C_LONG_DOUBLE_COMPLEX  || long double _Complex || \n\n Sep 8 2008 Straw Vote for Proposal 2 (included now-dropped C++ bindings)\n\n|| Yes || Maybe || No for 2.2 || Abstain ||\n|| 5 || 23 || 0 || 3 ||\n\n\n 3. Add the following MPI datatypes corresponding to the indicated MPI-defined types:\n|| MPI Datatype             || C Type     || Fortran Type                    ||\n|| MPI_AINT                 || MPI_Aint   || INTEGER (KIND=MPI_ADDRESS_KIND) ||\n|| MPI_OFFSET               || MPI_Offset || INTEGER (KIND=MPI_OFFSET_KIND)  ||\n\nObviously these two types present a potential problem in heterogeneous environments.  This will be handled per section 3.3.2 of the MPI-2.1 document:\n\n  \"Overflow and underflow exceptions may occur during floating point conversions. Con- version of integers or characters may also lead to exceptions when a value that can be represented in one system cannot be represented in the other system. An exception occur- ring during representation conversion results in a failure of the communication. An error occurs either in the send operation, or the receive operation, or both.\"\n\n Sep 8 2008 Straw Vote for Proposal 3\n\n|| Yes || Maybe || No for 2.2 || Abstain ||\n|| 11 || 18 || 0 || 2 ||\n\n-*With this description in mind, make the following changes to the text of the MPI-2.1 document:**\n\nSection 3.2.2 page 28.\nAdd the following entries to table 3.2:\n|| MPI_C_BOOL    || _Bool      ||\n|| MPI_INT8_T    || int8_t     ||\n|| MPI_INT16_T   || int16_t    ||\n|| MPI_INT32_T   || int32_t    ||\n|| MPI_INT64_T   || int64_t    ||\n|| MPI_UINT8_T   || uint8_t    ||\n|| MPI_UINT16_T  || uint16_t   ||\n|| MPI_UINT32_T  || uint32_t   ||\n|| MPI_UINT64_T  || uint64_t   ||\n|| MPI_C_COMPLEX                      || float _Complex       ||\n|| MPI_C_FLOAT_COMPLEX (as a synonym) || float _Complex       ||\n|| MPI_C_DOUBLE_COMPLEX               || double _Complex      ||\n|| MPI_C_LONG_DOUBLE_COMPLEX          || long double _Complex ||\n\n\nSection 3.2.2 page 28, line 28.\nAdd the following paragraphs:\n  -Rationale.* The datatypes MPI_C_BOOL, MPI_INT8_T, MPI_INT16_T, MPI_INT32_t, MPI_UINT8_T, MPI_UINT16_T, MPI_UINT32_t, MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX have no corresponding C++ bindings.  This was intentionally done to avoid potential collisions with the C preprocessor and namespaced C++ names.  C++ applications can use the C bindings with no loss of functionality.  *(End of rationale.)*\n\n  The datatypes MPI_AINT and MPI_OFFSET correspond to the MPI-defined C types MPI_Aint and MPI_Offset and their Fortran equivalents INTEGER (KIND=MPI_ADDRESS_KIND) and INTEGER (KIND=MPI_OFFSET_KIND).  This is described in table 3.3.  See section 16.3.10 for information on interlanguage communication with these types.\nAlso add the following table as table 3.3:\n|| MPI datatype             || C datatype || Fortran datatype                ||\n|| MPI_AINT                 || MPI_Aint   || INTEGER (KIND=MPI_ADDRESS_KIND) ||\n|| MPI_OFFSET               || MPI_Offset || INTEGER (KIND=MPI_OFFSET_KIND)  ||\n\nSection 5.9.2 page 162, line 19.\nInsert the following C integer types into the right-hand column:\n\"MPI_INT8_T, MPI_INT16_T, MPI_INT32_T, MPI_INT64_T, MPI_UINT8_T, MPI_UINT16_T, MPI_UINT32_T, MPI_UINT64_T\"\n\nSection 5.9.2 page 162, line 20.\nAdd \"MPI_AINT, MPI_OFFSET\" to the end of the line as Fortran integer types.\n\nSection 5.9.2 page 162, line 24.\nAdd \"MPI_C_BOOL\" before \"MPI_LOGICAL\" as a Logical type.\n\nSection 5.9.2 page 162, line 25.\nAdd \"MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, MPI_C_LONG_DOUBLE_COMPLEX\" after \"MPI_COMPLEX\" as Complex types.\n\nSection 13.5.2 page 414, line 28-29.\nChange\n  \"For Fortran LOGICAL and C++ bool, 0 implies false and nonzero implies true.  Fortran COMPLEX and DOUBLE COMPLEX are represented by a pair of floating point format values for the real and imaginary components.\"\nto\n  \"For C _Bool, Fortran LOGICAL and C++ bool, 0 implies false and nonzero implies true. C float _Complex, double _Complex and long double _Complex as well as Fortran COMPLEX and DOUBLE COMPLEX are represented by a pair of floating point format values for the real and imaginary components.\"\n\nSection 13.5.2 page 416 table 13.2.\nAdd the following to the table:\n|| MPI_C_BOOL    || 4 ||\n|| MPI_INT8_T    || 1 ||\n|| MPI_INT16_T   || 2 ||\n|| MPI_INT32_T   || 4 ||\n|| MPI_INT64_T   || 8 ||\n|| MPI_UINT8_T   || 1 ||\n|| MPI_UINT16_T  || 2 ||\n|| MPI_UINT32_T  || 4 ||\n|| MPI_UINT64_T  || 8 ||\n|| MPI_AINT      || 8 ||\n|| MPI_OFFSET    || 8 ||\n|| MPI_C_COMPLEX             || 2*4  ||\n|| MPI_C_FLOAT_COMPLEX       || 2*4  ||\n|| MPI_C_DOUBLE_COMPLEX      || 2*8  ||\n|| MPI_C_LONG_DOUBLE_COMPLEX || 2*16 ||\n\nSection A.1 page 494, line 1 \"Named Predefined Datatypes\" table.\nAdd the following to the table:\n|| MPI_C_BOOL                ||  || _Bool                ||\n|| MPI_INT8_T                ||  || int8_t               ||\n|| MPI_INT16_T               ||  || int16_t              ||\n|| MPI_INT32_T               ||  || int32_t              ||\n|| MPI_INT64_T               ||  || int64_t              ||\n|| MPI_UINT8_T               ||  || uint8_t              ||\n|| MPI_UINT16_T              ||  || uint16_t             ||\n|| MPI_UINT32_T              ||  || uint32_t             ||\n|| MPI_UINT64_T              ||  || uint64_t             ||\n|| MPI_AINT                  ||  || MPI_Aint             ||\n|| MPI_OFFSET                ||  || MPI_Offset           ||\n|| MPI_C_COMPLEX             ||  || float _Complex       ||\n|| MPI_C_FLOAT_COMPLEX       ||  || float _Complex       ||\n|| MPI_C_DOUBLE_COMPLEX      ||  || double _Complex      ||\n|| MPI_C_LONG_DOUBLE_COMPLEX ||  || long double _Complex ||\n\n## Impact on Implementations\nImplementations need to add the new predefined types in mpi.h and mpif.h as well as corresponding support in any datatype handling code.  Additional testing will be needed to ensure that the types are handled correctly.\n\nThis change can make parts of some implementation code simpler, since many MPI implementations internally use certain MPI calls.\n\n## Impact on Applications / Users\nThis should make user code simpler because users who wish to send these types no longer need to build their own datatypes beforehand.\n\n## Alternative Solutions\nAn alternate naming scheme could be used.  Options include dropping the \"_T\" suffix from the C99 types or adding a suffix like \"_TYPE\" to the MPI-defined types.\n\nOther datatypes could be added to this list, including:\n - intmax_t\n - int_least32_t (and similar)\n - int_fast16_t (and similar)\n - intptr_t\n - size_t\n\nThis is a subject for the forum to discuss.  In my experience these types are rarely used or are already effectively handled by another type (size_t and intptr_t by MPI_Aint).\n\n## Entry for the Change Log\nSection 3.2.2 page 28.\nMPI_(U)INT{8,16,32,64}_T, MPI_AINT, MPI_OFFSET, MPI_C_BOOL, MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX are now valid predefined MPI datatypes.\n\n-*If both Ticket #18 and #64 are accepted, then a combined Change-Log entry about Section 5.9.2 applies as defined in Ticket #64.**\n\nSection 5.9.2 page 162.\nMPI_(U)INT{8,16,32,64}_T are all considered C integer types for the purposes of the predefined reduction operators.  MPI_AINT and MPI_OFFSET are considered Fortran integer types.  MPI_C_BOOL is considered a Logical type.  MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX are considered Complex types.\n\nSection 13.5.2 page 416 table 13.2.\nMPI_(U)INT{8,16,32,64}_T, MPI_AINT, MPI_OFFSET, MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, MPI_C_LONG_DOUBLE_COMPLEX, and MPI_C_BOOL are added as predefined datatypes in the external32 representation.\n\nSection A.1 page 494, line 1 \"Named Predefined Datatypes\" table.\nAdded MPI_(U)INT{8,16,32,64}_T, MPI_AINT, MPI_OFFSET, MPI_C_BOOL, MPI_C_FLOAT_COMPLEX, MPI_C_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX are added as predefined datatypes.\n\n```\n#!comment\nvim: set ft=wiki tw=0 spell :\n```\n"},"comment":{"url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/comments/234747635","html_url":"https://github.com/mpiforumbot/mpi-forum-historic/issues/18#issuecomment-234747635","issue_url":"https://api.github.com/repos/mpiforumbot/mpi-forum-historic/issues/18","id":234747635,"user":{"login":"mpiforumbot","id":20617676,"avatar_url":"https://avatars.githubusercontent.com/u/20617676?v=3","gravatar_id":"","url":"https://api.github.com/users/mpiforumbot","html_url":"https://github.com/mpiforumbot","followers_url":"https://api.github.com/users/mpiforumbot/followers","following_url":"https://api.github.com/users/mpiforumbot/following{/other_user}","gists_url":"https://api.github.com/users/mpiforumbot/gists{/gist_id}","starred_url":"https://api.github.com/users/mpiforumbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpiforumbot/subscriptions","organizations_url":"https://api.github.com/users/mpiforumbot/orgs","repos_url":"https://api.github.com/users/mpiforumbot/repos","events_url":"https://api.github.com/users/mpiforumbot/events{/privacy}","received_events_url":"https://api.github.com/users/mpiforumbot/received_events","type":"User","site_admin":false},"created_at":"2016-07-23T23:49:41Z","updated_at":"2016-07-23T23:49:41Z","body":"**Originally by _jsquyres_ on 2009-04-04 10:51:10 -0500**\n\n___\nThumbs up."}}
{"actor":{"display_login":"mpiforumbot"}}