|
|
# CyclesPhi
|
|
|
|
|
|
We have modified the kernel of the Blender Cycles rendering engine and then extended its capabilities to support the HPC environment. We call this version the CyclesPhi and it supports following technologies:
|
|
|
* OpenMP
|
|
|
* MPI
|
|
|
* Intel® Xeon Phi™ with Offload concept
|
|
|
* Intel® Xeon Phi™ with Symmetric mode
|
|
|
* And their combinations
|
|
|
|
|
|
![blender_mpi_settings](/uploads/fa14ea464196200efa92f760eb233cfb/blender_mpi_settings.png)
|
|
|
![blender_rendering_settings](/uploads/e0d0f4c73c6e13570420e875ea02e9c2/blender_rendering_settings.png)
|
|
|
|
|
|
## Rendering using Intel® Xeon Phi™ and MPI
|
|
|
### Rendering using OpenMP, Symmetric mode and MPI
|
|
|
build flags:
|
|
|
* blender: WITH_IT4I_MPI=ON
|
|
|
* client-cpu: WITH_IT4I_MIC_NATIVE=OFF, WITH_IT4I_MIC_OFFLOAD=OFF
|
|
|
* client-mic: WITH_IT4I_MIC_NATIVE=ON, WITH_IT4I_MIC_OFFLOAD=OFF
|
|
|
|
|
|
![omp_symmetric_mpi](/uploads/eae5e8081038025ceecbc3c5bfd1efb4/omp_symmetric_mpi.png)
|
|
|
|
|
|
### Rendering using OpenMP, Offload and MPI
|
|
|
build flags:
|
|
|
* blender: WITH_IT4I_MPI=ON
|
|
|
* client: WITH_IT4I_MIC_NATIVE=OFF, WITH_IT4I_MIC_OFFLOAD=ON
|
|
|
|
|
|
![omp_offload_mpi](/uploads/eda370edaaa626e1c8c4c5e7cf651032/omp_offload_mpi.png)
|
|
|
|
|
|
## Building and running CyclesPhi
|
|
|
### Building Blender 2.77a with Intel Compiler 2016
|
|
|
* https://wiki.blender.org/index.php/Dev:Doc/Building_Blender
|
|
|
* Intel® Parallel Studio XE Cluster Edition (free for students)
|
|
|
* Intel® Manycore Platform Software Stack (Intel® MPSS)
|
|
|
* Microsoft Visual Studio 2013 (Windows) or Netbeans 8.1, CMake 3.3, GCC 5.3 (Linux)
|
|
|
* Libraries (GCC/ICC): boost (./bjam install toolset=intel), ilmbase, openexr, tiff, openimageio, zlib, Python, …
|
|
|
|
|
|
## Building CyclesPhi with Intel Compiler 2016
|
|
|
git clone git@code.it4i.cz:blender/cyclesphi.git
|
|
|
new build flags:
|
|
|
blender
|
|
|
WITH_IT4I_MIC_OFFLOAD=ON/OFF
|
|
|
WITH_IT4I_MPI=ON/OFF
|
|
|
WITH_OPENMP=ON/OFF (old flag)
|
|
|
client
|
|
|
WITH_IT4I_MIC_NATIVE=ON/OFF
|
|
|
WITH_IT4I_MIC_OFFLOAD=ON/OFF
|
|
|
|
|
|
new folders:
|
|
|
it4i/client
|
|
|
api/client_api.h – main header with predefined communication tags and structures
|
|
|
cycles_mic – the shared libraries to rendering on Intel Xeon Phi
|
|
|
cycles_mpi – the shared libraries to communication with Blender (root)
|
|
|
cycles_omp - the shared libraries to rendering on CPU using OpenMP
|
|
|
main – blender_client application
|
|
|
|
|
|
it4i/scripts (created for Salomon supercomputer with PBS job management system)
|
|
|
build_lib.sh – build some basic libraries (boost, …)
|
|
|
build_blender.sh – build Blender CyclesPhi, which supports Intel Xeon Phi
|
|
|
run_blender.sh – run Blender CyclesPhi without MPI
|
|
|
run_mpi.sh – run Blender CyclesPhi with MPI support
|
|
|
|
|
|
Run CyclesPhi
|
|
|
New scripts in it4i/scripts (created for Salomon supercomputer):
|
|
|
run_blender.sh – run Blender CyclesPhi without MPI
|
|
|
./${ROOT_DIR}/install/blender/Blender
|
|
|
run_mpi.sh – run Blender CyclesPhi with MPI (only CPU / MIC‘s offload mode)
|
|
|
mpirun -n 1 ${ROOT_DIR}/install/blender/blender : -n 1 ${ROOT_DIR}/install/blender_client/bin/blender_client
|
|
|
run_mpi_mic.sh – run Blender CyclesPhi with MPI support with Symmetric mode
|
|
|
mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH -machine $NODEFILECN -n 1 ${ROOT_DIR}/install/blender/blender : -n $NUMOFCN ${ROOT_DIR}/install/blender_client/bin/blender_client
|
|
|
|