From 63e3d3a8781fa2bb07ab495c37f0fd50e5189e3a Mon Sep 17 00:00:00 2001 From: unknown <> Date: Fri, 15 Mar 2024 18:12:47 -0400 Subject: [PATCH] static inline core functions --- src/main/c/compile.sh | 26 +++++++++++++------------- src/main/c/includes/mainFunctions.h | 25 +++++++++++-------------- src/main/c/includes/simulation.h | 8 ++++++++ src/main/c/src/densitystep.c | 6 +++--- src/main/c/src/fluidsim.c | 5 +++++ src/main/c/src/javainterface.c | 2 +- src/main/c/src/velocitystep.c | 24 ++++++++++++------------ 7 files changed, 53 insertions(+), 43 deletions(-) create mode 100644 src/main/c/includes/simulation.h diff --git a/src/main/c/compile.sh b/src/main/c/compile.sh index 16ee660..7efde55 100644 --- a/src/main/c/compile.sh +++ b/src/main/c/compile.sh @@ -41,20 +41,20 @@ rm -f ./*.dll #compile object files -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" -INPUT_FILES="./src/densitystep.c" -OUTPUT_FILE="./densitystep.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE +# COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" +# INPUT_FILES="./src/densitystep.c" +# OUTPUT_FILE="./densitystep.o" +# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" -INPUT_FILES="./src/velocitystep.c" -OUTPUT_FILE="./velocitystep.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE +# COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" +# INPUT_FILES="./src/velocitystep.c" +# OUTPUT_FILE="./velocitystep.o" +# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE -COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" -INPUT_FILES="./src/chunkmask.c" -OUTPUT_FILE="./chunkmask.o" -gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE +# COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" +# INPUT_FILES="./src/chunkmask.c" +# OUTPUT_FILE="./chunkmask.o" +# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow" INPUT_FILES="./src/javainterface.c" @@ -71,7 +71,7 @@ gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OU #compile shared object file OUTPUT_FILE="libfluidsim$LIB_ENDING" COMPILE_FLAGS="-shared" -INPUT_FILES="fluidsim.o javainterface.o chunkmask.o velocitystep.o densitystep.o" +INPUT_FILES="fluidsim.o javainterface.o" gcc $COMPILE_FLAGS $INPUT_FILES -o $OUTPUT_FILE #move to resources diff --git a/src/main/c/includes/mainFunctions.h b/src/main/c/includes/mainFunctions.h index 39625a1..0d6040b 100644 --- a/src/main/c/includes/mainFunctions.h +++ b/src/main/c/includes/mainFunctions.h @@ -1,16 +1,13 @@ #ifndef MAINFUNC #define MAINFUNC -#include "./chunk.h" - -void simulate(int numChunks, Chunk ** passedInChunks, jfloat timestep); /* * Class: electrosphere_FluidSim * Method: addSourceToVectors * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void addSourceToVectors +static inline void addSourceToVectors (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -18,7 +15,7 @@ void addSourceToVectors * Method: solveVectorDiffuse * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void solveVectorDiffuse +static inline void solveVectorDiffuse (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -26,7 +23,7 @@ void solveVectorDiffuse * Method: setupProjection * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void setupProjection +static inline void setupProjection ( int N, int chunk_mask, @@ -44,7 +41,7 @@ void setupProjection * Method: solveProjection * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void solveProjection +static inline void solveProjection (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -52,7 +49,7 @@ void solveProjection * Method: finalizeProjection * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void finalizeProjection +static inline void finalizeProjection (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -60,7 +57,7 @@ void finalizeProjection * Method: advectVectors * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void advectVectors +static inline void advectVectors (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -68,7 +65,7 @@ void advectVectors * Method: addDensity * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;F)V */ -void addDensity +static inline void addDensity (int, int, float **, float **, float); /* @@ -76,7 +73,7 @@ void addDensity * Method: solveDiffuseDensity * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void solveDiffuseDensity +static inline void solveDiffuseDensity (int, int, float **, float **, float **, float **, float **, float, float, float); /* @@ -84,16 +81,16 @@ void solveDiffuseDensity * Method: advectDensity * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt); +static inline void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt); -void setBoundsToNeighborsRaw +static inline void setBoundsToNeighborsRaw ( int N, int chunk_mask, int vector_dir, float ** neighborArray); -void copyNeighborsRaw +static inline void copyNeighborsRaw ( int N, int chunk_mask, diff --git a/src/main/c/includes/simulation.h b/src/main/c/includes/simulation.h new file mode 100644 index 0000000..4f86ca5 --- /dev/null +++ b/src/main/c/includes/simulation.h @@ -0,0 +1,8 @@ +#ifndef SIMULATION_H +#define SIMULATION_H + +#include "./chunk.h" + +void simulate(int numChunks, Chunk ** passedInChunks, float timestep); + +#endif \ No newline at end of file diff --git a/src/main/c/src/densitystep.c b/src/main/c/src/densitystep.c index 0f522de..f3a9326 100644 --- a/src/main/c/src/densitystep.c +++ b/src/main/c/src/densitystep.c @@ -9,7 +9,7 @@ /** * Adds density to the density array */ -void addDensity( +static inline void addDensity( int N, int chunk_mask, float ** d, @@ -28,7 +28,7 @@ void addDensity( /* * A single iteration of the jacobi to solve density diffusion */ -void solveDiffuseDensity( +static inline void solveDiffuseDensity( int N, int chunk_mask, float ** d, @@ -79,7 +79,7 @@ void solveDiffuseDensity( /** * Advects the density based on the vectors */ -void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt){ +static inline void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt){ int i, j, k, i0, j0, k0, i1, j1, k1; int m,n,o; float x, y, z, s0, t0, s1, t1, u1, u0, dtx,dty,dtz; diff --git a/src/main/c/src/fluidsim.c b/src/main/c/src/fluidsim.c index 124a41a..d04b4cb 100644 --- a/src/main/c/src/fluidsim.c +++ b/src/main/c/src/fluidsim.c @@ -4,6 +4,11 @@ #include "../includes/electrosphere_FluidSim.h" #include "../includes/mainFunctions.h" #include "../includes/chunk.h" +#include "../includes/simulation.h" + +#include "./chunkmask.c" +#include "./velocitystep.c" +#include "./densitystep.c" #define DIM 18 diff --git a/src/main/c/src/javainterface.c b/src/main/c/src/javainterface.c index a59dea9..ef4e558 100644 --- a/src/main/c/src/javainterface.c +++ b/src/main/c/src/javainterface.c @@ -8,8 +8,8 @@ //local includes #include "../includes/chunk.h" #include "../includes/chunkmask.h" -#include "../includes/mainFunctions.h" #include "../includes/utilities.h" +#include "../includes/simulation.h" //defines diff --git a/src/main/c/src/velocitystep.c b/src/main/c/src/velocitystep.c index 1c1ee55..66fad18 100644 --- a/src/main/c/src/velocitystep.c +++ b/src/main/c/src/velocitystep.c @@ -16,14 +16,14 @@ #define LINEARSOLVERTIMES 20 -void add_source(int N, float * x, float * s, float dt); -void advect(uint32_t chunk_mask, int N, int b, float ** jrd, float ** jrd0, float * u, float * v, float * w, float dt); +static inline void add_source(int N, float * x, float * s, float dt); +static inline void advect(uint32_t chunk_mask, int N, int b, float ** jrd, float ** jrd0, float * u, float * v, float * w, float dt); /* * Adds force to all vectors */ -void addSourceToVectors +static inline void addSourceToVectors ( int N, int chunk_mask, @@ -44,7 +44,7 @@ void addSourceToVectors /** * Adds from a source array to a destination array */ -void add_source(int N, float * x, float * s, float dt){ +static inline void add_source(int N, float * x, float * s, float dt){ int i; int size=N*N*N; for(i=0; i