Just go for the most trivial:

MPI_Type_contiguous(sizeof(__float128), MPI_BYTE, &my__float128);

A little bit more info about the optional quad-precision floating-point format 
is available on Wikipedia 
(https://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic).

  George.


On Feb 2, 2014, at 13:41 , Patrick Boehl <patrick.bo...@physik.uni-muenchen.de> 
wrote:

> Hello Jeff,
> 
> thank you a lot for your reply!
> 
> On 01.02.2014, at 23:07, Jeff Hammond wrote:
> 
>> See Section 5.9.5 of MPI-3 or the section named "User-Defined
>> Reduction Operations" but presumably numbered differently in older
>> copies of the MPI standard.
>> 
>> An older but still relevant online reference is
>> http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report/node107.htm
>> 
> 
> In this example they construct this "datatype"
> 
> --------- 
> typedef struct {
> double real,imag;
> } Complex
> ---------
> 
> and later
> 
> ---------
> MPI_Datatype ctype;
> /* explain to MPI how type Complex is defined
> */
> MPI_Type_contiguous(2, MPI_DOUBLE, &ctype);
> ---------
> 
> Do I understand correctly that I have to find out how __float128 is 
> constructed internally and 
> convert it to a form which is compatible with the standard MPI Datatypes?
> In an analogue way as they do in the example. Up to now, I only found out 
> that __float128 should 
> be somehow the sum of two doubles.
> 
> Again, I am grateful for any help!
> 
> Best regards,
> Patrick
> 
> 
> 
> 
>> On Sat, Feb 1, 2014 at 2:28 PM, Tim Prince <n...@aol.com> wrote:
>>> 
>>> On 02/01/2014 12:42 PM, Patrick Boehl wrote:
>>>> 
>>>> Hi all,
>>>> 
>>>> I have a question on datatypes in openmpi:
>>>> 
>>>> Is there an (easy?) way to use __float128 variables with openmpi?
>>>> 
>>>> Specifically, functions like
>>>> 
>>>> MPI_Allreduce
>>>> 
>>>> seem to give weird results with __float128.
>>>> 
>>>> Essentially all I found was
>>>> 
>>>> http://beige.ucs.indiana.edu/I590/node100.html
>>>> 
>>>> where they state
>>>> ----
>>>> MPI_LONG_DOUBLE
>>>>  This is a quadruple precision, 128-bit long floating point number.
>>>> ----
>>>> 
>>>> But as far as I have seen, MPI_LONG_DOUBLE is only used for long doubles.
>>>> 
>>>> The Open MPI Version is 1.6.3 and gcc is 4.7.3 on a x86_64 machine.
>>>> 
>>> It seems unlikely that 10 year old course notes on an unspecified MPI
>>> implementation (hinted to be IBM power3) would deal with specific details of
>>> openmpi on a different architecture.
>>> Where openmpi refers to "portable C types" I would take long double to be
>>> the 80-bit hardware format you would have in a standard build of gcc for
>>> x86_64.  You should be able to gain some insight by examining your openmpi
>>> build logs to see if it builds for both __float80 and __float128 (or
>>> neither).  gfortran has a 128-bit data type (software floating point
>>> real(16), corresponding to __float128); you should be able to see in the
>>> build logs whether that data type was used.
>>> 
>>> 
>>> _______________________________________________
>>> users mailing list
>>> us...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> 
>> -- 
>> Jeff Hammond
>> jeff.scie...@gmail.com
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users

Reply via email to