experimaestro 1.8.6__tar.gz → 1.8.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of experimaestro might be problematic. Click here for more details.

Files changed (156) hide show
  1. {experimaestro-1.8.6 → experimaestro-1.8.7}/PKG-INFO +1 -1
  2. {experimaestro-1.8.6 → experimaestro-1.8.7}/pyproject.toml +2 -2
  3. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launcherfinder/registry.py +1 -0
  4. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launcherfinder/specs.py +10 -9
  5. {experimaestro-1.8.6 → experimaestro-1.8.7}/LICENSE +0 -0
  6. {experimaestro-1.8.6 → experimaestro-1.8.7}/README.md +0 -0
  7. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/__init__.py +0 -0
  8. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/__main__.py +0 -0
  9. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/annotations.py +0 -0
  10. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/checkers.py +0 -0
  11. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/cli/__init__.py +0 -0
  12. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/cli/filter.py +0 -0
  13. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/cli/jobs.py +0 -0
  14. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/click.py +0 -0
  15. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/commandline.py +0 -0
  16. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/compat.py +0 -0
  17. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/connectors/__init__.py +0 -0
  18. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/connectors/local.py +0 -0
  19. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/connectors/ssh.py +0 -0
  20. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/__init__.py +0 -0
  21. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/arguments.py +0 -0
  22. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/callbacks.py +0 -0
  23. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/context.py +0 -0
  24. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/identifier.py +0 -0
  25. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/objects/__init__.py +0 -0
  26. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/objects/config.py +0 -0
  27. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/objects/config_utils.py +0 -0
  28. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/objects/config_walk.py +0 -0
  29. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/objects.pyi +0 -0
  30. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/serialization.py +0 -0
  31. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/serializers.py +0 -0
  32. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/types.py +0 -0
  33. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/core/utils.py +0 -0
  34. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/exceptions.py +0 -0
  35. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/experiments/__init__.py +0 -0
  36. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/experiments/cli.py +0 -0
  37. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/experiments/configuration.py +0 -0
  38. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/generators.py +0 -0
  39. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/huggingface.py +0 -0
  40. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/ipc.py +0 -0
  41. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launcherfinder/__init__.py +0 -0
  42. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launcherfinder/base.py +0 -0
  43. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launcherfinder/parser.py +0 -0
  44. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launchers/__init__.py +0 -0
  45. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launchers/direct.py +0 -0
  46. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launchers/oar.py +0 -0
  47. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launchers/slurm/__init__.py +0 -0
  48. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/launchers/slurm/base.py +0 -0
  49. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/locking.py +0 -0
  50. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/mkdocs/__init__.py +0 -0
  51. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/mkdocs/annotations.py +0 -0
  52. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/mkdocs/base.py +0 -0
  53. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/mkdocs/metaloader.py +0 -0
  54. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/mkdocs/style.css +0 -0
  55. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/mypy.py +0 -0
  56. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/notifications.py +0 -0
  57. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/py.typed +0 -0
  58. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/rpyc.py +0 -0
  59. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/run.py +0 -0
  60. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/__init__.py +0 -0
  61. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/base.py +0 -0
  62. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/dependencies.py +0 -0
  63. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/dynamic_outputs.py +0 -0
  64. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/services.py +0 -0
  65. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/state.py +0 -0
  66. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scheduler/workspace.py +0 -0
  67. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/scriptbuilder.py +0 -0
  68. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/__init__.py +0 -0
  69. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/0c35d18bf06992036b69.woff2 +0 -0
  70. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/1815e00441357e01619e.ttf +0 -0
  71. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/219aa9140e099e6c72ed.woff2 +0 -0
  72. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/2463b90d9a316e4e5294.woff2 +0 -0
  73. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/2582b0e4bcf85eceead0.ttf +0 -0
  74. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/3a4004a46a653d4b2166.woff +0 -0
  75. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/3baa5b8f3469222b822d.woff +0 -0
  76. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/4d73cb90e394b34b7670.woff +0 -0
  77. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/4ef4218c522f1eb6b5b1.woff2 +0 -0
  78. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/5d681e2edae8c60630db.woff +0 -0
  79. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/6f420cf17cc0d7676fad.woff2 +0 -0
  80. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/89999bdf5d835c012025.woff2 +0 -0
  81. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/914997e1bdfc990d0897.ttf +0 -0
  82. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/c210719e60948b211a12.woff2 +0 -0
  83. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/c380809fd3677d7d6903.woff2 +0 -0
  84. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/f882956fd323fd322f31.woff +0 -0
  85. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/favicon.ico +0 -0
  86. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/index.css +0 -0
  87. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/index.css.map +0 -0
  88. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/index.html +0 -0
  89. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/index.js +0 -0
  90. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/index.js.map +0 -0
  91. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/login.html +0 -0
  92. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/server/data/manifest.json +0 -0
  93. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/settings.py +0 -0
  94. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/sphinx/__init__.py +0 -0
  95. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/sphinx/static/experimaestro.css +0 -0
  96. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/taskglobals.py +0 -0
  97. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/__init__.py +0 -0
  98. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/conftest.py +0 -0
  99. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/connectors/bin/executable.py +0 -0
  100. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/connectors/test_local.py +0 -0
  101. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/connectors/utils.py +0 -0
  102. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/core/__init__.py +0 -0
  103. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/core/test_generics.py +0 -0
  104. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/definitions_types.py +0 -0
  105. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/__init__.py +0 -0
  106. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/bin/sacct +0 -0
  107. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/bin/sbatch +0 -0
  108. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/bin/srun +0 -0
  109. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/bin/test.py +0 -0
  110. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/common.py +0 -0
  111. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/config_slurm/__init__.py +0 -0
  112. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/config_slurm/launchers.py +0 -0
  113. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/test_local.py +0 -0
  114. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/launchers/test_slurm.py +0 -0
  115. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/restart.py +0 -0
  116. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/restart_main.py +0 -0
  117. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/scripts/notifyandwait.py +0 -0
  118. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/scripts/waitforfile.py +0 -0
  119. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/task_tokens.py +0 -0
  120. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/tasks/__init__.py +0 -0
  121. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/tasks/all.py +0 -0
  122. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/tasks/foreign.py +0 -0
  123. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_checkers.py +0 -0
  124. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_dependencies.py +0 -0
  125. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_experiment.py +0 -0
  126. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_findlauncher.py +0 -0
  127. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_forward.py +0 -0
  128. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_identifier.py +0 -0
  129. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_instance.py +0 -0
  130. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_objects.py +0 -0
  131. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_outputs.py +0 -0
  132. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_param.py +0 -0
  133. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_progress.py +0 -0
  134. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_serializers.py +0 -0
  135. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_snippets.py +0 -0
  136. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_ssh.py +0 -0
  137. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_tags.py +0 -0
  138. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_tasks.py +0 -0
  139. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_tokens.py +0 -0
  140. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_types.py +0 -0
  141. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/test_validation.py +0 -0
  142. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/token_reschedule.py +0 -0
  143. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tests/utils.py +0 -0
  144. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tokens.py +0 -0
  145. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tools/__init__.py +0 -0
  146. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tools/diff.py +0 -0
  147. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tools/documentation.py +0 -0
  148. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/tools/jobs.py +0 -0
  149. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/typingutils.py +0 -0
  150. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/utils/__init__.py +0 -0
  151. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/utils/asyncio.py +0 -0
  152. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/utils/jobs.py +0 -0
  153. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/utils/jupyter.py +0 -0
  154. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/utils/resources.py +0 -0
  155. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/utils/settings.py +0 -0
  156. {experimaestro-1.8.6 → experimaestro-1.8.7}/src/experimaestro/xpmutils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: experimaestro
