+++ /dev/null
-/** @defgroup SURF_build_api Create a new API
- @ingroup SURF_API
- @brief How to build a new API on top of SURF
-
- SURF provides the functionalities to simulate the platform. There are two main data types in SURF:
- the actions and the resources. Several types of resources exist:
- - the host resource,
- - the network resource,
- - the CPU resource,
- - the timer resource.
-
- The implementation of these resources depends on the platform
- models you choose. You can select your model by calling
- #surf_host_model_init_current_default() (which will give you a
- CLM03 model), or similar (see @ref SURF_models).
-
- To initialize SURF, call
- #surf_host_model_init_current_default() or #surf_host_model_init_ptask_L07()
- to create the platform.
-
- Then you can access the hosts with the @ref simgrid::s4u::Engine::get_all_hosts.
- Some functions of the @ref SURF_host_interface and similar can give
- you some information about:
- - a host: get_speed(), get_available_speed();
- - a network link: get_link_name(), get_link_latency(), get_link_bandwidth();
- - a route: get_route(), get_route_size().
-
- During the simulation, call @a surf_host_model->execute() to schedule a
- computation task on a host, or @a surf_host_model->communicate()
- to schedule a communication task between two hosts. You can also create parallel task
- with @a surf_host_model->extension_public->execute_parallel_task(). These functions return
- a new action that represents the task you have just created.
-
- To execute the actions created with @a execute(), @a communicate() or @a execute_parallel_task(), call
- EngineImpl::solve(). This function is where the simulation takes place. It returns the
- time elapsed to execute the actions. You can know what actions have changed their state thanks
- to the states sets. For example, if your want to know what actions are finished,
- extract them from @a surf_host_model->common_public->states.done_action_set.
- Depending on these results, you can schedule other tasks and call solve() again.
-
- Have a look at the implementation ofd @ref SD_API "Simdag" to see how these module
- interact with SURF. But if you want to create a new API on top of SURF,
- we strongly recommend you to contact us before anyway.
-
-*/
-