whizard is hosted by Hepforge, IPPP Durham
close Warning: Error with navigation contributor "BrowserModule"

Opened 15 years ago

Closed 13 years ago

Last modified 8 years ago

#116 closed task (invalid)

Make WHIZARD thread-safe

Reported by: kilian Owned by: kilian
Priority: P3 Milestone: v2.6.0
Component: core Version: 2.0.0beta
Severity: major Keywords:
Cc:

Description

For some models of parallel computing, the program must be thread-safe. This implies a compiler that supports this, and the absence of static data, i.e., side-effects in memory.

A thread-safe WHIZARD library could be linked (via C bindings, see #60) to any external program and executed in parallel as a black box.

W2 is not far from being thread-safe, but there are a few obstacles:

  • Static global data: model_list, process_store, syntax tables etc. It should not be difficult to make these local data, it just requires a few more arguments to some (many?) procedures.
  • The error-handling model. Currently, various data are saved in the diagnostics module. Since proper exception handling is not an option, we could either dispose of those data completely (losing error counting etc.), or switch to a true object-oriented paradigm, where derived types are extensions of some basic type that implements a pointer to some diagnostics data block, and more. Maybe there are other possibilities. For instance, the diagnostics module could maintain a direct-access file for storing its data (is this thread-safe?).
  • Common blocks: the Les Houches Accord (and HEPEVT) have them. We could transfer them to a separate library that is non-thread-safe and linked only upon request. It is likely that only the file format will be actually used.
  • It is not clear whether HEPMC is thread-safe.

Change History (6)

comment:1 Changed 15 years ago by kilian

Just checked: (direct-access) external files are thread-safe, at least the NAG compiler allows them when the -thread_safe option is given.

comment:2 Changed 15 years ago by kilian

This includes revamping the error-diagnostics system. We may think of connecting it more closely to the lexer, so the user gets debugging info with any error message.

comment:3 Changed 14 years ago by Juergen Reuter

Milestone: v2.1.0v2.1.1

comment:4 Changed 13 years ago by Juergen Reuter

Resolution: invalid
Status: newclosed

comment:5 Changed 8 years ago by Juergen Reuter

Milestone: v2.4.0v2.5.0

Milestone renamed

comment:6 Changed 8 years ago by Juergen Reuter

Milestone: v2.5.0v2.6.0

Milestone renamed

Note: See TracTickets for help on using tickets.