Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions internal/calloc/CmdArgParser.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ var (
FlagGetUserEnv bool
FlagExport string
FlagExclusive bool
FlagCoresPerSocket uint32

FlagExtraAttr string
FlagMailType string
Expand Down Expand Up @@ -79,6 +80,7 @@ func init() {
"info", "Available debug level: trace, debug, info")
RootCmd.Flags().Uint32VarP(&FlagNodes, "nodes", "N", 1, "Number of nodes on which to run")
RootCmd.Flags().Float64VarP(&FlagCpuPerTask, "cpus-per-task", "c", 1, "Number of cpus required per task")
RootCmd.Flags().Uint32VarP(&FlagCoresPerSocket, "cores-per-socket", "", 0, "Number of cores per socket")
RootCmd.Flags().Uint32Var(&FlagNtasksPerNode, "ntasks-per-node", 1, "Number of tasks to invoke on each node")
RootCmd.Flags().StringVarP(&FlagTime, "time", "t", "", "Time limit, format: \"day-hours:minutes:seconds\" 5-0:0:1 for 5 days, 1 second or \"hours:minutes:seconds\" 10:1:2 for 10 hours, 1 minute, 2 seconds")
RootCmd.Flags().StringVar(&FlagMem, "mem", "", "Maximum amount of real memory, support GB(G, g), MB(M, m), KB(K, k) and Bytes(B), default unit is MB")
Expand Down
1 change: 1 addition & 0 deletions internal/calloc/calloc.go
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,7 @@ func MainCalloc(cmd *cobra.Command, args []string) error {
task.NodeNum = FlagNodes
task.CpusPerTask = FlagCpuPerTask
task.NtasksPerNode = FlagNtasksPerNode
task.CoresPerSocket = FlagCoresPerSocket

if FlagGres != "" {
gresMap := util.ParseGres(FlagGres)
Expand Down
42 changes: 22 additions & 20 deletions internal/cbatch/CmdArgParser.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,27 @@ import (
)

var (
FlagNodes uint32
FlagCpuPerTask float64
FlagNtasksPerNode uint32
FlagTime string
FlagMem string
FlagPartition string
FlagJob string
FlagAccount string
FlagQos string
FlagCwd string
FlagRepeat uint32
FlagNodelist string
FlagExcludes string
FlagGres string
FlagGetUserEnv bool
FlagExport string
FlagStdoutPath string
FlagStderrPath string
FlagOpenMode string
FlagExclusive bool
FlagNodes uint32
FlagCpuPerTask float64
FlagCoresPerSocket uint32
FlagNtasksPerNode uint32
FlagTime string
FlagMem string
FlagPartition string
FlagJob string
FlagAccount string
FlagQos string
FlagCwd string
FlagRepeat uint32
FlagNodelist string
FlagExcludes string
FlagGres string
FlagGetUserEnv bool
FlagExport string
FlagStdoutPath string
FlagStderrPath string
FlagOpenMode string
FlagExclusive bool

FlagInterpreter string
FlagContainer string
Expand Down Expand Up @@ -143,6 +144,7 @@ func init() {
util.DefaultConfigPath, "Path to configuration file")
RootCmd.Flags().Uint32VarP(&FlagNodes, "nodes", "N", 1, "Number of nodes on which to run (N = min[-max])")
RootCmd.Flags().Float64VarP(&FlagCpuPerTask, "cpus-per-task", "c", 1, "Number of cpus required per job")
RootCmd.Flags().Uint32VarP(&FlagCoresPerSocket, "cores-per-socket", "", 0, "Number of cores per socket")
RootCmd.Flags().StringVar(&FlagGres, "gres", "", "Gres required per task,format: \"gpu:a100:1\" or \"gpu:1\"")
RootCmd.Flags().Uint32Var(&FlagNtasksPerNode, "ntasks-per-node", 1, "Number of tasks to invoke on each node")
RootCmd.Flags().StringVarP(&FlagTime, "time", "t", "", "Time limit, format: \"day-hours:minutes:seconds\" 5-0:0:1 for 5 days, 1 second or \"hours:minutes:seconds\" 10:1:2 for 10 hours, 1 minute, 2 seconds")
Expand Down
10 changes: 10 additions & 0 deletions internal/cbatch/cbatch.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,13 @@ func ProcessCbatchArgs(cmd *cobra.Command, args []CbatchArg) (bool, *protos.Task
return false, nil
}
task.Exclusive = val
case "--cores-per-socket":
val, err := strconv.ParseUint(arg.val, 10, 32)
if err != nil {
log.Errorf("Invalid argument: %v in script: %v", arg.name, err)
return false, nil
}
task.CoresPerSocket = uint32(val)
default:
log.Errorf("Invalid argument: unrecognized '%s' is given in the script", arg.name)
return false, nil
Expand Down Expand Up @@ -196,6 +203,9 @@ func ProcessCbatchArgs(cmd *cobra.Command, args []CbatchArg) (bool, *protos.Task
if cmd.Flags().Changed("gres") {
task.ReqResources.DeviceMap = util.ParseGres(FlagGres)
}
if cmd.Flags().Changed("cores-per-socket") {
task.CoresPerSocket = FlagCoresPerSocket
}

if FlagTime != "" {
seconds, err := util.ParseDurationStrToSeconds(FlagTime)
Expand Down
36 changes: 19 additions & 17 deletions internal/crun/CmdArgParser.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,24 @@ import (
)

var (
FlagNodes uint32
FlagCpuPerTask float64
FlagNtasksPerNode uint32
FlagTime string
FlagMem string
FlagPartition string
FlagJob string
FlagAccount string
FlagQos string
FlagCwd string
FlagNodelist string
FlagExcludes string
FlagGetUserEnv bool
FlagExport string
FlagGres string
FlagPty bool
FlagExclusive bool
FlagNodes uint32
FlagCpuPerTask float64
FlagCoresPerSocket uint32
FlagNtasksPerNode uint32
FlagTime string
FlagMem string
FlagPartition string
FlagJob string
FlagAccount string
FlagQos string
FlagCwd string
FlagNodelist string
FlagExcludes string
FlagGetUserEnv bool
FlagExport string
FlagGres string
FlagPty bool
FlagExclusive bool

FlagX11 bool
FlagX11Fwd bool
Expand Down Expand Up @@ -82,6 +83,7 @@ func init() {
"info", "Available debug level: trace, debug, info")
RootCmd.Flags().Uint32VarP(&FlagNodes, "nodes", "N", 1, "Number of nodes on which to run (N = min[-max])")
RootCmd.Flags().Float64VarP(&FlagCpuPerTask, "cpus-per-task", "c", 1, "Number of cpus required per task")
RootCmd.Flags().Uint32VarP(&FlagCoresPerSocket, "cores-per-socket", "", 0, "Number of cores per socket")
RootCmd.Flags().StringVar(&FlagGres, "gres", "", "Gres required per task,format: \"gpu:a100:1\" or \"gpu:1\"")
RootCmd.Flags().Uint32Var(&FlagNtasksPerNode, "ntasks-per-node", 1, "Number of tasks to invoke on each node")
RootCmd.Flags().StringVarP(&FlagTime, "time", "t", "", "Time limit, format: \"day-hours:minutes:seconds\" 5-0:0:1 for 5 days, 1 second or \"hours:minutes:seconds\" 10:1:2 for 10 hours, 1 minute, 2 seconds")
Expand Down
1 change: 1 addition & 0 deletions internal/crun/crun.go
Original file line number Diff line number Diff line change
Expand Up @@ -835,6 +835,7 @@ func MainCrun(args []string) error {
task.NodeNum = FlagNodes
task.CpusPerTask = FlagCpuPerTask
task.NtasksPerNode = FlagNtasksPerNode
task.CoresPerSocket = FlagCoresPerSocket
task.Name = util.ExtractExecNameFromArgs(args)

if FlagTime != "" {
Expand Down
8 changes: 8 additions & 0 deletions protos/PublicDefs.proto
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ message TaskToCtld {
bool exclusive = 37;

bool hold = 38;
uint32 cores_per_socket = 39;
}

message TaskInEmbeddedDb {
Expand Down Expand Up @@ -589,6 +590,12 @@ message NetworkInterface {
repeated string ipv6_addresses = 4;
}

message TopologyInfo {
uint32 socket_count = 1;
uint32 cores_per_socket = 2;
uint32 threads_per_core = 3;
}

message CranedRemoteMeta {
DedicatedResourceInNode dres_in_node = 1;
SystemRelInfo sys_rel_info = 2;
Expand All @@ -598,4 +605,5 @@ message CranedRemoteMeta {
repeated uint32 lost_tasks = 6;
repeated uint32 lost_jobs = 7;
repeated NetworkInterface network_interfaces = 8;
TopologyInfo topology_info = 9;
}