Subversion Repositories Open64

[/] [branches/] - Rev 3950

Rev

Go to most recent revision

Filtering Options

Clear current filter

Rev Log message Author Age Path
3950 Merged trunk changes r3821:3844 -r3848:3850 in to open64-booster branch ravid 338d 13h /branches/
3949 Merger trunk changes r3790-r3820 in to open64-booster branch ravid 339d 16h /branches/
3948 open64 merge r3774:3826

Adds many some fixes and improvements made to Open64 5.0 to OpenUH.
Features include:

* increased compatability with GNU

* Nystrom alias analysis in IPA phase

* Siloed reference analysis in IPA phase,


See the open64 (main trunk) commit log for more details.
dreachem 340d 23h /branches/
3947 [CAF] changes in runtime for compatability with gcc > 4.5

Removed inline qualifer for comm_proc_id and comm_num_procs functions in
header files.

Also, fixed some calls to strncat to prevent potential buffer overflow.

Contributor: Deepak
dreachem 340d 23h /branches/
3946 adding some UH legal headers for new files. dreachem 341d 01h /branches/
3945 allow unsigned int for loop index variable in OMP FOR loops.

OpenMP 3.0 allows unsigned integers for loop index variables for parallel
loops.
dreachem 341d 01h /branches/
3944 [CAF] Adds basic support for a set of coarray collectives

This adds some basic support for a set of coarray collectives that have been
proposed for inclusion into the Fortran standard:

co_sum, co_product, co_maxval, co_minval

Front-end support also was added for:

co_all, co_any, co_count, co_findloc, co_maxloc, co_inloc

A few general CAF bug fixes are also in this commit:

* In some cases the front-end would reuse a dope vector of a coarray type for a
non-coarray variable, which confused the subsequent back-end lowering phase.
This commit prevents such a thing from happening.

* The compiler didn't handle coscalars as arguments in CAF intrinsic calls,
specifically this_image, image_index, lcobound, and ucobound. This commit
adds support for this in the front-end. It required generation of a dope
vector for non-allocatable coscalars and some other changes.

Also, there were some minor adjustments to the functions names that are
created by the compiler for consistency.

Contributor: Deepak, Siddhartha
dreachem 341d 01h /branches/
3943 [CAF] adds --disable-cafrt-traces configure option.

Since tracing feature in CAF run time can add slight overheads, we allow it to
be turned off completely with this option.

Contributor: Deepak
dreachem 341d 01h /branches/
3942 [CAF] Adding error messages for lcobound, ucobound, image_index intrinsics.

* This corrects the error message printed when the first argument for lcobound,
ucobound, and image_index intrinsics is not a coarray.

* The front-end will now emit an error for the IMAGE_INDEX intrinsic if the
sub argument isn't an array of size equal to corank of the coarray.

Increasing patch level to 3.0.9

Contribuor: Deepak
dreachem 341d 01h /branches/
3940 [CAF] uhcaf fix to handle different source formats and gasnet-everthing fix

This commit makes the following fixes:

* Fixes in uhcaf script to handle various source, IR, and object files.

* Forgot to init heap start address for everything config. The start address
of the local heap needs to be stored in the global variable
everything_heap_start, so that it may be accessed by other images on first
communication.

Patch level updated to 3.0.8.

Contributor: Deepak
dreachem 347d 03h /branches/
3939 [CAF] Supports save coarrays + misc. fixes

The main change in this commit is added support for save coarrays. In order to
efficiently support remotely accessible save coarrays, they must be allocated
on the managed symmetric heap as allocatable coarrays are. This requires the
compiler to gather all save coarrays declared throughout the program and
allocate them on the heap at the start of the program. OpenUH now does this.

This commit also fixes a number of bugs:

* Fix for created LCB assignment statement during the coarray prelowering
phase

* Fix for uhcaf return status and command line option parsing

* Fixes for handling OPR_CVT WHIRL nodes during coarray lowering phase.

* Fixes bug when writing a scalar value to a remote array section.

* Corrects the data type for a remote access within structured control flow
statements

* Fixes dope vector temp variable created for calling a procedure with an
assumed shape coarray dummy argument. Specifically, the temp needed to be
declared with codimensions matching the dummy argument.

Also, increasing patch level to 3.0.7

Contributor: Deepak
dreachem 349d 02h /branches/
3936 Revert previous open64 merge and change inline functions

