Coder Social home page Coder Social logo

dodo's People

Contributors

slizzered avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

slizzered

dodo's Issues

Improve memory usage of Properties

Currently, each Vertex/Edge has a Property that holds N pointers (for N possible attributes).

Since not each Vertex has all the Properties (some vertices don't have properties at all), but still the type, it would be nice to save some memory

Probably possible by using a List instead of the vector (or dynamically allocating the vector as needed).

  • This requires some changes in the getters/setters and probably others, as currently the index of the vector is sometimes used to determine the type. Should depend only on the mapID that is stored in the handle.

There might be a conflict with #1

DOI Not Found

Hi, this is probably a minor issue, but the DOI for the Diploma Thesis does not work.

Graphical representation of interconnect graph

While the consists-of graph has some kind of graphical display functionality, there is need for a graphical representation of the interconnect graph. This will also help to verify the behavior of functions like mergeStarTopology()

Helper functions for graph composition

Assuming structure where a new graph is created through a root node that consists of N homogeneous substructures, it would be very convenient to have a function that automates this process.

  • Also think about interconnects!

example interface:

Graph substructure;
// ... definition of substructure

Graph g = consistsOf(substructure, N);

//Alternatively:
Interconnector intcn; // functor determines how the N substructures will be interconnected
                      // could be fully-connected, hypercube, etc.
Graph g = consistsOf(substructure, N, intcn);

Decoulping of AttributeGraph, AttributeMapStore, Property, and Attribute

currently, all have a pointer to AttributeMapStore. Could this be more encapsulated?

  • This is interesting, since Handles might not actually NEED the type of the graph. Should actually not have ANY type, IMHO.
  • Properties will have the type by design (BGL demands it)
  • Attributes would probably be OK just to have their own type
    • currently need the whole AttributeMapStore because of their destructor-mechanism

Interface to combine graphs (merging attributes) with custom mapping

The preferred way is slicing of graphs, but merging should definitely be possible and well supported.

  • a first step (internally?) would be to convert both graphs to the same type. Then the mapping is all about finding the correct subgraph isomorphism.
  • a first simplification for the subgraph isomorphism should be, that one graph is structurally a strict subgraph of the other.
  • combining 2 graphs that don't have a strict subgraph relation:
    • merge vertices/edges where an appropriate mapping exists. otherwise, copy elements directly and simply add them.
    • this might not be possible with the existing boost::graph_copy functionality, but might require iterating over the vertices of a graph and do a lookup in the mapping
    • would be easier if the mapping was done as a boost::bimap....

Tag system for Hardware entities

There needs to be an agreed-upon mechanism for storing the structural meta-information.

  • This allows to filter the graph for certain interesting things ("all CPUs and their communication")
  • Alternatively, do the filtering strictly by regular attribute meta-information

All Data is returned as string when writing graph to graphml

All data hast type "string" in the graphml file. This is due to the type of the maps in "getMaps()", see
vector<pair<string, map<Key, string>>> maps(tuple_size<T_Labels>::value); (here)

To fix this, the maps need to be a tuple instead of a vector. This tuple has to be generated at compile time with the types that are returned by the toString() methods of the attributes.
The type that is returned can be obtained through decltype(((T_Property*)nullptr)->toString())

Interface for querying graph information

In addition to the fitering options ( #4 + #8 ), there could be an interface that supports more elaborate queries to the graph:

  • How many GPUs?
  • What is the minimum bandwidth between CPUs?
  • What is the minimum amount of memory on a node?

Enforce an interface for Attributes

This solves multiple problems:

  • merge function #9
  • polymorphic nature of Attributes #2

The interface needs a pure virtual function and is intended to be publicly inherited (for now).

Merge interface for Attributes

Since Attributes might need merging in several situations (merging graphs, iterating to get summed value), there needs to be at least one function that is used to combine multiple instances of an attribute.

This merging function should be

  • commutative: a +b = b + a
  • associative: (a + b) + c = a + (b + c)

Transformation functions for Graph optimization tools

METIS needs communication represented as fully-connected graph with weighted edges. It would be good to give an interface for transforming an Attribute-Graph (or a filtered representation thereof) into the correct representation

Filtering of graph attributes

  • currently there is a barebones mechanism to convert a graph to a different graph using type-conversion.
  • There should be a way to get a subgraph-view using boost::filtered_graph that contains only the relevant attributes

Description

This software lacks a short introduction / description paragraph at the top of its README.md :)

Determine which information is needed to form the interface for tasks

Should the interface of Data-Tasks and Compute-Tasks be fundamentally different?

  • Probably at least 1 of the interfaces will be shared
  • Information to think about
    • "depends on" -> input data to be a useful task
    • Dataflow (direction of data flow) -> could this be just a more verbose form of "depends on"?
    • I/O relation -> how many input-chunks (from which input sources) are needed to form an output chunk?
    • how can the user specify compute speed?
    • allow to specify hardware constraints
      • required memory
      • required CPU
      • required GPU
      • exclusive use of Node
    • Interconnect constraints?
      • must guarantee minimal throughput
      • exclusive usage of interconnect

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.