Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] Use of __float128 with openmpi
From: Patrick Boehl (Patrick.Boehl_at_[hidden])
Date: 2014-02-02 07:41:13


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 <n8tm_at_[hidden]> 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
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
>
> --
> Jeff Hammond
> jeff.science_at_[hidden]
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users