This reverts the open64 merge r3774:3875, since it wasn't stable.

Also, changing some inline functions back to macros. The inline functions
caused the coarray lowering phase to crash when not building a debug compiler.
dreachem 357d 11h /branches/
3935 adding missing files for previous open64 merge dreachem 357d 15h /branches/
3934 open64 merge r3774:3875

Adds many fixes and improvements made for Open64 5.0 release to OpenUH.
Features include:
enabling of Nystrom alias analyzer for IPA phase
the siloed reference analysis to IPA phase,
x86-ppc32 cross compiler support,
CGSSA implementation.

Other enhancements include improve build where the default target architecture is
detected, and support for variable length arrays in structs. This commit
purposely does not include -r3876 from open64 main trunk, because OpenUH has
existing dependencies on PROMPF feature and that commit attempts to eliminate
PROMPF completely.

See the open64 (main trunk) commit log for more details.
dreachem 357d 16h /branches/
3933 [CAF] fix for handling statements with remote access on both sides

This fixes handling of statements where there is a coindexed reference on both
the LHS and RHS, of the form:

A(...)[p] = B(...)[q]
dreachem 357d 16h /branches/
3932 [CAF] Improvements for strided accesses + more

This commit adds several improvements to the handling of strided coarray
accesses. Currently handled accesses fall into 3 categories:

(1) non-strided (or contiguous data) accesses
e.g. a(1:10) = b( 1:10, 5)[p]
b(1:10)[p] = a(1:10, 2)

(2) simple strided accesses (subscripts are not strided)
e.g. a(1:3, 1:5) = b(1:3, 6:10)[p]
b(2, 1:5)[p] = a(1:5)

(3) strided accesses with strided subscripts
e.g. a(5, 1:4) = b(1:8:2)[p]
b(1:10:2,1:4:2)[p] = a(1:5, 4:7:2)

It should now handle more general strided transfers without requiring the
extra LCB copy. Also, subscript extents need not match, so long as the array
shapes of the left and right sides are conforming. These are all accepted and
translated without needing to introduce an intermediate LCB buffer.

b(1:10, 5) = a(1, 1:10)[2]
b(1, 2, 1:10:2) = a(1:5, 3)[2]
b(1:10:2, 1, 1:4) = a(1:5, 1:8;2, 1)[2]

Improvements are listed:

* runtime checks for contiguous accesses
* will convert strided access to contiguous access if the remote side is
contiguous while the local side is strided.
* compiler configure checks that gasnet-root path is valid
* compiler options can be specified for uhcaf just as with uhf90 (i.e. no need
to specify these options after -- )
* added --show-info option to uhcaf to get more informatoin about the default
compiler flags and the libraries linked in.

Contributor: Deepak
dreachem 357d 20h /branches/
3931 [CAF] new coarray prelowering phase + misc fixes

This commit reorganizes the coarray prelowering phase in the back-end. It also
adds a number of fixes to the CAF implementation.

Prelowering has been split into 2 distinct phases. The first phase will
identify places in which an intermediate communication buffer should be
introduced to hold data to write out to read into and generate assignment
statements for this. The second phase will traverse the tree and replace
coindexed references with GET/PUT runtime calls.

Additionally, ths following fixes/enhancements are added:

* adding reduction routines for 1d arrays in libcaf-extra
* distinguish scalar from 1D arrays in libcaf-extra broadcast routines
* fixed link order for MPI libs in uhcaf script
* setting the num_codim field of the dope vector associated with coarray dummy
variables

(patch level now at 3.0.6)

Contributor: Deepak
dreachem 357d 20h /branches/
3914 [CAF] fix bug in copying command-line arguments for gasnet_init

When allocating buffer for command-line arg, it did not allocate the extra
byte for the terminating NULL character.
dreachem 399d 23h /branches/
3913 support OpenUH build in Linux Mint distro

From Open64 commit log:
Open64 currently does not build from source on Linux Mint 12 due to this
distro using yet another layout for 64-bit libraries and objects.

The following change corrects the issue by adding another case to the
existing check.

Note: If trying to execute a prebuilt OpenUH in Linux Mint, it may require
manully copying crt1.o, crti.o, and crtn.o from /usr/lib/x86_64-linux-gnu to
/usr/lib (and possibly /usr/lib64).

Contributor: David Coakley (AMD)
dreachem 400d 04h /branches/
3912 [CAF] Fixes DV for allocatable scalar coarrays