3
- Version: 1.8.6
3
+ Version: 1.8.7
4
4
  Summary: "Experimaestro is a computer science experiment manager"
5
5
  License: GPL-3
6
6
  Keywords: experiment manager
@@ -20,7 +20,7 @@ include = [
20
20
  "src/experimaestro/mkdocs/style.css",
21
21
  { path="src/experimaestro/server/data/*", format=['sdist', 'wheel']}
22
22
  ]
23
- version = "1.8.6"
23
+ version = "1.8.7"
24
24
  repository = "https://github.com/experimaestro/experimaestro-python"
25
25
  documentation = "https://experimaestro-python.readthedocs.io/"
26
26
 
@@ -122,7 +122,7 @@ warn_unused_ignores = true
122
122
 
123
123
  [tool.commitizen]
124
124
  name = "cz_conventional_commits"
125
- version = "1.8.6"
125
+ version = "1.8.7"
126
126
  changelog_start_rev = "v1.0.0"
127
127
  tag_format = "v$major.$minor.$patch$prerelease"
128
128
  # update_changelog_on_bump = true
@@ -83,6 +83,7 @@ class LauncherRegistry:
83
83
 
84
84
  # Register the find launcher function if it exists
85
85
  launchers_py = basepath / "launchers.py"
86
+ print(f"basepath {launchers_py}")
86
87
  if launchers_py.is_file():
