Skip to content
Snippets Groups Projects
Commit 4ddc2588 authored by Jean-Noël Grad's avatar Jean-Noël Grad
Browse files

Separate compilation

parent 4cf0a4b4
Branches mwe-avx
No related merge requests found
Pipeline #37136 passed with stage
in 4 minutes and 46 seconds
waLBerla_link_files_to_builddir( *.prm *.py) waLBerla_link_files_to_builddir( *.prm *.py)
waLBerla_generate_target_from_python(NAME LatticeModelGenerated FILE LatticeModel.py waLBerla_generate_target_from_python(NAME LatticeModelGenerated FILE ExampleApp.py
OUT_FILES CumulantMRTSweep.h CumulantMRTSweep.cpp CumulantMRTPackInfo.h CumulantMRTPackInfo.cpp InitialPDFsSetter.h InitialPDFsSetter.cpp CumulantMRTNoSlip.h CumulantMRTNoSlip.cpp OUT_FILES CumulantMRTSweep.h CumulantMRTSweep.cpp CumulantMRTPackInfo.h CumulantMRTPackInfo.cpp InitialPDFsSetter.h InitialPDFsSetter.cpp CumulantMRTNoSlip.h CumulantMRTNoSlip.cpp
CumulantMRTSweepAVX.h CumulantMRTSweepAVX.cpp CumulantMRTPackInfoAVX.h CumulantMRTPackInfoAVX.cpp InitialPDFsSetterAVX.h InitialPDFsSetterAVX.cpp CumulantMRTNoSlipAVX.h CumulantMRTNoSlipAVX.cpp )
waLBerla_generate_target_from_python(NAME LatticeModelGeneratedAVX FILE ExampleAppAVX.py
OUT_FILES CumulantMRTSweepAVX.h CumulantMRTSweepAVX.cpp CumulantMRTPackInfoAVX.h CumulantMRTPackInfoAVX.cpp InitialPDFsSetterAVX.h InitialPDFsSetterAVX.cpp CumulantMRTNoSlipAVX.h CumulantMRTNoSlipAVX.cpp
) )
target_compile_options(LatticeModelGenerated PRIVATE -mavx2) target_compile_options(LatticeModelGenerated PRIVATE -mavx2)
target_compile_options(LatticeModelGeneratedAVX PRIVATE -mavx2)
waLBerla_add_executable ( NAME ExampleAppCodegen waLBerla_add_executable ( NAME ExampleAppCodegen
FILES ExampleApp.cpp FILES ExampleApp.cpp
DEPENDS blockforest core field lbm geometry timeloop gui DEPENDS blockforest core field lbm geometry timeloop gui
LatticeModelGenerated) LatticeModelGenerated)
target_compile_options(ExampleAppCodegen PRIVATE -mavx2) target_compile_options(ExampleAppCodegen PRIVATE -mavx2)
waLBerla_add_executable ( NAME ExampleAppCodegenAVX
FILES ExampleApp.cpp
DEPENDS blockforest core field lbm geometry timeloop gui
LatticeModelGeneratedAVX)
target_compile_options(ExampleAppCodegenAVX PRIVATE -mavx2 -DWALBERLA_BUILD_WITH_AVX)
...@@ -71,16 +71,8 @@ cpu_vectorize_info = { ...@@ -71,16 +71,8 @@ cpu_vectorize_info = {
params_cpu = {"target": ps.Target.CPU} params_cpu = {"target": ps.Target.CPU}
params_avx = {"target": ps.Target.CPU, "cpu_vectorize_info": cpu_vectorize_info} params_avx = {"target": ps.Target.CPU, "cpu_vectorize_info": cpu_vectorize_info}
with CodeGeneration() as ctx: def generate(ctx, optim, params):
for optim, params in zip(("", "AVX"), (params_cpu, params_avx)): generate_sweep(ctx, f"CumulantMRTSweep{optim}", lbm_update_rule, field_swaps=[(pdfs, pdfs_tmp)], **params)
print(f"generating kernels for CPU {optim}") generate_pack_info_from_kernel(ctx, f"CumulantMRTPackInfo{optim}", lbm_update_rule, **params)
""" generate_sweep(ctx, f"InitialPDFsSetter{optim}", pdfs_setter, **params)
generate_sweep(ctx, f"CumulantMRTSweep{optim}", lbm_update_rule, field_swaps=[(pdfs, pdfs_tmp)], **params) generate_boundary(ctx, f"CumulantMRTNoSlip{optim}", NoSlip(), lbm_method, **params)
generate_pack_info_from_kernel(ctx, f"CumulantMRTPackInfo{optim}", lbm_update_rule, **params)
generate_sweep(ctx, f"InitialPDFsSetter{optim}", pdfs_setter, **params)
generate_boundary(ctx, f"CumulantMRTNoSlip{optim}", NoSlip(), lbm_method, **params)
"""
generate_sweep(ctx, f"CumulantMRTSweep{optim}", lbm_update_rule, field_swaps=[(pdfs, pdfs_tmp)], **params)
generate_pack_info_from_kernel(ctx, f"CumulantMRTPackInfo{optim}", lbm_update_rule, **params)
generate_sweep(ctx, f"InitialPDFsSetter{optim}", pdfs_setter, **params)
generate_boundary(ctx, f"CumulantMRTNoSlip{optim}", NoSlip(), lbm_method, **params)
...@@ -14,13 +14,6 @@ VERSION=0.4.4 DEPS="/work/jgrad/walberla_deps" PYTHONPATH="${DEPS}/${VERSION}/lb ...@@ -14,13 +14,6 @@ VERSION=0.4.4 DEPS="/work/jgrad/walberla_deps" PYTHONPATH="${DEPS}/${VERSION}/lb
VERSION=0.4.4 DEPS="/work/jgrad/walberla_deps" PYTHONPATH="${DEPS}/${VERSION}/lbmpy:${DEPS}/${VERSION}/pystencils:${DEPS}/devel/walberla/python/" make -j$(nproc) VERSION=0.4.4 DEPS="/work/jgrad/walberla_deps" PYTHONPATH="${DEPS}/${VERSION}/lbmpy:${DEPS}/${VERSION}/pystencils:${DEPS}/devel/walberla/python/" make -j$(nproc)
``` ```
Then compile the AVX binary separately with:
```sh
(cd /work/jgrad/walberla_deps/devel/example_app/build/apps/example_app_codegen && /usr/bin/ccache /usr/bin/clang++ -DBOOST_ALL_NO_LIB -I/work/jgrad/walberla_deps/devel/example_app/build/walberla/src -I/work/jgrad/walberla_deps/devel/walberla/src -I/work/jgrad/walberla_deps/devel/example_app/build/apps/example_app_codegen/default_codegen -isystem /work/jgrad/walberla_deps/devel/example_app/src -isystem /work/jgrad/walberla_deps/devel/example_app/build/src -isystem /work/jgrad/walberla_deps/0.4.4/pystencils/pystencils/include -isystem /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include -Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments -pthread -pthread -g -std=gnu++17 -DWALBERLA_BUILD_WITH_AVX -mavx2 -o CMakeFiles/ExampleAppCodegen.dir/ExampleAppAVX.cpp.o -c /work/jgrad/walberla_deps/devel/example_app/apps/example_app_codegen/ExampleApp.cpp)
(cd /work/jgrad/walberla_deps/devel/example_app/build/apps/example_app_codegen && /tikhome/jgrad/.local/lib/python3.8/site-packages/cmake/data/bin/cmake -E cmake_link_script CMakeFiles/ExampleAppCodegen.dir/link.txt --verbose=1
/usr/bin/clang++ -Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments -pthread -pthread -g CMakeFiles/ExampleAppCodegen.dir/ExampleAppAVX.cpp.o -o ExampleAppCodegenAVX -Wl,-rpath,/usr/lib/x86_64-linux-gnu/openmpi/lib ../../walberla/src/blockforest/libblockforest.a ../../walberla/src/core/libcore.a ../../walberla/src/field/libfield.a ../../walberla/src/lbm/liblbm.a ../../walberla/src/geometry/libgeometry.a ../../walberla/src/timeloop/libtimeloop.a ../../walberla/src/gui/libgui.a libLatticeModelGenerated.a ../../walberla/src/domain_decomposition/libdomain_decomposition.a ../../walberla/src/vtk/libvtk.a ../../walberla/src/boundary/libboundary.a ../../walberla/src/blockforest/libblockforest.a ../../walberla/src/core/libcore.a ../../walberla/src/field/libfield.a ../../walberla/src/lbm/liblbm.a ../../walberla/src/geometry/libgeometry.a ../../walberla/src/timeloop/libtimeloop.a ../../walberla/src/gui/libgui.a libLatticeModelGenerated.a ../../walberla/src/domain_decomposition/libdomain_decomposition.a ../../walberla/src/vtk/libvtk.a ../../walberla/src/boundary/libboundary.a ../../walberla/src/blockforest/libblockforest.a ../../walberla/src/core/libcore.a ../../walberla/src/field/libfield.a ../../walberla/src/lbm/liblbm.a ../../walberla/src/geometry/libgeometry.a ../../walberla/src/timeloop/libtimeloop.a ../../walberla/src/gui/libgui.a libLatticeModelGenerated.a ../../walberla/src/domain_decomposition/libdomain_decomposition.a ../../walberla/src/vtk/libvtk.a ../../walberla/src/boundary/libboundary.a /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_cxx.so /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so /usr/lib/libpfft.so /usr/lib/x86_64-linux-gnu/libfftw3.so /usr/lib/x86_64-linux-gnu/libfftw3_mpi.so ../../walberla/extern/lodepng/liblodepng.a /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_cxx.so /usr/lib/libpfft.so /usr/lib/x86_64-linux-gnu/libfftw3.so /usr/lib/x86_64-linux-gnu/libfftw3_mpi.so)
```
Run the binaries with the parameter files: Run the binaries with the parameter files:
```sh ```sh
apps/example_app_codegen/ExampleAppCodegen ../apps/example_app_codegen/ExampleApp.prm apps/example_app_codegen/ExampleAppCodegen ../apps/example_app_codegen/ExampleApp.prm
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment