Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Use of __float128 with openmpi
From: Patrick Boehl (Patrick.Boehl_at_[hidden])
Date: 2014-02-03 06:32:00


Hello George,

thank you a lot!

Everything seems to work now! :)

Best,
Patrick

On 02.02.2014, at 14:15, George Bosilca wrote:

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