87
88
  logger.info("Loading %s", launchers_py)
88
89
 
@@ -20,9 +20,6 @@ class CudaSpecification:
20
20
  min_memory: int = 0
21
21
  """Minimum request memory (in bytes)"""
22
22
 
23
- def __lt__(self, other: "CudaSpecification"):
24
- return self.memory < other.memory
25
-
26
23
  def match(self, spec: "CudaSpecification"):
27
24
  """Returns True if the specification matches this host"""
28
25
  return (self.memory >= spec.memory) and (self.min_memory <= spec.memory)
@@ -30,7 +27,7 @@ class CudaSpecification:
30
27
  def __repr__(self):
31
28
  return (
32
29
  f"CUDA({self.model} "
33
- f"{format_size(self.memory)}/{format_size(self.min_memory)})"
30
+ f"max={format_size(self.memory)}/min={format_size(self.min_memory)})"
34
31
  )
35
32
 
36
33
 
@@ -48,8 +45,8 @@ class CPUSpecification:
48
45
  cpu_per_gpu: int = 0
49
46
  """Number of CPU per GPU (0 if not defined)"""
50
47
 
51
- def __lt__(self, other: "CPUSpecification"):
52
- return self.memory < other.memory and self.cores < other.cores
48
+ def match(self, other: "CPUSpecification"):
49
+ return (self.memory >= other.memory) and (self.cores >= other.cores)
53
50
 
54
51
  def total_memory(self, gpus: int = 0):
55
52
  return max(
@@ -95,6 +92,7 @@ class HostRequirement:
95
92
  """A requirement must be a disjunction of host requirements"""
96
93
 
97
94
  requirements: List["HostSimpleRequirement"]
95
+ """List of requirements (by order of priority)"""
98
96
 
99
97
  def __init__(self) -> None:
100
98
  self.requirements = []
@@ -133,7 +131,10 @@ class HostSimpleRequirement(HostRequirement):
133
131
  """Simple host requirement"""
134
132
 
135
133
  cuda_gpus: List["CudaSpecification"]
134
+ """Specification for CUDA gpus"""
135
+
136
136
  cpu: "CPUSpecification"
137
+ """Specification for CPU"""
137
138
 
138
139
  duration: int
139
140
  """Requested duration (in seconds)"""
@@ -158,7 +159,7 @@ class HostSimpleRequirement(HostRequirement):
158
159
  self.cpu.cores = max(req.cpu.cores, self.cpu.cores)
159
160
  self.duration = max(req.duration, self.duration)
160
161
  self.cuda_gpus.extend(req.cuda_gpus)
161
- self.cuda_gpus.sort()
162
+ self.cuda_gpus.sort(key=lambda cuda: -cuda.memory)
162
163
 
163
164
  def match(self, host: HostSpecification) -> Optional[MatchRequirement]:
164
165
  if self.cuda_gpus:
@@ -182,7 +183,7 @@ class HostSimpleRequirement(HostRequirement):
182
183
  )
183
184
  return None
184
185
 
185
- if host.cpu < self.cpu:
186
+ if not host.cpu.match(self.cpu):
186
187
  return None
187
188
 
188
189
  if host.max_duration > 0 and self.duration > host.max_duration:
@@ -197,7 +198,7 @@ class HostSimpleRequirement(HostRequirement):
197
198
  _self = deepcopy(self)
198
199
  for _ in range(count - 1):
199
200
  _self.cuda_gpus.extend(self.cuda_gpus)
200
- _self.cuda_gpus.sort()
201
+ _self.cuda_gpus.sort(key=lambda cuda: -cuda.memory)
201
202
 
202
203
  return _self
203
204
 
File without changes
File without changes