From 10f3408f0f47e69d70a99863fb94a904c4edc620 Mon Sep 17 00:00:00 2001 From: unknown <> Date: Sun, 16 Jul 2023 21:41:35 -0400 Subject: [PATCH] Parallelize part of code --- shared-folder/libfluidsim.dll | Bin 46924 -> 0 bytes src/main/c/compile.sh | 2 +- src/main/c/fluidsim.c | 123 +++++++++++++++++-- src/main/c/includes/electrosphere_FluidSim.h | 4 +- src/main/java/electrosphere/FluidSim.java | 4 +- 5 files changed, 117 insertions(+), 16 deletions(-) delete mode 100644 shared-folder/libfluidsim.dll diff --git a/shared-folder/libfluidsim.dll b/shared-folder/libfluidsim.dll deleted file mode 100644 index ae966ffa5d04f5551322516203147a0b21c899db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46924 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 I{a)(-0y8U#V*mgE diff --git a/src/main/c/compile.sh b/src/main/c/compile.sh index a64a457..819c3af 100644 --- a/src/main/c/compile.sh +++ b/src/main/c/compile.sh @@ -40,7 +40,7 @@ rm -f ./*.dll #compile object files -COMPILE_FLAGS="-c -fPIC -m64" +COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2" INPUT_FILES="./fluidsim.c" OUTPUT_FILE="./fluidsim.o" gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE diff --git a/src/main/c/fluidsim.c b/src/main/c/fluidsim.c index 2ec4474..e7189ee 100644 --- a/src/main/c/fluidsim.c +++ b/src/main/c/fluidsim.c @@ -1,6 +1,6 @@ #include #include - +#include #define SWAP(x0,x) {float *tmp=x0;x0=x;x=tmp;} @@ -128,7 +128,7 @@ void advect(int N, int b, float * d, float * d0, float * u, float * v, float * w void dens_step(int N, float * x, float * x0, float * u, float * v, float * w, float diff, float dt){ - // add_source ( N, x, x0, dt ); + add_source(N, x, x0, dt); SWAP(x0, x); diffuse(N, 0, x, x0, diff, dt); SWAP(x0, x); @@ -155,6 +155,8 @@ void vel_step(int N, float * u, float * v, float * w, float * u0, float * v0, fl project(N, u, v, w, u0, v0); } +float container[16]; + void project(int N, float * u, float * v, float * w, float * p, float * div){ int i, j, k; @@ -168,11 +170,65 @@ void project(int N, float * u, float * v, float * w, float * p, float * div){ lin_solve(N, 0, p, div, 1, 6); - for ( i=1 ; i 0.0f){ + // // printf("%f, %f\n",x[IX(i,j,2)],x0[IX(i,j,2)]); + // // } + // //vectorize solve as many as can be packed into vector ops + // //because we're operating on the innermost loop, guaranteed that k is align memory wise for all offsets + // for(i=2; i+8 0.0f){ + // // printf("%f, %f\n",x[IX(i,j,2)],x0[IX(i,j,2)]); + // // } + // for(int n = 2; n