This includes a fix for allocatable scalar coarrays ("coscalars"):

The dope vector for allocatable coscalars was not being initialized correctly
after recent change which did away with using the VAR_TMP_IDX for storing PE
bound information. The routine which generates the dope vector wasn't
correctly recognzing the existence of the cobounds in the declaration.

Also, for intrinsic functions which take in a coarray dope vector (e.g.
this_image), it was creating a temp dope vector for the actual argument. This
temp did not contain the cobounds information for coscalars. I modified this
so that it will instead use the original dope vector created for the coscalar.

Also:

When trying to determine the address on a remote image, we add the appropriate
offset only if it falls within the RMA heap. Coarrays that aren't in the heap
(e.g. save coarrays that have not been mapped into static coarray section of
heap) do not need an address adjustment so this check is added. Note,
accessing coarrays currently allocated outside the heap (e.g. save coarrays)
will not work unless using GASNet's everything segment configuration.

Contributor: Deepak
dreachem 400d 04h /branches/
3911 adds macro __OPENUH__ which indicates version of OpenUH that is used. dreachem 400d 04h /branches/
3895 [CAF] changing ENABLE_TRACES to ENABLE_LIBCAF_TRACES dreachem 423d 00h /branches/
3894 [CAF] correcting uhcaf.in error for GASNET_CONDUITS dreachem 423d 01h /branches/
3892 [CAF] fix typo which caused seg fault for strided reads dreachem 425d 22h /branches/
3891 Misc. fixes for allocatable components

Allow allocatable components in derived types.

Technically, components with allocatable attribute should be allowed in
derived types even though in the initial Fortran 95 standard it wasn't. This
fixes some issues so that it will work in our compiler.

(1) set alignment to Pointer_size for derived types with allocatable component
(2) fix bug in constructing IR when there is an allocatable array section in a
print statement

This commit also fixes some issues with defining and allocating coarray
components of derived types.

- allow allocatable coscalar component in derived type
- support allocation of allocatable coarray components
- remove unnecessary code for storing PE bounds info in temps on allocate

Moreover, this commit fixes parsing of coarray-spec, ensuring that they are
either "explicit shape" or "deferred shape", as per Fortran 2008 standard.

Contributor: Deepak
dreachem 425d 22h /branches/
3890 [CAF] various fixes for coscalars and libfortran bug

coscalar front-end fixes:
- allow local accesses on coscalars of derived type with pointer components
- fix size calculation for coscalar types

Also, in libfortran we were using the wrong function name for allocating data
in non-symmetric, remotely accessibly heap, resulting in a run-time error.
This was fixed.

Contributor: Deepak
dreachem 425d 22h /branches/
3889 [CAF] Fixes file name DST info generated in wgen

If compiling a source code not in the current directory with -g, it couldn't
be stepped through in a debugger. It turns out that the DWARF symbol table
(DST) information for the file name was not appending the relative path. This
prevents the relative path from being stripped by wgen before writing out the
DST information. This fix enables us to build all the runtime libraries (e.g.
libfortran) with debug info.

Also:
- adds --keep option for uhcaf script
- increases patch level, now at 3.0.3

Contributor: Deepak
dreachem 425d 22h /branches/
3885 [CAF] fix to allow use of uhcaf in makefiles

The uhcaf script will run the make command to determine the communication libs
from GASNet and ARMCI makefiles. If uhcaf is invoked from within another
makefile, the output of the nested makefile will include a printing of working
directory. To avoid this, we use --no-print-directory command in the script.

Also, there was a bug during coarray prelowering phase (undefined variable
ty1) that was fixed.

Contributor: Deepak
dreachem 435d 22h /branches/
3884 increasing patch level, now at 3.0.1 dreachem 436d 00h /branches/
3883 [CAF] Misc fixes for CAF and compiling without CAF support

Changes in this commit are:

- Before, it did not allow any coarray components for derived types. In
Fortran 2008, however, it is allowed so long as it is declared as
allocatable/pointer.

Also, we add a check in back-end translation that a co-subscripted access of
a coarray will have offset 0 for the base address. This looks to be
generally the case, and it is necessary to correctly handle accesses to
components of derived type coscalars.

- There were some places (in particular, parser handler for end critical) that
were missing ifdef _UH_COARRAYS.

- only install libcaf-extra if configured with --enable-coarrays

Contributor: Deepak
dreachem 436d 01h /branches/