Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 62 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,62 @@
## Welcome to GitHub Pages

You can use the [editor on GitHub](https://github.com/Post-Peta-Crest/sample/edit/master/README.md) to maintain and preview the content for your website in Markdown files.

Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files.

### Markdown

Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for

```markdown
Syntax highlighted code block

# Header 1
## Header 2
### Header 3

- Bulleted
- List

1. Numbered
2. List

**Bold** and _Italic_ and `Code` text

[Link](url) and ![Image](src)
```

For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/).

### Jekyll Themes

Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/Post-Peta-Crest/sample/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file.

### Support or Contact

Having trouble with Pages? Check out our [documentation](https://help.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out.
# Process-in-Process (PiP)

## What if PiP

Process-in-Process, or PiP in short, is a library which provides you
another parallel execution mode. Now, multi-core and many-core CPUs
are getting quite common, and people are writing and running parallel
programs on those CPUs. There are two widely used parallel execution
models; multi-process and multi-thread. The typical multi-process
model can be found in MPI programs. And the typical multi-thread model
can be found in OpenMP programs.

A parallel program consists of several (or many) execution entities,
processes or threads, and most importantly, they communicate and/or
interact with the others. In the multi-process model, each process has
itw own virtual address space and it is not allowed to access the data
owned by the other process. In the multi-thread model, threads share
the same virtual address space, but all statically allocated variables
are shared among the thread.

In the multi-process model, nothing is shared. This makes
inter-process communication hard. In the multi-thread model, everything
is shared. The shared variables and data must be protected to avoid
race conditions. The pros of a model can be the cons of the other
model. There is no race condition happens on variables and data since
each process has its own variable and data in the multi-process
model. Threads can easily interact and communicate woth the thread,
since they share the same virtual address space.

There is the 3rd execution mode, which has no name yet, to
take the best of the two worlds; multi-process and multi-thread. In
this model, variables are privatized so that each task has its own
variable set and tasks share the same virtual address space. Here the
execution entity in this model is called *task* since it does not
follow the definitions of process and thread. Tasks can interact and
communicate with others easily and race conditions can only happens on
the *explicitly* shared variables and/or data. Since tasks run in the
same virtual address space, any data owned by the tasks can be
accessed if the addresses of the variables and/or data are known. In
this way, the cons of the conventional models trun into the pros.

This ides is not new. However, the implementations of the 3rd
execution model requires dedicated OS kernel or specialize language
processing system consisting of compilers, linker, runtime systems,
and debugger. None of them is not easy to try and deploy. PiP is
the first implementation as a user-level library, no need of dedicated
OS kernel nor language system. Thus, PiP is very portable and easy to
try and deploy.

## Do you want to try PiP ?

We are working to make the PiP library open right now. It will be
available at https://github.com/RIKEN-SysSoft.

## Reference

_Process-in-Process: Techniques for Practical Address-Space Sharing_,
Atsushi Hori, Min Si, Balazs Gerofi, Masamichi Takagi, Jai Dayal,
Pavan Balaji and Yutaka Ishikawa. ACM HPDC 2018
The 27th International Symposium on High-Performance Parallel and
Distributed Computing Tempe, Arizona, USA - June 11-15, 2018. (winner
of the Karsten Schwan Best Paper Award)