From d2db6677410a60ccc213140f9fec98d35a61f24a Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 10 Nov 2025 20:09:54 +0100 Subject: [PATCH] helper scripts updated --- tools/build.bat | 26 ++++++++++++++++---------- tools/crosscompile.sh | 24 +++++++----------------- tools/inspect.bat | 19 +++++++++++-------- tools/make_example.py | 28 +++++++++++++++++++++++++++- tools/nativecompile.sh | 7 ------- 5 files changed, 61 insertions(+), 43 deletions(-) diff --git a/tools/build.bat b/tools/build.bat index dd18d79..d23372d 100644 --- a/tools/build.bat +++ b/tools/build.bat @@ -1,30 +1,36 @@ -echo ------------------------------ +python stencils/generate_stencils.py bin/stencils.c + +echo -------------x86_64 - 64 bit----------------- call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64 +echo - Compile stencil test... +cl /Zi /Od stencils\test.c /Fe:bin\test.exe + echo - Build runner for Windows 64 bit... cl /Zi /Od /DENABLE_BASIC_LOGGING src\coparun\runmem.c src\coparun\coparun.c src\coparun\mem_man.c /Fe:bin\coparun.exe REM Optimized: REM cl /O2 src\coparun\runmem.c src\coparun\coparun.c src\coparun\mem_man.c /Fe:bin\coparun.exe -echo - Build stencils for Windows 64 bit... -python stencils/generate_stencils.py --abi ms bin/stencils.c -wsl gcc -fno-pic -c bin/stencils.c -O3 -o src/copapy/obj/stencils_AMD64_O3.o +echo - Build stencils for 64 bit... +wsl gcc -fno-pic -c bin/stencils.c -O3 -o src/copapy/obj/stencils_x86_64_O3.o -echo ------------------------------ +echo ---------------x86 - 32 bit--------------- call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86 echo - Build runner for Windows 32 bit... cl /Zi /Od /DENABLE_BASIC_LOGGING src\coparun\runmem.c src\coparun\coparun.c src\coparun\mem_man.c /Fe:bin\coparun-x86.exe -echo - Build stencils for Windows 32 bit... +echo - Build runner for linux x86 32 bit... +wsl gcc -m32 -static -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -O3 -DENABLE_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun-i686 + +echo - Build stencils x86 32 bit... wsl gcc -m32 -fno-pic -c bin/stencils.c -O3 -o src/copapy/obj/stencils_x86_O3.o -echo ------------------------------ +echo --------------arm64 64 bit---------------- echo - Build stencils for aarch64... -python stencils/generate_stencils.py bin/stencils.c -wsl aarch64-linux-gnu-gcc -fno-pic -c bin/stencils.c -O3 -o src/copapy/obj/stencils_aarch64_O3.o +wsl aarch64-linux-gnu-gcc -fno-pic -c bin/stencils.c -O3 -o src/copapy/obj/stencils_arm64_O3.o echo ------------------------------ echo - Build runner for Aarch64... -wsl aarch64-linux-gnu-gcc -static -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -O3 -DENABLE_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun-aarch64 \ No newline at end of file +wsl aarch64-linux-gnu-gcc -static -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -O3 -DENABLE_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun-aarch64 diff --git a/tools/crosscompile.sh b/tools/crosscompile.sh index c50c5a8..7dfa5ef 100644 --- a/tools/crosscompile.sh +++ b/tools/crosscompile.sh @@ -13,29 +13,19 @@ mkdir -p $DEST # -------------- Compile stencils -------------- -# Windows x86_64 (ARM64) -python3 stencils/generate_stencils.py --abi ms $SRC -gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_AMD64_$OPT.o - -# Windows x86 -gcc-13 $FLAGS -m32 -$OPT -c $SRC -o $DEST/stencils_x86_$OPT.o - - -# Native x86_64 python3 stencils/generate_stencils.py $SRC + +# x86_64 gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_x86_64_$OPT.o -# Native i686 -cp $DEST/stencils_x86_$OPT.o $DEST/stencils_i686_$OPT.o +# x86 - 32 bit +gcc-13 $FLAGS -m32 -$OPT -c $SRC -o $DEST/stencils_x86_$OPT.o # ARM64 linux (aarch64) -aarch64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_aarch64_$OPT.o - -# ARM64 macos (copy aarch64) -cp $DEST/stencils_aarch64_$OPT.o $DEST/stencils_arm64_$OPT.o +aarch64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_arm64_$OPT.o # ARMv7 -arm-linux-gnueabihf-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_armv7_$OPT.o +arm-linux-gnueabihf-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_arm_$OPT.o # PowerPC64LE # powerpc64le-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_ppc64le_$OPT.o @@ -50,7 +40,7 @@ mips-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_mips_$OPT.o mipsel-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_mipsel_$OPT.o # RISCV 32 Bit -# riscv64-linux-gnu-gcc-13 $FLAGS -$OPT -march=rv32imac -mabi=ilp32 -c $SRC -o $DEST/stencils_riscv32_$OPT.o +# riscv64-linux-gnu-gcc-13 $FLAGS -$OPT -march=rv32imac -mabi=ilp32 -c $SRC -o $DEST/stencils_riscv_$OPT.o # RISCV 64 Bit riscv64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_riscv64_$OPT.o diff --git a/tools/inspect.bat b/tools/inspect.bat index f1441a5..fe41bb6 100644 --- a/tools/inspect.bat +++ b/tools/inspect.bat @@ -1,13 +1,16 @@ python tools/make_example.py -REM python tools/extract_code.py "bin/test.copapy" "bin/test.copapy.bin" -wsl qemu-aarch64 bin/coparun-aarch64 bin/test-aarch64.copapy bin/test-aarch64.copapy.bin -wsl aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x5000 bin/test-aarch64.copapy.bin +REM wsl qemu-aarch64 bin/coparun-aarch64 bin/test-aarch64.copapy bin/test-aarch64.copapy.bin +REM wsl aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x5000 bin/test-aarch64.copapy.bin -python tools/extract_code.py "bin/test-aarch64.copapy" "bin/test-aarch64.copapy2.bin" -wsl aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x5000 bin/test-aarch64.copapy2.bin +REM wsl aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x5000 bin/test-aarch64.copapy2.bin -REM wsl objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 bin/test.copapy.bin +bin\coparun bin/test.copapy bin/test.copapy.bin +wsl objdump -D -b binary -m i386:x86-64 --adjust-vma=0x500000 bin/test.copapy.bin -REM wsl aarch64-linux-gnu-objdump -d -x src/copapy/obj/stencils_aarch64_O3.o +REM wsl aarch64-linux-gnu-objdump -d -x src/copapy/obj/stencils_arm64_O3.o -REM wsl objdump -D -b binary -m i8086 --adjust-vma=0x5000 bin/test-x86.copapy.bin \ No newline at end of file +REM wsl objdump -D -b binary -m i386 --adjust-vma=0x5000 bin/test-x86.copapy.bin + + + +REM wsl objdump -d -x src/copapy/obj/stencils_x86_O3.o \ No newline at end of file diff --git a/tools/make_example.py b/tools/make_example.py index dddaad6..8513764 100644 --- a/tools/make_example.py +++ b/tools/make_example.py @@ -1,6 +1,7 @@ from copapy import variable from copapy.backend import Write, compile_to_dag, stencil_db_from_package from copapy._binwrite import Command +import copapy as cp def compile_to_x86_64() -> None: @@ -26,6 +27,30 @@ def compile_to_x86_64() -> None: dw.to_file('bin/test.copapy') +def compile_to_x86() -> None: + """Test compilation of a simple program for x86 32 bit.""" + c1 = variable(9.0) + + #ret = [c1 / 4, c1 / -4, c1 // 4, c1 // -4, (c1 * -1) // 4] + ret = [c1 // 3.3 + 5] + #ret = [cp.sqrt(c1)] + #c2 = cp._math.get_42() + #ret = [c2] + ret = [cp.sin(variable(2.5))] + + out = [Write(r) for r in ret] + + sdb = stencil_db_from_package('x86') + dw, _ = compile_to_dag(out, sdb) + + dw.write_com(Command.DUMP_CODE) + + print('* Data to runner:') + dw.print() + + dw.to_file('bin/test-x86.copapy') + + def compile_to_aarch64() -> None: """Test compilation of a simple program for aarch64.""" c1 = variable(9.0) @@ -38,7 +63,7 @@ def compile_to_aarch64() -> None: out = [Write(r) for r in ret] - sdb = stencil_db_from_package('aarch64') + sdb = stencil_db_from_package('arm64') dw, _ = compile_to_dag(out, sdb) dw.write_com(Command.DUMP_CODE) @@ -51,4 +76,5 @@ def compile_to_aarch64() -> None: if __name__ == "__main__": compile_to_x86_64() + compile_to_x86() compile_to_aarch64() diff --git a/tools/nativecompile.sh b/tools/nativecompile.sh index bbcbcd6..5b35a31 100644 --- a/tools/nativecompile.sh +++ b/tools/nativecompile.sh @@ -14,10 +14,3 @@ gcc-12 $FLAGS -c $SRC -O0 -o $DEST/stencils_x86_64_O0.o gcc-12 $FLAGS -c $SRC -O1 -o $DEST/stencils_x86_64_O1.o gcc-12 $FLAGS -c $SRC -O2 -o $DEST/stencils_x86_64_O2.o gcc-12 $FLAGS -c $SRC -O3 -o $DEST/stencils_x86_64_O3.o - -python stencils/generate_stencils.py --abi ms $SRC - -gcc-12 $FLAGS -c $SRC -O0 -o $DEST/stencils_AMD64_O0.o -gcc-12 $FLAGS -c $SRC -O1 -o $DEST/stencils_AMD64_O1.o -gcc-12 $FLAGS -c $SRC -O2 -o $DEST/stencils_AMD64_O2.o -gcc-12 $FLAGS -c $SRC -O3 -o $DEST/stencils_AMD64_O3.o \ No newline at end of file