Due Tuesday, December 13, at the start of class.
Create a pretty image by running a Mandelbrot generator on several “tiles” and then stitch the tiles together to create a single, large image.
This exercise is an extension of Homework #12 to create the entire workflow.
See Homework #12 for background information, which is still relevant here.
There are two main tasks to complete: design a workflow to solve this problem, and then implement it with a Python script and, depending on your design, perhaps some other supporting files.
As in Homework #12, your final script must accept the following command-line arguments, which define what to draw. Keep them in mind as you design your solution.
Consider a fairly simple set of command-line arguments:
cx | –0.5 |
cy | 0 |
w | 1 |
p | 400 |
n | 2 |
Sketch your workflow for this scenario, using circles for nodes and arrows to connect them. Be sure each node is needed — avoid extraneous nodes. Give each node a unique label.
Next, write down the details for each step: prerequisites or preconditions, inputs (including command-line arguments), process (i.e., executable), and output. Do you want or need any pre- or post-scripts on any nodes? If so, write down the same details for them. The clearer you can be about this part of the design, the easier the implementation will be. However, if you are not sure of details now, you can always come back and figure them out later.
Finally, consider the DAGMan design of your solution. We have talked about lots of different approaches to building a DAG. Which will you use? Some questions to consider:
goatbrot
or one per DAGMan node?goatbrot
be set?montage
be set?There is not one correct answer to these questions! Each decision has pros and cons. Do your best to consider your options and make choices. Again, you can always defer some decisions until later, or change decisions already made!
Given your experience with Homework #12 and your design decisions, implementation should be fairly straightforward. Be sure to reuse as much code from Homework #12 as possible! Do not reinvent the wheel. Of course, some things will certainly change for this assignment.
Some important notes (read carefully!):
montage
program is not installed on the execute machines of CHTC. Therefore, we will use a
different universe
setting in the corresponding Condor submit file to tell Condor to run
the montage
program right on the submit machine. Do not use the vanilla universe
for your montage
node! Doing so will guarantee failure. Instead, use this line:
universe = scheduler
Also, because this job will run locally (i.e, on the submit machine), you should remove the Condor submit file
statements for should_transfer_files
, when_to_transfer_output
, rank
, and
+WantRHEL6Job
(think about why they are no longer needed). The remaining Condor submit file
statements, such as executable
and queue
, are still needed.
goatbrot
output files that sort into correct tile order. This is no different
than in Homework #12, just a reminder.
Some ideas for extra learning:
Do the work yourself, consulting reasonable reference materials as needed. Any resource that provides a complete solution or offers significant material assistance toward a solution not OK to use. Asking the instructor for help is OK, asking other students for help is not. All standard UW policies concerning student conduct (esp. UWS 14) and information technology apply to this course and assignment.
A printout of your script, and any required support files (templates, Condor submit files, whatever), ideally on a single sheet of paper (double-sided is great!). Be sure to put your own name clearly on each piece of paper, regardless; identifying your work is important, or you may not receive appropriate credit.