1 2012-12-11 Nenad Vukicevic <nenad@intrepid.com>
3 * configure.ac: As libgupc is not built yet, make sure
4 that UPC compiler does not pre-include gcc-upc.h and
5 gcc-upc-lib.h while performing configuration checks.
6 * configure: Regenerate.
8 2012-11-27 Gary Funck <gary@intrepid.com>
10 * config/default/upc-crt-config.h: Remove check for
11 TARGET_ASM_NAMED_SECTION.
12 * smp/upc_config.h: Avoid multiple definition of __USE_GNU.
13 * smp/upc_lock.upc: Use local search (") quoting in #include.
14 * upc-crtstuff.c: Update copyright notice and fix minor typos.
16 2012-11-19 Nenad Vukicevic <nenad@intrepid.com>
18 * portals4/gupcr_mem.c (upc_memput): Add appropriate checks
19 for proper UPC data ordering. All requests in size above the
20 GUPCR_PORTALS_MAX_ORDERED_SIZE must be treated as strict.
24 2012-11-08 Nenad Vukicevic <nenad@intrepid.com>
26 * portals4/gupcr_portals.c (gupcr_get_datatype): Rename
27 to gupcr_get_atomic_datatype to name it correctly. Use
28 PTL_DOUBLE_COMPLEX atomic type as a container for 16 bytes
29 CSWAP operations. The MCS lock implementation requires CSWAP
30 on a pointer to shared which is 16 bytes in the struct
32 * portals4/gupcr_portals.h: Rename gupcr_get_datatype.
33 * portals4/gupcr_lock_sup.c (gupcr_lock_swap): Ditto.
34 (gupcr_lock_cswap): Ditto.
36 2012-11-08 Nenad Vukicevic <nenad@intrepid.com>
38 Prevent data tearing on accessing a pointer to shared in
39 the shared address space.
40 * portals4/gupcr_lock_sup.c (gupcr_lock_get): New.
41 * portals4/gupcr_lock_sup.h: Add extern def for gupcr_lock_get.
42 * portals4/gupcr_lock.upc (upc_unlock): Access data that can
43 be changed by other threads via Portals interface.
45 2012-11-08 Nenad Vukicevic <nenad@intrepid.com>
47 Replace the usage of spin locks to regular UPC locks in
48 the heap allocation implementation.
49 * Makefile.am (UPC_RUNTIME_SRC): Remove spin lock source
50 files. Add gupcr_lock.h.
51 * Makefile.in; Regenerate.
52 * portals4/gupcr_lock.h: New. External definitions for heap
54 * portals4/gupcr_lock.upc: Declare heap allocation locks.
55 (gupcr_lock_heap_sup_init): New. Initialize heap allocation locks.
56 * portals4/gupcr_alloc.upc: Remove spin lock declarations.
57 (gupcr_alloc_init): Remove spin lock initialization.
58 (gupcr_heap_init_info): Replace spin lock with UPC lock.
59 (gupcr_heap_region_alloc): Ditto.
60 (gupcr_heap_alloc): Ditto.
61 (gupcr_heap_free): Ditto.
62 * portals4/gupcr_lock_sup.h (gupcr_lock_heap_sup_init): Add external
64 * portals4/gupcr_lock_sup.c (gupcr_lock_init): Call the heap
65 allocation locks initialization.
66 * portals4/gupcr_slock.h: Delete.
67 * portals4/gupcr_slock.upc: Delete.
69 2012-11-08 Nenad Vukicevic <nenad@intrepid.com>
71 * testsuite/lib/libgupc.exp: Set the "-B" option at the right
72 place so we support command that runs the tests on multiple
73 targets. The previous version failed on building RPMs that
74 tested "unix,unix/-fstack-protector" targets.
76 2012-10-26 Nenad Vukicevic <nenad@intrepid.com>
78 Place shared initialization code into the .text
79 section instead of a separate .upc_init section.
80 * config/default/upc-crt-config.h (UPC_INIT_SECTION_BEGIN):
82 (UPC_INIT_SECTION_END): Delete.
83 * config/darwin/upc-crt-config.h: Ditto.
84 * upc-crtstuff.c: Remove declarations for .upc_init
87 2012-10-24 Nenad Vukicevic <nenad@intrepid.com>
89 * smp/upc_main.c (__upc_monitor_threads): Allow for MPIR
90 debug connection while waiting for threads. STAT requires
91 job launcher to periodically call MPIR_Breakpoint(). If
92 killpg() fails call exit() instead of abort to avoid recursion
95 2012-10-24 Nenad Vukicevic <nenad@intrepid.com>
97 * Makefile.am: Add more files for cleanup.
98 * Makefile.in: Regenerate.
99 * smp/upc_tick.c: Add proper casting for calculating
100 nanoseconds from sec/usec if gettimeofday() call was used.
102 2012-10-23 Nenad Vukicevic <nenad@intrepid.com>
103 Gary Funck <gary@intrepid.com>
105 Implement Portals4-based UPC runtime.
106 * configure.ac: Add a check for --with-upc-runtime=portals4.
107 Disable multilib when building libgupc for the portals4 based
108 UPC runtime. Portals4 does not currently support
109 32-bit targets. Implement additional UPC runtime configuration
110 switches, currently supported by the portals4 based UPC
111 runtime. Check if the user has requested that 'doxygen'
112 design documentation generation is enabled.
113 * configure.tgt: Add portals4 library linker switches if
114 the portals4 based runtime has been enabled via a configure option.
115 * Makefile.am: Add make rules to build the portals4 based runtime
116 when enabled via a configuration option.
117 * aclocal.m4: Re-generate.
118 * config.h.in: Re-generate.
119 * configure: Re-generate.
120 * Makefile.in: Re-generate.
121 * testsuite/Makefile.in: Re-generate.
122 * ax_prog_doxygen.m4: New. Doxygen support.
123 * dox-filter-config-h: New. Doxygen support.
124 * doxygen-include.am: New. Doxygen support.
125 * doxygen.sty.in: New. Doxygen support.
126 * header.tex.in: New. Doxygen support.
127 * portals4/doxygen.cfg.in: New. Doxygen support.
128 * collectives/gen-upc-coll-reduce.pl: Add additional pattern
129 substitutions when expanding collectives customized for use
131 * collectives/upc_coll_prefix_reduce.in: Ditto.
132 * collectives/upc_coll_reduce.in: Ditto.
133 * portals4/gcc-upc-lib.in: New.
134 * portals4/gupcr_access.c: New.
135 * portals4/gupcr_access.h: New.
136 * portals4/gupcr_addr.c: New.
137 * portals4/gupcr_alloc.h: New.
138 * portals4/gupcr_alloc.upc: New.
139 * portals4/gupcr_barrier.c: New.
140 * portals4/gupcr_barrier.h: New.
141 * portals4/gupcr_broadcast.c: New.
142 * portals4/gupcr_broadcast.h: New.
143 * portals4/gupcr_clock.c: New.
144 * portals4/gupcr_coll_broadcast.upc: New. Collectives support
145 that uses portals4 collective operations.
146 * portals4/gupcr_coll_init.upc: New. Ditto.
147 * portals4/gupcr_coll_reduce.in: New. Ditto.
148 * portals4/gupcr_coll_reduce.upc: New. Ditto.
149 * portals4/gupcr_coll_sup.c: New. Ditto.
150 * portals4/gupcr_coll_sup.h: New. Ditto.
151 * portals4/upc_coll.h: New. Ditto.
152 * portals4/gupcr_config.h: New.
153 * portals4/gupcr_defs.h: New.
154 * portals4/gupcr_env.c: New.
155 * portals4/gupcr_gmem.c: New.
156 * portals4/gupcr_gmem.h: New.
157 * portals4/gupcr_lib.h: New.
158 * portals4/gupcr_lock_sup.c: New.
159 * portals4/gupcr_lock_sup.h: New.
160 * portals4/gupcr_lock.upc: New.
161 * portals4/gupcr_main.c: New.
162 * portals4/gupcr_mem.c: New.
163 * portals4/gupcr_node.c: New.
164 * portals4/gupcr_node.h: New.
165 * portals4/gupcr_node_mem_mmap.c: New.
166 * portals4/gupcr_node_mem_posix.c: New.
167 * portals4/gupcr_pgm_info.c: New.
168 * portals4/gupcr_portals.c: New.
169 * portals4/gupcr_portals.h: New.
170 * portals4/gupcr_pts.h: New.
171 * portals4/gupcr_runtime.c: New.
172 * portals4/gupcr_runtime.h: New.
173 * portals4/gupcr_shutdown.c: New.
174 * portals4/gupcr_shutdown.h: New.
175 * portals4/gupcr_slock.h: New.
176 * portals4/gupcr_slock.upc: New.
177 * portals4/gupcr_sup.h: New.
178 * portals4/gupcr_sync.h: New.
179 * portals4/gupcr_tick.c: New.
180 * portals4/gupcr_utils.c: New.
181 * portals4/gupcr_utils.h: New.
182 * testsuite/lib/libgupc-dg.exp: Build 'yod' command line
183 when running tests with the portals4 based UPC runtime.
184 * testsuite/lib/libgupc.exp: Add 'yod' switches
185 when running tests with the portals4 based UPC runtime.
187 2012-10-16 Nenad Vukicevic <nenad@intrepid.com>
189 Add MCS lock implementation - fix for some 32 bit targets.
190 * Makefile.am (UPC_RUNTIME_SRC): Add upc_lock_sup.c file.
191 * Makefile.in: Regenerate.
192 * smp/upc_lock_sup.c: New. Provide 8 byte CSWAP for targets
193 that don't have it (PowerPC).
195 2012-10-15 Nenad Vukicevic <nenad@intrepid.com>
197 Add MCS lock implementation.
198 * configure.ac: Add max number of locks held by a thread.
199 * configure: Regenerate.
200 * Makefile.am (UPC_RUNTIME_SRC): Add lock related new files.
202 * Makefile.in: Regenerate.
203 * config.h.in: Regenerate.
204 * smp/upc_defs.h: Remove definition of upc_lock_t (new
205 implementation has more fields that are lock implementation
206 specific). Remove alloc lock from the upc_info_p as UPC lock
207 is used to protect alloc routines.
208 * smp/upc_lock.c: Delete.
209 * smp/upc_lock.h: Add prototype for lock init routine.
210 * smp/upc_lock_sup.h: MCS lock support routines for
211 signalling, swap, and compare/swap.
212 * smp/upc_main.c (__upc_per_thread_init): Call lock init.
213 (GUPCR_START): Remove init of alloc lock.
214 * smp/upc_lock.upc: New. New MCS lock implementation.
216 2012-10-03 Gary Funck <gary@intrepid.com>
218 * gen-inline-libgupc.pl: Add logic to check for //begin
219 directives with no matching end.
221 2012-10-02 nenad Vukicevic <nenad@intrepid.com>
223 * configure.ac: Check for backtrace additional libraries only
224 if backtrace is enabled.
225 * configure: Regenerate.
226 * smp/upc_backtrace.c (__upc_backtrace): Change default trace
227 file to 'backtrace.THREAD-ID'.
228 (__upc_backtrace_init): Install backtrace signal handler only
229 if backtrace is enabled for faults.
230 (__upc_fault_handler): Do not announce signals, just restore
231 signals, print backtrace, and return. This causes a signal to
232 be taken again, but this time monitor thread is informed.
233 (__upc_fatal_backtrace): No need to check env variable as signal
234 handler is conditionally installed.
236 2012-09-26 Gary Funck <gary@intrepid.com>
238 * collectives/upc_coll_sort.upc: Remove reference to
239 deprecated upc_local_alloc function.
240 * configure.ac: Revert - do not restore saved LIBS value
241 when checking for librt.
242 * configure: Re-generate.
243 * include/upc.h (upc_all_free, upc_all_freeg, upc_all_lock_free,
244 upc_all_lock_freeg): New. Define collective de-allocation functions.
245 (upc_local_allocg, upc_local_alloc): Add "deprecated" attribute.
246 * include/upc_tick.h: New. Define wall/clock timer library functions.
247 * Makefile.am (include/upc_tick.h, smp/upc_tick.c): New.
248 * Makefile.in: Re-generate.
249 * smp/upc_allocg.upc (upc_all_freeg): New.
250 * smp/upc_alloc.upc (upc_local_alloc): Delete.
252 * smp/upc_config.h: Include time-related system header files.
253 * smp/upc_libg.c (upc_all_lock_freeg): New.
254 * smp/upc_lib.h (upc_local_alloc): Delete prototype.
255 (upc_all_free, upc_all_lock_free): New prototype.
256 (upc_tick_t): New typedef.
257 (upc_ticks_now, upc_ticks_to_ns): New prototype.
258 * smp/upc_lock.c (upc_all_lock_free): New.
259 * smp/upc_tick.c: New.
261 2012-09-20 Nenad Vukicevic <nenad@intrepid.com>
263 * smp/upc_main.c (__upc_monitor_threads): Install
264 SIGTERM handler for the monitor thread. Use process
265 group (instead of PID) for killpg(). Announce child
266 KILL signal if upc global exit is not underway.
267 (__upc_sigterm_handler): New. Terminate the program on
268 SIGTERM to the monitor thread.
270 2012-09-04 Nenad Vukicevic <nenad@intrepid.com>
272 Move MPIR related variables/functions into a separate file.
273 * Makefile.am (UPC_RUNTIME_SRC): Add upc_debug.c
274 * Makefile.in: Regenerate.
275 * smp/upc_main.c: Move MPIR specific variables into upc_debug.c.
276 (MPIR_Breakpoint): Delete. Move into upc_debug.c.
277 (MPIR_i_am_starter): Delete. Move into upc_debug.c.
278 (MPIR_ignore_queues): Delete. Move into upc_debug.c.
279 (MPIR_force_to_main): Delete. Move into upc_debug.c.
280 * smp/upc_debug.c: New. All MPIR related variables and procedures
281 are in this file now.
283 2012-09-04 Nenad Vukicevic <nenad@intrepid.com>
285 Add backtrace logging into files.
286 * upc_backtrace.h (GUPCR_BACKTRACE_FILE_ENV): New. File prefix
287 for backtrace log file.
288 * upc_backtrace.c (__upc_backtrace): Save backtrace logs into the
289 file if environment variable UPC_BACKTRACEFILE is defined. Do not
290 show traces above upc_main.
291 (__upc_backtrace_thread_map): Rename to __upc_backtrace_monitor.
292 (__upc_backtrace_monitor): If logging into files is specified, monitor
293 thread sends backtrace signal to all UPC threads.
295 2012-08-30 Nenad Vukicevic <nenad@intrepid.com>
297 * upc_defs.h (upc_info_struct): Added host name and
298 flag for MPIR partial attach support.
299 * upc_main.c: Add MPIR_partial_attach_ok support.
300 (__upc_init): Set start flag for all threads based on
301 the debugging mode. Initialize hostname in the info
303 (__upc_run_this_thread): Wait on start flag if necessary.
304 (__upc_run_threads): Release threads after MPIR_Breakpoint().
305 Set host_name and executable_name in the info structure.
306 (__upc_print_help_and_exit): Removed help for unused flag
307 -fupc-pthreads-per-process-N.
309 2012-08-29 Nenad Vukicevic <nenad@intrepid.com>
311 * upc_backtrace.h (__upc_backtrace_restore_handlers): New.
313 * upc_backtrace.c (__upc_backtrace_restore_handlers): New.
314 Restore default signal handlers.
315 (__upc_backtrace_init): Install handlers for additional signals:
316 SIGABRT, SIGILL, SIGFPE, and SIGBUS.
317 (__upc_fault_handlers): Add handling of additional signals.
318 * upc_main.c (__upc_fatal): Restore default handlers before calling
321 2012-08-28 Nenad Vukicevic <nenad@intrepid.com>
323 * include/gcc-upc.h (upc_fence): Delete. Replaced with the
324 library specific definition in gcc-upc-lib.h
325 (__BERKELEY_UPC_RUNTIME__): Delete. Remove conditional compile
326 for upc_fence and upc_poll if compiled with the Berkeley
327 runtime as they are already provided in gcc-upc-lib.h.
328 * smp/gcc-upc-lib.in (upc_fence): Add.
329 * smp/upc_access.h (__upc_fence): Add prototype.
330 * smp/upc_access.c (__upc_fence): Add SMP upc_fence implementation.
332 2012-08-22 Nenad Vukicevic <nenad@intrepid.com>
334 * upc_defs.h: Additianl clean-up related to the new barrier
336 (upc_barrier_id_t): Delete.
337 (upc_barrier_info_t): Delete.
338 (upc_barrier_info_p): Delete.
339 (upc_info_t): Remove barrier from the upc info structure.
340 (__upc_barrier_id): New.
341 * upc_barrier.upc (__upc_barrier_id): Make it global.
342 * upc_backtrace.c (__upc_backtrace): Print barrier ID from the
345 2012-08-15 Nenad Vukicevic <nenad@intrepid.com>
347 Add tree based barrier implementation for SMP-based UPC run-time.
348 * configure.ac: Add configuration for the barrier tree fanout.
349 Add checking for __sync_fetch_and_add built-in function.
350 * configure: Re-generate.
351 * config.h.in: Re-generate.
352 * Makefile.am (AM_UPCFLAGS): Added -fno-strict-aliasing
353 to prevent alias warning when converting from pointer-to-shared
354 into its internal representation.
355 (UPC_RUNTIME_SRC): Remove upc_barrier.c.
356 (UPC_RUNTIME_SRC): Add upc_barrier.upc.
357 * Makefile.in: Re-generate.
358 * smp/gcc-upc-lib.in: Add inclusion of atomic/spin_until code when
359 compiling inside the target library. Replace lib_atomic_cas name
360 to lib_atomic to cover more then CAS atomic.
361 * smp/upc_barrier.c: Delete.
362 * smp/upc_barrier.upc: Add. A new tree based barrier implementation.
363 * smp/upc_config.h (INT_MIN): Make it available for inlined code
365 * smp/upc_main.c (__upc_per_thread_init): Add call to initialize
366 barrier implementation.
367 * smp/upc_sync.h (__upc_atomic_cas): Move from upc_sysdep.h.
368 (__upc_sync_fetch_and_add): New.
369 (__upc_spin_until): Move from upc_sysdep.h.
370 (__upc_num_cpus): Move from upc_sysdep.h.
371 * smp/upc_sysdep.h (__upc_atomic_cas): Delete.
372 (__upc_spin_until): Delete.
373 (__upc_num_cpus): Delete.
374 * smp/upc_sup.h (__upc_barrier_init): Add external definition.
375 (__upc_map_to_local): New. Map shared pointer into local address.
377 2012-07-31 Nenad Vukicevic <nenad@intrepid.com>
379 * configure.ac: Added help description for --with-bfd,
380 --with-bfd-include, and --with-bfd-lib.
381 * configure: Re-generate.
383 2012-07-31 Gary Funck <gary@intrepid.com>
385 * configure.ac: Remove extra white space at end-of-line.
386 * Makefile.am: Ditto.
387 * Makefile.in: Re-generate.
389 2012-07-31 Gary Funck <gary@intrepid.com>
391 * configure.ac: Improve diagnostics for options
392 that control UPC stack backtrace support.
393 * configure: Re-generate.
395 2012-07-31 Gary Funck <gary@intrepid.com>
397 * configure.ac: Shorten long lines. Improve the
398 consistency of first letter capitalization and
399 remove periods from all except AC_DEFINE's.
400 * acinclude.m4: Ditto.
401 * configure: Re-generate.
402 * config.h.in: Re-generate.
404 2012-07-14 Gary Funck <gary@intrepid.com>
406 * acinclude.m4 (LIBGUPC_CHECK_SYNC_BUILTINS): Remove
407 set-but-not-used variable in the check for builtin sync. ops.
408 * configure: Re-generate.
410 2012-07-03 Gary Funck <gary@intrepid.com>
412 * libgupc.texi: Include gpl_v3.texi instead of gpl.texi.
414 2012-06-09 Nenad Vukicevic <nenad@intrepid.com>
416 * Makefile.am: Removed indented spaces on if/endif.
418 2012-06-08 Nenad Vukicevic <nenad@intrepid.com>
420 Add backtrace support for UPC SMP run-time.
421 * configure.ac: Added UPC backtrace configuration
422 options (--enable-upc-backtrace, --enable-upc-backtrace-gdb,
423 --with-upc-backtrace-gdb, --enable-upc-backtrace-signal,
424 --with_upc-backtrace-signal). Fix the check for 'gettime' to
425 save/restore libraries on the check line.
426 * configure: Regenerate.
427 * config.h.in: Regenerate.
428 * Makefile.am (AM_CPPFLAGS): Add include path for bfd.h.
429 (UPC_RUNTIME_SRC): Add new source files for backtrace.
430 (UPC_BACKTRACE_SUP): New.
431 * Makefile.in: Regenerate.
432 * testsuite/Makefile.in: Regenerate.
433 * configure.tgt (LIBS): Added options for linking with libbfd,
434 libdl. Added -export-dynamic if -rdynamic option is supported.
435 * smp/upc_backtrace.h: New. Backtrace API.
436 * smp/upc_backtrace.c: New. Backtrace support functions.
437 * smp/upc_backtrace_sup.c: New. Source file/line search support
439 * smp/upc_main.c (__upc_fatal): Added call to backtrace.
440 (__upc_monitor_threads): Added code to continue monitoring threads
441 if the wait() was interrupted by a signal (e.g. backtrace request
443 * smp/upc_sysdep.h (__upc_create_temp_file): Add prototype.
444 * smp/upc_sysdep.c (__upc_create_temp_file): Made public.
446 2012-05-19 Gary Funck <gary@intrepid.com>
448 * smp/upc_main.c (__upc_per_thread_init):
449 Change the declaration of GUPCR_INIT_ARRAY_START
450 and GUPCR_INIT_ARRAY_END so that the optimizer does
451 not conclude that the per-thread initialization procedure table
452 has only a single element.
454 2012-05-04 Nenad Vukicevic <nenad@intrepid.com>
456 * configure.ac: Check for gupc driver only.
457 Use gupc driver instead of xgupc. Add -fno-upc-pre-include
458 on the command line to prevent inclusion of gcc-upc.h
459 * configure: Regenerate.
460 * Makefile.am (AM_CPPFLAGS): Add -isystem option to
461 allow compiler to find upc.h.
462 * Makefile.in: Regenerate.
463 * include/upc.h (upc_global_lock_alloc): Fix prototype.
464 (upc_all_lock_alloc): Fix prototype.
465 * include/upc_collective.h (upc_coll_init): Fix prototype.
466 * testsuite/lib/libgupc.exp: Added appropriate options to
467 compile the tests with gupc from the build tree.
469 2012-05-02 Nenad Vukicevic <nenad@intrepid.com>
471 Add memory fence to the low level lock support routines
472 that are called for multiple places in the run-time.
473 * smp/upc_sysdep.c (__upc_acquire_lock): Add a memory fence
474 once lock is acquired.
475 (__upc_try_acquire_lock): Add a memory fence is lock is
477 (__upc_release_lock): Add a memory fence before releasing
479 * smp/upc_lock.c (upc_lock): Remove memory fence.
480 (upc_lock_attempt): Ditto.
483 2012-04-30 Nenad Vukicevic <nenad@intrepid.com>
485 * testsuite/libgupc.upc/upc.exp: Use '-fupc-threads'
486 option instead of '-n' as the new GUPC driver does not
489 2012-04-16 Nenad Vukicevic <nenad@intrepid.com>
491 * smp/upc_lock.c (upc_lock): Adding a fence as per the
492 language specification. This also forces the processor to
493 discard all speculaive memory fetches.
494 (upc_lock_attempt): Ditto.
497 2012-04-13 Nenad Vukicevic <nenad@intrepid.com>
499 * smp/upc_sync.h (GUPCR_WRITE_FENCE): Change write fence
500 for PPC processors to use light weight sync instruction.
501 * smp/upc_sysdep.c (__upc_atomic_get_bit): Introduce a read barrier
502 to force processor to discard all speculative memory fetches.
504 2012-03-26 Nenad Vukicevic <nenad@intrepid.com>
506 * testsuite/lib/libgupc.exp: Added fortran-modules.exp
507 for explicit load from the gcc testsuite directory. It is
508 a required file for gcc-dg.exp.
510 2012-02-02 Nenad Vukicevic <nenad@intrepid.com>
512 * Makefile.am: Prevent install from adding suffix to the
513 link script (gupc.ld).
514 (toolexeclib_SCRIPTS) remove upc link script.
515 (nodist_toolexeclib_HEADERS) add upc link script.
516 * Makefile: Regenerate.
517 * configure: Regenerate.
519 2012-01-24 Nenad Vukicevic <nenad@intrepid.com>
521 * smp/upc_pgm_info.c (__upc_validate_pgm_info): Fix the error
522 where the very first entry on the compiled thread info list is
525 2012-01-09 Gary Funck <gary@intrepid.com>
527 * smp/upc_pgm_info.c (__upc_validate_pgm_info): Ignore intervening
528 null bytes in the UPC program information section, to ensure that
529 all configuration information strings are processed. Allow
530 static THREADS compilations to be mixed with dynamic THREADS
531 compilations as long as the static THREADS values all match.
533 2011-12-19 Nenad Vukicevic <nenad@intrepid.com>
535 Improve handling of shared pointer vaddr field. Make sure
536 that upc_addrfield() always returns an offset of the shared variable
537 from the beginning of the shared section.
538 * smp/upc_pts.h (GUPCR_PTS_VADDR): Macro definition returns the
539 offset of the shared variable in the shared section.
540 (GUPCR_PTS_SET_VADDR): Macro definition accepts the offset of the
541 shared variable in the shared section and sets the value of the
542 vaddr: offset for packed pts rep, address for struct pts rep.
543 * smp/upc_main.c (__upc_init): Adjust the argument for setting of
544 pointer-to-shared vaddr field.
545 * smp/upc_alloc.upc: Adjust the argument for building a
546 pointer-to-shared to the offset of the shared variable in the
549 2011-12-17 Nenad Vukicevic <nenad@intrepid.com>
551 * configure.ac: Remove erroneous check for enable_shared. Build
552 libgupc only as a static library as shared data sections from
553 all the UPC compilations must be combined into a single
555 * configure.tgt: Always include the necessary libraries required by
556 libgupc on the command line. This is necessary as we don't build
557 libgupc as a dynamic link library.
558 * configure: Re-generate.
560 2011-11-19 Gary Funck <gary@intrepid.com>
562 * smp/upc_sync.h (GUPCR_WRITE_FENCE, GUPCR_READ_FENCE):
563 For powerpc, also check __PPC__ pre-processor definition,
564 as 'PPC' is apparently not defined on 64-bit PPC targets.
565 * smp/upc_sysdep.c (__upc_atomic_cas): Implement as external
566 procedure only if builtin compare-and-swap is unavailable.
567 * smp/upc_sysdep.h (__upc_atomic_cas): Ditto.
569 2011-11-09 Nenad Vukicevic <nenad@intrepid.com>
571 * config/default/upc-crtstuff.mak (ALL_CRT_CFLAGS): Remove
572 $(INCLUDES) as it might contain relative include paths that
573 are not correct for current build directory.
574 (GCC_SRCDIR_INC): Rename from GCC_SRCDIR_CONF_INC. Added necessary
575 include paths to build in the current libgupc build directory.
577 2011-10-27 Nenad Vukicevic <nenad@intrepid.com>
579 * smp/upc_sup.h (__upc_sptr_to_addr): Fixed the warning where
580 'void *' type was used in arithmetic.
581 * smp/upc_mem.h (__upc_memget): Ditto.
582 * (__upc_memput): Ditto.
584 2011-10-27 Nenad Vukicevic <nenad@intrepid.com>
586 * upc-crtstuff.c: Remove unnecessary includes that caused
587 multiple defined warnings.
589 2011-10-26 Gary Funck <gary@intrepid.com>
591 Rename "GCC/UPC" to "GNU UPC", "UPC" to "GUPC", and
592 "libupc" to "libgupc".
593 * top-level/libgupc: rename from libupc.
594 * configure.ac: Change "GCC UPC" references to "GNU UPC".
595 Change "libupc" references to "libgupc". Change "xupc" references
596 to "xgupc". Change "upc-cmd" references to "gupc".
597 Change "gen-gccupc-ld-script.pl" references to "gen-upc-ld-script.pl".
598 Change "libupc.spec" references to "libgupc.spec".
599 * configure: Re-generate.
600 * Makefile.am: Change "libupc" references to "libgupc".
601 * Makefile.in: Re-generate.
602 * config.h.in: Adjust for rename of libupc to libgupc.
603 * configure.tgt: Ditto.
604 * acinclude.m4: Ditto.
605 * gen-inline-libgupc.pl: Re-name from gen-gccupc-inline-lib.pl
606 Change "GCC/UPC" to "GUPC".
607 * gen-upc-ld-script.pl: Re-name from gen-gccupc-ld-script.pl.
608 * libgupc.texi: Re-name from libupc.texi.
609 * libgupc.spec.in: Re-name from libupc.spec.in.
610 * smp/upc_pgm_info.c (__upc_validate_pgm_info): Change "GCC/UPC"
611 references to "GUPC".
612 * smp/upc_main.c (__upc_run_threads): Ditto.
613 * smp/upc_gasp.c: Ditto.
614 * smp/upc_sysdep.h: Ditto.
615 * testsuite/lib/libgupc-dg.exp: Re-name form libupc-dg.exp.
616 * testsuite/lib/libgupc.exp: Re-name from libupc.a.
617 * testsuite/libgupc.upc: Re-name from libupc.upc.
619 2011-10-18 Nenad Vukicevic <nenad@intrepid.com>
621 Fix support for large file support on 32-bit machines.
623 * smp/upc_config.h: Move inclusion of 'config.h' to the top
624 of the include list. This allows all system include files
625 to see definition of _FILE_OFFSET_BITS=64 that enables large
628 2011-10-02 Gary Funck <gary@intrepid.com>
630 Move the collectives library sources into their own directory
631 and add support for additional runtime implementation models.
632 * collectives/gen-upc-coll-reduce.pl: Moved from 'smp' directory.
633 * collectives/upc_coll_broadcast.upc: Ditto.
634 * collectives/upc_coll_err.upc: Ditto.
635 * collectives/upc_coll_exchange.upc: Ditto.
636 * collectives/upc_coll_gather_all.upc: Ditto.
637 * collectives/upc_coll_gather.upc: Ditto.
638 * collectives/upc_coll.h: Ditto.
639 * collectives/upc_coll_init.upc: Ditto.
640 * collectives/upc_coll_permute.upc: Ditto.
641 * collectives/upc_coll_prefix_reduce.in: Ditto.
642 * collectives/upc_coll_prefix_reduce.upc: Ditto.
643 * collectives/upc_coll_readme.txt: Ditto.
644 * collectives/upc_coll_reduce.in: Ditto.
645 * collectives/upc_coll_reduce.upc: Ditto.
646 * collectives/upc_coll_scatter.upc: Ditto.
647 * collectives/upc_coll_sort.upc: Ditto.
648 * smp/gcc-upc-lib.in: Moved from 'include' directory.
649 * gen-gccupc-inline-lib.pl: Moved from 'smp' directory.
650 * gen-gccupc-ld-script.pl: Ditto.
651 * configure.ac: Implement support for additional runtime
652 models. (Currently, only 'smp' is supported.)
653 Build the collectives library from sources in the
654 collectives directory.
655 * Makefile.am: Likewise.
656 * configure: Re-generate.
657 * config.h.in: Re-generate.
658 * Makefile.in: Re-generate.
660 2011-09-30 Gary Funck <gary@intrepid.com>
662 Generalize collectives library to support indefinite block sizes.
663 * smp/upc_coll_prefix_reduce.in: If 'blk_size' is zero, then set it
665 * smp/upc_coll_reduce.in: Ditto.
666 * smp/upc_coll_prefix_reduce.upc: Re-generate.
667 * smp/upc_coll_reduce.upc: Re-generate.
669 2011-09-19 Gary Funck <gary@intrepid.com>
671 * libupc/smp/upc_access.c (__getstf2, __getsxf2):
672 Define temporary as "long double" rather than "double" to avoid
674 * testsuite/libupc.upc/intrepid/test29.upc: Improve the test of
675 "long double" by adding checks that required accuracy
676 exceeds the accuracy of "double".
678 2011-09-02 Gary Funck <gary@intrepid.com>
680 Align UPC pointers-to-shared, only if the target enforces
682 * configure.ac: Derive GUPCR_PTS_ALIGN from __UPC_PTS_ALIGN__,
683 if present. Define GUPCR_PTS_ALIGN as a config.h variable.
684 * smp/upc_pts.h (GUPCR_PTS_ALIGN): Use only if defined.
685 * config.h.in: Re-generate.
686 * configure: Re-generate.
688 2011-08-23 Nenad Vukicevic <nenad@intrepid.com>
690 * configure.ac: Enable detection of large file support on
692 * configure: Re-generate.
693 * config.h.in: Added define for large file support on 32-bit
695 * smp/upc_config.h: Limit number of VM pages to the number
696 of configured VADDR bits.
697 * smp/upc_sup.h: Prototype change.
698 * smp/upc_vm.c (__upc_vm_alloc): Return an error if no
699 more virtual pages can be allocated.
700 (__upc_vm_alloc): Abort if initial number of VM pages cannot
702 (__upc_vm_get_cur_page_alloc): Check for error before NUMA
703 memory region mapping.
704 * smp/upc_alloc.upc (__upc_global_heap_alloc): Return NULL pointer
705 if VM pages cannot be allocated.
706 (__upc_local_alloc): Return NULL pointer if memory is not available.
708 2011-08-16 Gary Funck <gary@intrepid.com>
710 * smp/upc_barrier.c (__upc_notify, __upc_wait):
711 Improve error messages.
713 2011-08-10 Gary Funck <gary@intrepid.com>
715 Define UPCFLAGS so that it is available in the Makefile,
716 and assign CFLAGS as its default value.
718 * configure.ac (UPCFLAGS): Default to CFLAGS if not set.
719 (UPCFLAGS): Make it an AC_SUBST() so that it can
720 be referenced in the Makefile.
721 * Makefile.am (AM_UPCFLAGS): Make sure that it is update
722 the same as AM_CFLAGS.
723 * configure, Makefile.in: Re-generate.
725 2011-06-06 Nenad Vukicevic <nenad@intrepid.com>
727 * smp/upc_config.h: Change default scheduling policy.
728 Allow the kernel to schedule UPC threads on its own.
730 2011-05-17 Gary Funck <gary@intrepid.com>
732 * configure.ac (GUPCR_PTS_VADDR_FIELD,
733 Delete unused definitions.
734 configure: Regenerate.
736 * smp/upc_pts.h (GUPCR_PTS_THREAD_FIELD,
737 GUPCR_PTS_PHASE_FIELD): Delete unused definitions
740 * config.h.in (GUPCR_PTS_THREAD_FIELD,
741 GUPCR_PTS_PHASE_FIELD): Delete unused definitions
744 * upc-crtstuff.c: Delete include of "upc-conf.h".
746 2011-05-03 Gary Funck <gary@intrepid.com>
748 * smp/upc_alloc.upc (__upc_global_heap_alloc,
749 upc_free): Remove extraneous FIXME/TODO comments.
751 2011-05-01 Gary Funck <gary@intrepid.com>
753 * configure.ac (upc_crtstuff_mak): New AC_SUBST variable.
754 * configure.tgt (upc_crtstuff_mak): Find upc-crtstuff.mak
756 * Makefile.am (upc_crtstuff_mak): Set make variable to value
757 of configured AC_SUBST value. This eliminates an automake
758 error caused by a nested 'if' statement.
759 * configure, Makefile.in, testsuite/Makefile.in: Regenerate.
761 2011-04-13 Gary Funck <gary@intrepid.com>
763 * testsuite/lib/libupc.exp (ALWAYS_CFLAGS):
764 Remove -lupc from required default switches.
765 The appropriate library is selected by the
768 2011-03-22 Gary Funck <gary@intrepid.com>
770 * configure.tgt: Move linker switches into libupc.spec.
772 2011-03-20 Gary Funck <gary@intrepid.com>
774 Place error message strings directly into the calls to
775 __upc_fatal(), rather than listing them separately
776 as #define's. The intent of this change is to make
777 it easier to internationalize the message text
778 using standard tools.
780 * include/gcc-upc-lib.in: Remove include of lib_config_msgs
783 * smp/upc_config.h: Remove #define's used to provide named
784 references to error messages.
786 * smp/upc_lock.c, smp/upc_numa.c, smp/upc_access.c,
787 smp/upc_vm.c, smp/upc_main.c, smp/upc_alloc.upc,
788 smp/upc_sysdep.c, smp/upc_affinity.c, smp/upc_addr.c,
789 smp/upc_mem.h, smp/upc_barrier.c: Replace named references
790 with actual error message text strings.
792 2011-03-20 Gary Funck <gary@intrepid.com>
794 Move UPC start files, end files, and linker specs.
795 into libupc. This reduces the impact on common GCC
796 configuration files, and ensures that these UPC-specific
797 components are only built when the UPC language dialect is built.
799 * upc-crtstuff.c: New file. Moved from gcc/upc/upc-crtstuff.c.
801 * config/darwin/upc-crt-config.h: New file. Move defines for
802 UPC-related section begins/ends from gcc/config/darwin.h to here.
804 * config/default/upc-crt-config.h: New file. Move defines for
805 UPC-related section begins/ends from gcc/config/upc-conf.h to here.
807 * config/default/upc-crtstuff.mak: New file. Default makefile fragment for
808 building the upc-crtbegin and upc-crtend object files.
809 This logic was moved from libgcc/Makefile.in to here.
811 * config.h.in: Regenerate with autoheader. Rename HAVE_GUM_DEBUG
812 to GUPCR_HAVE_GUM_DEBUG. Add define for HAVE_UPC_LINK_SCRIPT.
814 * configure.ac, configure: Include new configure.tgt script
815 towards the end of the logic that configures the smp runtime.
816 Define substitutions for 'config_path', 'XCFLAGS',
817 'XLDFLAGS', 'link_upc_spec', 'upc_crtbegin_spec',
818 'upc_crtend_spec', 'upc_crtstuff_objs'. Add LIBUPC_CRTSTUFF
819 automake conditional. Fix copyright date in AM_TOP() comment.
820 Define upc-crtbegin.spec libupc.spec upc-crtend.spec as
821 autoconf generated config. files. Regenerate 'configure'.
823 * configure.tgt: New. Target-specific configuration logic.
824 Defines 'config_path', 'upc_crtstuff', 'upc_crtbegin_spec',
825 'upc_crtend_spec', 'upc_crtstuff_objs' variables; these are used
826 to control the build of the UPC-related begin/end files
827 and associated target-specific compiler specification files.
829 * libupc.spec.in, upc-crtbegin.spec.in, upc-crtend.spec.in: New.
830 Define target-specific compiler specifications for linking
831 and for inclusion of UPC-related start/end object files
832 when a UPC program is linked. These files are used
833 to create resulting .spec files that are included via
834 GCC's link spec. when a UPC program is linked.
836 * Makefile.am: Add rules to build and install upc-crtbegin.spec,
837 libupc.spec, and upc-crtend.spec from there .in files.
838 Add rules to build the UPC-specific start/end files if the
839 automake conditional LIBUPC_CRTSTUFF is enabled.
840 Fix references to make variables $(UPC_COLL_PREFIX_REDUCE_UPC)
841 and $(UPC_COLL_REDUCE_UPC) in MAINTAINER_MODE block.
843 * Makefile.in, testsuite/Makefile.in: Regenerate with automake.
845 * smp/Make-defs, smp/Make-deps, smp/Make-rules: Remove.
846 These Makefile fragments have not been used since libupc
847 was re-worked to use automake (when the gupc branch
848 was first checked in).
850 * smp/upc_config.h: Move the defintions of GUPCR_INIT_ARRAY_START
851 and GUPCR_INIT_ARRAY_END from smp/upc_main.c to here.
853 * smp/upc_main.c: Rename HAVE_GUM_DEBUG to GUPCR_HAVE_GUM_DEBUG.
854 Move the defintions of GUPCR_INIT_ARRAY_START and
855 GUPCR_INIT_ARRAY_END to smp/upc_config.h.
857 2011-02-22 Gary Funck <gary@intrepid.com>
859 * include/gcc-upc.h (barrier, barrier_notify, barrier_wait,
860 forall, fence): Remove #define's that renamed these deprecated
861 UPC keywords into their equivalents in the current UPC
862 language specification.
864 2011-02-08 Gary Funck <gary@intrepid.com>
866 * acinclude.m4, configure.ac, include/gasp.h,
867 include/gasp_upc.h, include/gcc-upc.h, include/gcc-upc-lib.in,
868 include/pupc.h, include/upc_collective.h, include/upc.h,
869 include/upc_relaxed.h, include/upc_strict.h, libupc.texi,
870 smp/upc_access.c, smp/upc_accessg.c, smp/upc_access.h,
871 smp/upc_addr.c, smp/upc_affinity.c, smp/upc_affinity.h,
872 smp/upc_affinity_stub.c, smp/upc_allocg.upc,
873 smp/upc_alloc.upc, smp/upc_barrier.c, smp/upc_config.h,
874 smp/upc_debug.h, smp/upc_defs.h, smp/upc_gasp.c, smp/upc_gum.c,
875 smp/upc_libg.c, smp/upc_lib.h, smp/upc_lock.c, smp/upc_main.c,
876 smp/upc_mem.c, smp/upc_mem.h, smp/upc_numa.c, smp/upc_numa.h,
877 smp/upc_numa_stub.c, smp/upc_pgm_info.c, smp/upc_pts.h,
878 smp/upc_pupc.c, smp/upc_pupc.h, smp/upc_sup.h, smp/upc_sync.h,
879 smp/upc_sysdep.c, smp/upc_sysdep.h, smp/upc_vm.c:
880 Update copyright notices.
882 2010-10-18 Gary Funck <gary@intrepid.com>
884 * smp/upc_alloc.upc: upc_alloc.upc: remove pointer arithmetic on
885 (shared void *) types.
887 Now that GCC/UPC prohibits arithmetic on "(shared void *)" types,
888 re-work the logic in upc_alloc.upc to avoid operating directly on
889 "(shared void *)" type.
891 2010-10-16 Gary Funck <gary@intrepid.com>
893 * smp/upc_main.c: Fix comment format.
895 2010-10-16 Gary Funck <gary@intrepid.com>
897 * smp/: upc_access.c, upc_access.h, upc_accessg.c: Implement fixes
898 for SGI/IRIX/MIPS port.
900 The gcc/Makefile.in rules for install-plugin had to be re-written to
901 break up a long list of header files that exceeded the command line
902 limitation imposed by Irix.
904 Access functions for TFmode types had to be implemented.
905 Apparently, this is the mode used for the SGI/MIPS port to represent
908 See also: gcc/Makefile.in libupc/smp/upc_access.c
909 libupc/smp/upc_access.h libupc/smp/upc_accessg.c
911 2010-10-16 Nenad Vukicevic <nenad@intrepid.com>
913 * include/gcc-upc.h, smp/upc_main.c: Fix rand() implementation for
916 For the pthreads implementation we keep a per-thread random seed
917 number. This way, calls to rand() function will return the same
918 value on each thread.
920 rand() and srand() functions are redefined as __upc_random and
923 2010-10-10 Gary Funck <gary@intrepid.com>
925 * include/upc_collective.h, smp/gen-upc-coll-reduce.pl,
926 smp/upc_coll_prefix_reduce.upc, smp/upc_coll_reduce.upc:
927 Implement collectives on "long double" objects.
929 See also: libupc/include/upc_collective.h
930 libupc/smp/gen-upc-coll-reduce.pl
931 libupc/smp/upc_coll_prefix_reduce.upc libupc/smp/upc_coll_reduce.upc
933 2010-10-09 Gary Funck <gary@intrepid.com>
935 * smp/: upc_access.c, upc_access.h, upc_accessg.c: Implement shared
936 access to "long float" data type.
938 See also: libupc/smp/upc_access.c libupc/smp/upc_access.h
939 libupc/smp/upc_accessg.c
941 2010-09-24 Gary Funck <gary@intrepid.com>
943 * smp/upc_main.c: Fix bug: Failure to initialize per-thread
944 static variables that refer to shared addresses.
946 The shared data initialization routine created by the compiler needs
947 to be called on each threead, because in some cases it will
948 initialize per thread data. At the moment, the compiler does not
949 generate code that will differentiate between initialization code
950 that should only occur on thread 0, so some additional work may get
951 done. In the future, that aspect of initialization will be
954 2010-09-22 Gary Funck <gary@intrepid.com>
956 * include/gcc-upc-lib.in, include/upc.h, smp/upc_main.c:
957 Fix bug: Nested upc_forall() semantics are not implemented
959 The checkforall test in the Berkeley harness test suite indicated
960 that GCC/UPC was not properly implementing nested upc_forall
961 semantics. Nested upc_forall statements (both statically or
962 dynamically nested) must implement their affinity clause as if it
963 were "continue"; thus all steps in the loop must execute without
964 regard for affinity. To implement these semantics a global depth
965 counter, __upc_forall_depth, is maintained by the generated code
966 that implements upc_forall.
968 See also: gcc/c-parser.c gcc/c-tree.h gcc/stub-upc.c
969 gcc/upc/upc-act.c gcc/upc/upc-act.h libupc/include/gcc-upc-lib.in
970 libupc/include/upc.h libupc/smp/upc_main.c
972 2010-09-18 Gary Funck <gary@intrepid.com>
974 * Makefile.in, config.h.in, configure, configure.ac, include/upc.h,
975 smp/Make-defs, smp/upc_accessg.c, smp/upc_allocg.upc,
976 smp/upc_defs.h, smp/upc_libg.c, smp/upc_main.c, smp/upc_sup.h:
977 Implement -fupc-debug switch.
979 2010-02-28 Gary Funck <gary@intrepid.com>
981 Initial implementation and checkin.