-
Notifications
You must be signed in to change notification settings - Fork 280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial support for Madmax plotter. #797
Initial support for Madmax plotter. #797
Conversation
Thanks a bunch for doing this work. I can't say I have gotten around to doing anything with madmax but... we all know it's the talk of the town right now. A few thoughts: I generally expect to want the code long term to be separated for each plotter. I know of one more being worked on already. Maybe I'll come up with a For the configuration, I think it would be good to have a separate group for each. This will make it much more explicit for users and easier for us to implement the schema to check and complain about options that are not common. Though, it does seem that they stayed at least mostly compatible. Unless madmax uses the chia cli parser, I think it would be good to copy theirs in just as we've done with each version of chia's plotter. I think it would be good to indicate what sort of plot each one is. At present plotman will only be able to launch one or the other within a given session, but users could launch the other kind manually or in the future that could vary between multiple workflows (someday... someday). So... A new column with So, some of that is just context and some is requested changes. Here are the requested changes.
For all the other changes I mentioned, maybe you want to change my mind but for now I plan to keep them separate from this. If any of the three above seem like they would take enough calendar time that we don't want to wait for them, I'm game for discussing that. Thanks again for your work on this contribution. I know lots of people appreciate it, including me. |
Hi, thanks for the feedback. My initial PR above was definitely an attempt to make the smallest possible change while still maintaining compatibility. I agree that an eventual refactoring is a good idea though, to support additional plotters in the future. So, I've just pushed an update to this PR which:
A couple of questions about how to improve on the other items:
|
Yeah, I appreciate starting with a minimally intrusive PR. We'll get the rest in time.
Sorry you don't get build feedback straight away. A few weeks back GitHub decided to require approval for every CI run for PRs from new contributors. Apparently too many people were mining crypto in PRs... |
Co-authored-by: Kyle Altendorf <[email protected]>
Co-authored-by: Kyle Altendorf <[email protected]>
I'm still interested in the separate configuration sections for the Chia Network plotter vs. madmax. Do you want to go back and forth over that or should I just make a few changes here and merge? Or, probably let you test afterwards to make sure... then merge. |
Hi, I'm 100% good with you making the changes that best suit the overall configuration approach you want to use. I'm happy to test. Just let me know if I need to grant any permissions on Github or anything. Thanks! |
Welp, it is passing type hints anyways. The new madmax CLI parsing wasn't in use yet, so I (hopefully) hooked that up. I need to write up a description of the change in the configuration wiki page but with a little luck you can figure it out until then. It is passing type hints so there's some hope, but I'll admit I haven't run it yet. |
Hi! Thanks for this. On initial test, this section of job.py is now looking for chia command parameters, from the madmax command and not finding them. I've added a print of the self.args, just before the index error: Not sure, what the best way to split this behavior for the different chia and madmax args is in this section. Thoughts? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll commit these...
Alrighty, I'm working on the configuration wiki page... then maybe... this'll be ready. |
Thanks again! Great to have this. Looks like they added pool support and maybe a couple other things, but I'll follow up on those separately. Cheers. |
I have a problem 5950x + 3* 2T nvme Looking at my setup, the results are not what I expected version: [2]
directories:
tmp:
- /ssd1/Plotter
- /ssd2/Plotter
- /ssd3/Plotter
tmp_overrides:
"/ssd1/Plotter":
tmpdir_max_jobs: 2
"/ssd2/Plotter":
tmpdir_max_jobs: 2
"/ssd3/Plotter":
tmpdir_max_jobs: 2
dst:
- /d/Plots
- /e/Plots
- /f/Plots
- /g/Plots
- /h/Plots
scheduling:
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
tmpdir_stagger_phase_limit: 1
tmpdir_max_jobs: 2
global_max_jobs: 6
global_stagger_m: 5
polling_time_s: 20
type: madmax
madmax:
n_threads: 8
n_buckets: 256 |
Same here. I'm triggering the same issue. 2 different temp dirs only 1 used. directories:
# One or more directories to use as tmp dirs for plotting. The
# scheduler will use all of them and distribute jobs among them.
# It assumes that IO is independent for each one (i.e., that each
# one is on a different physical device).
#
# If multiple directories share a common prefix, reports will
# abbreviate and show just the uniquely identifying suffix.
tmp:
- /plot_temp/1
- /plot_temp/2
# Optional: Allows overriding some characteristics of certain tmp
# directories. This contains a map of tmp directory names to
# attributes. If a tmp directory and attribute is not listed here,
# it uses the default attribute setting from the main configuration.
#
# Currently support override parameters:
# - tmpdir_max_jobs
#tmp_overrides:
# In this example, /mnt/tmp/00 is larger than the other tmp
# dirs and it can hold more plots than the default.
#"/mnt/tmp/00":
# tmpdir_max_jobs: 5
`
`
scheduling:
# Run a job on a particular temp dir only if the number of existing jobs
# before [tmpdir_stagger_phase_major : tmpdir_stagger_phase_minor]
# is less than tmpdir_stagger_phase_limit.
# Phase major corresponds to the plot phase, phase minor corresponds to
# the table or table pair in sequence, phase limit corresponds to
# the number of plots allowed before [phase major : phase minor].
# e.g, with default settings, a new plot will start only when your plot
# reaches phase [2 : 1] on your temp drive. This setting takes precidence
# over global_stagger_m
tmpdir_stagger_phase_major: 4
tmpdir_stagger_phase_minor: 1
# Optional: default is 1
tmpdir_stagger_phase_limit: 1
# Dont run more than this many jobs at a time on a single temp dir.
tmpdir_max_jobs: 2
# Don't run more than this many jobs at a time in total.
global_max_jobs: 4
# Dont run any jobs (across all temp dirs) more often than this, in minutes.
global_stagger_m: 1
# How often the daemon wakes to consider starting a new plot job, in seconds.
polling_time_s: 20
|
Thanks for sharing the problem. Issue reports moved to #807. |
We are talking about 2 different issues. 1 of them is reported on #807 -> Not being able to use more than 1 temp folder. |
Then file another issue I guess. (the message started with "Same here.") |
Hi! Great job on Plotman. I've been using Plotman in Machinaris (a WebUI) for a month now. Really solid stuff. However, the new hotness now seems to be this Madmax plotter, as requested in #762. I've been getting a lot of asks for it as an alternative to the official Chia plotter.
This basic PR adds optional support for the
chia_plot
executable when aplotting :=> type
ofmadmax
is added to theplotman.yaml
. Tested within the Machinaris container (Ubuntu Hirsute) forplot
,analyze
,interactive
, andstatus
along withsuspend
,resume
, andkill
actions.Please let me know where you think the PR could be improved. Thanks again!