Skip to content

Unable to setup Co-scheduling multiple application in Mercury #2720

Description

@Ankit-1204

Hello

I have was able to successfully run a single application using Mercury, the .py file was as follows

import sst
from sst.merlin.base import *
from sst.merlin.endpoint import *
from sst.merlin.interface import *
from sst.merlin.topology import *
from sst.hg import *

if __name__ == "__main__":

    PlatformDefinition.loadPlatformFile("platform_file_hg_test")
    PlatformDefinition.setCurrentPlatform("platform_hg_test")
    platform = PlatformDefinition.getCurrentPlatform()

    # ── Rank count ──────────────────────────────────────────────────
    num_ranks = 16

    platform.addParamSet("operating_system", {
        "verbose" : 1,

        # ── App identity ──────────────────────────────────────────
        "app1.name"             : "project",           # matches -Dssthg_app_name=project
        "app1.exe_library_name" : "project-hgcc",       # matches libproject-hgcc.so

        "app1.argv" : "....",

        "app1.verbose" : 1,
        "app1.dependencies" : ["sumi"],
        "app1.libraries"    : [
            "systemlibrary:SystemLibrary",
            "computelibrary:ComputeLibrary",
            "mask_mpi:MpiApi",
        ]
    })

    topo = topoHyperX()
    topo.shape = "8x8"
    topo.width = "1x1"
    topo.local_ports = 1
    ep = HgJob(0, num_ranks)

    system = System()
    system.setTopology(topo)
    system.allocateNodes(ep, "linear")
    system.build()

However when attempting to Co-Schedule 2 different projects using following .py file

import sst
from sst.merlin.base import *
from sst.merlin.endpoint import *
from sst.merlin.interface import *
from sst.merlin.topology import *
from sst.hg import *

if __name__ == "__main__":

    PlatformDefinition.loadPlatformFile("platform_file_hg_test")
    PlatformDefinition.setCurrentPlatform("platform_hg_test")
    platform = PlatformDefinition.getCurrentPlatform()

    npx, npy, npz = 4, 4, 2
    proj2_ranks = npx * npy * npz
    proj1_ranks = npx * npy * npz

    
    proj1_job= HgJob(1, proj1_ranks)
    proj1_job.os.addParams({
        "verbose": 1,
        "app1.name":             "project1",
        "app1.exe_library_name": "project1-hgcc",
        "app1.argv": (
            "....."   
            "....."
        ) % (npx, npy, npz),
        "app1.verbose":          1,
        "app1.dependencies":     ["sumi"],
        "app1.libraries": [
            "systemlibrary:SystemLibrary",
            "computelibrary:ComputeLibrary",
            "mask_mpi:MpiApi",
        ],
    })
    proj2_job= HgJob(0, proj2_ranks)
    proj2_job.os.addParams({
        "verbose": 1,
        "app1.name":             "project2",
        "app1.exe_library_name": "project2-hgcc",
        "app1.argv":             "....",
        "app1.verbose":          1,
        "app1.dependencies":     ["sumi"],
        "app1.libraries": [
            "systemlibrary:SystemLibrary",
            "computelibrary:ComputeLibrary",
            "mask_mpi:MpiApi",
        ],
    })
    topo = topoHyperX()
    topo.shape = "8x8"
    topo.width = "1x1"
    topo.local_ports = 1

    system = System()
    system.setTopology(topo)
    system.allocateNodes(proj1_job, "linear")
    system.allocateNodes(proj2_job, "linear")
    system.build()

It doesn't run properly as expected. I have no way of verifying if this is the correct method to Co-Schedule the Application since documentation for it is scarce.

Any help or guide regarding how to Co-Schedule the applications for Mercury would be really appreciated

Thank You

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions