... | @@ -7,14 +7,11 @@ Each node in the graph is a component, while arrow indicate the dependencies of |
... | @@ -7,14 +7,11 @@ Each node in the graph is a component, while arrow indicate the dependencies of |
|
|
|
|
|
## Introduction
|
|
## Introduction
|
|
|
|
|
|
In any good software project, beforehand someone must define the design of the program/library, or its modularity at the highest level. The modularity of the software is the capability of the software to have replaceable components, or more in general the capabilities of a software to be changed without affecting other part of the programs. This is a fundamental requirement to have a flexible and maintainable software.
|
|
In any good software project, beforehand we must define the design of the program/library, or its modularity at the highest level. The modularity of the software is the capability of the software to have replaceable components, or more in general the capabilities of a software to be changed without affecting other part of the programs. This is a fundamental requirement to have a flexible and maintainable software.
|
|
Example suppose to have a program that modularize each task (each task is a component).
|
|
Example suppose to have a program that modularize each task (each task is a component). If we did this we can replace the implementation of task A with another implementation more efficient, or with the implementation of the task based on a better external library, without affecting the implementation of the others tasks. It is also clear that this task modularization, bring at the level where one developer can really focus on the implementation/optimization/development of one task without thinking on the implementation of others tasks.
|
|
|
|
|
|
For example we have a software based on library A, fortunately for us we modularized our software, and library A is used through a Component 1, at some point the library A die. Another scenario is library A introuce new features and you would like to try them based on.
|
|
### OpenFPM Modularization
|
|
|
|
|
|
Any library or program that with a non trivial level of complexity, as most basic level operation manage the **Memory**: getting some chunk of memory, destroy it, or eventually resize it. So at the most basic level of OpenFPM there is
|
|
To introduce the OpenFPM modularization we will introduce first the task and than the component inside OpenFPM that implement it.
|
|
|
|
|
|
|
|
OpenFPM at most basic level operations manage the **Memory**: getting some chunk of memory, destroy it, or resize it on any devices or with particular properties. The component inside OpenFPM designed to do such task is **devices (Memory)**. After that we have the capabilities to create memory we have to shape it, or give to them some meaning. More specifically we want to **Map** complex structures on memory, like a Grid, Vectors, Graph ... The component designed to do such task in OpenFPM is ** data **. While data implement complex structures on single machine, we would like to have distributed version of such complex structures. . After that we have complex structure, we would like to create distributed structures |
|
Even for the librarary or program the most basic operation that in general has to do
|
|
|
|
What is the first things that we need in general to run a
|
|
|
|
At the question what is the base of any program ? we will answer the Memory, any |
|
|
|
\ No newline at end of file |
|
|