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