[OMPI users] Use of __float128 with openmpi

2014-02-01 Thread Patrick Boehl
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.

Any help or comment is very appreciated!

Best regards,
Patrick


Re: [OMPI users] Use of __float128 with openmpi

2014-02-02 Thread Patrick Boehl
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  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



Re: [OMPI users] Use of __float128 with openmpi

2014-02-02 Thread Patrick Boehl
Hello Tim,

thank you for your reply!

On 01.02.2014, at 21:28, Tim Prince wrote:

> 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).  

Unfortunately, these are not my machines, so I do not have access to any build 
logs. But I will talk to the admins and/or 
I try to compile openmpi myself. 


Best regards,
Patrick

Re: [OMPI users] Use of __float128 with openmpi

2014-02-03 Thread Patrick Boehl
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 
>  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  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
> 
> ___
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users