Yt: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
[[Category:Software]] | |||
<translate> | <translate> | ||
= YT rendering on clusters = | = YT rendering on clusters = <!--T:1--> | ||
<!--T:2--> | |||
To install [http://yt-project.org YT] for CPU rendering on a cluster in your own directory, please do | To install [http://yt-project.org YT] for CPU rendering on a cluster in your own directory, please do | ||
$ module load python | <!--T:3--> | ||
$ module load python mpi4py | |||
$ virtualenv astro # install Python tools in your $HOME/astro | $ virtualenv astro # install Python tools in your $HOME/astro | ||
$ source ~/astro/bin/activate | $ source ~/astro/bin/activate | ||
Line 11: | Line 15: | ||
$ pip install numpy | $ pip install numpy | ||
$ pip install yt | $ pip install yt | ||
<!--T:4--> | |||
Then, in normal use, simply load the environment and start python | Then, in normal use, simply load the environment and start python | ||
$ source ~/astro/bin/activate # load the environment | <!--T:5--> | ||
$ source ~/astro/bin/activate # load the environment | |||
$ python | $ python | ||
... | ... | ||
$ deactivate | $ deactivate | ||
<!--T:6--> | |||
We assume that you have downloaded the sample dataset Enzo_64 from http://yt-project.org/data. Start with the following script `grids.py` to render 90 frames rotating the dataset around the vertical axis | We assume that you have downloaded the sample dataset Enzo_64 from http://yt-project.org/data. Start with the following script `grids.py` to render 90 frames rotating the dataset around the vertical axis | ||
import yt | <!--T:7--> | ||
import yt | |||
from numpy import pi | from numpy import pi | ||
yt.enable_parallelism() # turn on MPI parallelism via mpi4py | yt.enable_parallelism() # turn on MPI parallelism via mpi4py | ||
Line 36: | Line 43: | ||
sc.save('frame%04d.png' % (i+1), sigma_clip=4) | sc.save('frame%04d.png' % (i+1), sigma_clip=4) | ||
<!--T:8--> | |||
and the job submission script `yt-mpi.sh` | and the job submission script `yt-mpi.sh` | ||
#!/bin/bash | <!--T:9--> | ||
#!/bin/bash | |||
#SBATCH --time=0:30:00 # walltime in d-hh:mm or hh:mm:ss format | #SBATCH --time=0:30:00 # walltime in d-hh:mm or hh:mm:ss format | ||
#SBATCH --ntasks=4 # number of MPI processes | #SBATCH --ntasks=4 # number of MPI processes | ||
Line 46: | Line 55: | ||
srun python grids.py | srun python grids.py | ||
<!--T:10--> | |||
Then submit the job with `sbatch yt-mpi.sh`, wait for it to finish, and then create a movie at 30fps | Then submit the job with `sbatch yt-mpi.sh`, wait for it to finish, and then create a movie at 30fps | ||
$ ffmpeg -r 30 -i frame%04d.png -c:v libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" grids.mp4 | <!--T:11--> | ||
$ ffmpeg -r 30 -i frame%04d.png -c:v libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" grids.mp4 | |||
</translate> | </translate> |
Latest revision as of 15:45, 16 December 2019
YT rendering on clusters[edit]
To install YT for CPU rendering on a cluster in your own directory, please do
$ module load python mpi4py $ virtualenv astro # install Python tools in your $HOME/astro $ source ~/astro/bin/activate $ pip install cython $ pip install numpy $ pip install yt
Then, in normal use, simply load the environment and start python
$ source ~/astro/bin/activate # load the environment $ python ... $ deactivate
We assume that you have downloaded the sample dataset Enzo_64 from http://yt-project.org/data. Start with the following script `grids.py` to render 90 frames rotating the dataset around the vertical axis
import yt
from numpy import pi
yt.enable_parallelism() # turn on MPI parallelism via mpi4py
ds = yt.load("Enzo_64/DD0043/data0043")
sc = yt.create_scene(ds, ('gas', 'density'))
cam = sc.camera
cam.resolution = (1024, 1024) # resolution of each frame
sc.annotate_domain(ds, color=[1, 1, 1, 0.005]) # draw the domain boundary [r,g,b,alpha]
sc.annotate_grids(ds, alpha=0.005) # draw the grid boundaries
sc.save('frame0000.png', sigma_clip=4)
nspin = 90
for i in cam.iter_rotate(pi, nspin): # rotate by 180 degrees over nspin frames
sc.save('frame%04d.png' % (i+1), sigma_clip=4)
and the job submission script `yt-mpi.sh`
#!/bin/bash
#SBATCH --time=0:30:00 # walltime in d-hh:mm or hh:mm:ss format
#SBATCH --ntasks=4 # number of MPI processes
#SBATCH --mem-per-cpu=3800
#SBATCH --account=...
source $HOME/astro/bin/activate
srun python grids.py
Then submit the job with `sbatch yt-mpi.sh`, wait for it to finish, and then create a movie at 30fps
$ ffmpeg -r 30 -i frame%04d.png -c:v libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" grids.mp4