Batiz
Batiz

Reputation: 113

How to design a memory-efficient partitioning algorithm for task execution with shared dependencies?

I’m trying to design a partitioning algorithm to scale task execution in a resource-constrained environment. Here’s the situation:

Key characteristics of the system:

  1. Tasks are organized as a DAG with possible dependencies between them. If task1 depends on task2, then running task1 will implicitly trigger task2.
  2. Some tasks share the same DAL calls with identical inputs.
  3. DAL’s don’t have persistent caching but do maintain a local cache for unique inputs.
  4. I want to minimize redundant DAL calls for shared dependencies.

What I know:

What I’ve considered so far: I thought of creating a graph where:

The idea is to weight the nodes and edges based on memory consumption and run a penalty- and constraint-based partitioning algorithm. However, I’m struggling to correctly weight the edges and nodes without “double counting” memory consumption for shared DALs.

Once I have the partitions, I can distribute their work across different processes.

Goal: I need a solution that:

How would you approach this problem? Any suggestions on how to properly weight the graph or alternative strategies for partitioning?

Thanks!

Upvotes: 0

Views: 32

Answers (0)

Related Questions