Welcome
» The NERW Concurrency Model
At the heart of any concurrent system is the idea that several "things" executing at the same time. In the NERW model, the Processing Element (pel) abstracts this idea of execution. A pel executes on a physical computer. The pel does not abstract the computer itself, but instead the thread, task, application process, container, or whatever unit of execution in the computer. In other words, the pel represents the logical aspect of the execution , while the locality aspect of it, the computer, is represented by another NERW element, the Computer Element (or cel).
Concurrency happens when there is more than one pel running at the same time. The pels can execute the same code (as in parallel loops), or different code (as in a concurrent application).
To execute, a pel must reside somewhere. This "somewhere" is represented by the computer element (cel). In general, the CHAOS runtime takes care of assigning an executing pel to a hosting cel. However, the NERW model allows the programmer to specify this assignment at compile time, and even the user to customize this assignment at run time. For example, a pel drawing a circle should be assigned to a cel with access to a graphical display so that the tendered circle can be viewed, while a computational heavy pel should be best assigned to a cel with floating-point capability.
To execute, a pel may need to get the input data from another pel. After execution, it may need to give its resulting data to another pel. This is accomplished via the memory element (mel). In the first case, a pel reads from a mel, and in the second case, writes to a mel. If a read is not possible (due to mel empty or locked), or a write is not possible (due to mel buffer full or locked), a pel has to wait. Thus a pel should only access a mel only at the last moment before need. Another strategy is for a pel to fork a delegate pel to do the mel waiting for it while it continues with other meaningful work.
Pel Implementations
See Pel in NERWous C.
Previous Next Top
At the heart of any concurrent system is the idea that several "things" executing at the same time. In the NERW model, the Processing Element (pel) abstracts this idea of execution. A pel executes on a physical computer. The pel does not abstract the computer itself, but instead the thread, task, application process, container, or whatever unit of execution in the computer. In other words, the pel represents the logical aspect of the execution , while the locality aspect of it, the computer, is represented by another NERW element, the Computer Element (or cel).
Concurrency happens when there is more than one pel running at the same time. The pels can execute the same code (as in parallel loops), or different code (as in a concurrent application).
To execute, a pel must reside somewhere. This "somewhere" is represented by the computer element (cel). In general, the CHAOS runtime takes care of assigning an executing pel to a hosting cel. However, the NERW model allows the programmer to specify this assignment at compile time, and even the user to customize this assignment at run time. For example, a pel drawing a circle should be assigned to a cel with access to a graphical display so that the tendered circle can be viewed, while a computational heavy pel should be best assigned to a cel with floating-point capability.
To execute, a pel may need to get the input data from another pel. After execution, it may need to give its resulting data to another pel. This is accomplished via the memory element (mel). In the first case, a pel reads from a mel, and in the second case, writes to a mel. If a read is not possible (due to mel empty or locked), or a write is not possible (due to mel buffer full or locked), a pel has to wait. Thus a pel should only access a mel only at the last moment before need. Another strategy is for a pel to fork a delegate pel to do the mel waiting for it while it continues with other meaningful work.
Pel Implementations
See Pel in NERWous C.
Previous Next Top