Skip to content

Commit

Permalink
static and inline everywhere
Browse files Browse the repository at this point in the history
  • Loading branch information
martinjm97 committed Jan 9, 2024
1 parent cb1a82d commit 46e713f
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 46 deletions.
12 changes: 6 additions & 6 deletions enzyme/test/Integration/Sparse/ringspring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ extern void __enzyme_fwddiff(void *, ...);
extern double* __enzyme_todense(void *, ...) noexcept;


/// Compute energy
double f(size_t N, double* input) {
__attribute__((always_inline))
static double f(size_t N, double* input) {
double out = 0;
// __builtin_assume(!((N-1) == 0));
for (size_t i=0; i<N; i++) {
Expand All @@ -53,13 +53,13 @@ double f(size_t N, double* input) {
return out;
}

/// Perform dinput += gradient(f)
void grad_f(size_t N, double* input, double* dinput) {
__attribute__((always_inline))
static void grad_f(size_t N, double* input, double* dinput) {
__enzyme_autodiff((void*)f, enzyme_const, N, enzyme_dup, input, dinput);
}


void ident_store(double , int64_t idx, size_t i) {
__attribute__((always_inline))
static void ident_store(double , int64_t idx, size_t i) {
assert(0 && "should never load");
}

Expand Down
18 changes: 9 additions & 9 deletions enzyme/test/Integration/Sparse/ringspring3Dextenddata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ extern void __enzyme_fwddiff(void *, ...);
extern double* __enzyme_todense(void *, ...) noexcept;


/// Compute energy
double f(size_t N, double* pos) {
__attribute__((always_inline))
static double f(size_t N, double* pos) {
double e = 0.;
for (size_t i = 0; i < N; i += 3) {
double vx = pos[i];
Expand All @@ -57,31 +57,31 @@ double f(size_t N, double* pos) {
}


/// Perform dinput += gradient(f)
void grad_f(size_t N, double* input, double* dinput) {
__attribute__((always_inline))
static void grad_f(size_t N, double* input, double* dinput) {
__enzyme_autodiff((void*)f, enzyme_const, N, enzyme_dup, input, dinput);
}


void ident_store(double , int64_t idx, size_t i) {
__attribute__((always_inline))
static void ident_store(double , int64_t idx, size_t i) {
assert(0 && "should never load");
}

__attribute__((always_inline))
double ident_load(int64_t idx, size_t i, size_t N) {
static double ident_load(int64_t idx, size_t i, size_t N) {
idx /= sizeof(double);
return (double)(idx == i);// ? 1.0 : 0.0;
}

__attribute__((enzyme_sparse_accumulate))
void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
static void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
printf("row=%d col=%d val=%f\n", row, col % N, val);
// assert(abs(val) > 0.00001);
triplets.emplace_back(row % N, col % N, val);
}

__attribute__((always_inline))
void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
if (val == 0.0) return;
idx /= sizeof(double);
inner_store(i, idx, val, triplets);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ extern void __enzyme_fwddiff(void *, ...);
extern double* __enzyme_todense(void *, ...) noexcept;


/// Compute energy
double f(size_t N, double* pos) {
__attribute__((always_inline))
static double f(size_t N, double* pos) {
double e = 0.;
for (size_t i = 0; i < N; i += 3) {
double vx = pos[i];
Expand All @@ -59,48 +59,49 @@ double f(size_t N, double* pos) {
}


/// Perform dinput += gradient(f)
void grad_f(size_t N, double* input, double* dinput) {
__attribute__((always_inline))
static void grad_f(size_t N, double* input, double* dinput) {
__enzyme_autodiff((void*)f, enzyme_const, N, enzyme_dup, input, dinput);
}


void ident_store(double , int64_t idx, size_t i) {
__attribute__((always_inline))
static void ident_store(double , int64_t idx, size_t i) {
assert(0 && "should never load");
}

__attribute__((always_inline))
double ident_load(int64_t idx, size_t i, size_t N) {
static double ident_load(int64_t idx, size_t i, size_t N) {
idx /= sizeof(double);
return (double)(idx == i);// ? 1.0 : 0.0;
}

__attribute__((enzyme_sparse_accumulate))
void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
static void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
printf("row=%d col=%d val=%f\n", row, col % N, val);
// assert(abs(val) > 0.00001);
triplets.emplace_back(row % N, col % N, val);
}

__attribute__((always_inline))
void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
if (val == 0.0) return;
idx /= sizeof(double);
inner_store(i, idx, val, triplets);
}

__attribute__((always_inline))
double sparse_load(int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static double sparse_load(int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
return 0.0;
}

__attribute__((always_inline))
void never_store(double val, int64_t idx, double* input, size_t N) {
static void never_store(double val, int64_t idx, double* input, size_t N) {
assert(0 && "this is a read only input, why are you storing here...");
}

__attribute__((always_inline))
double mod_load(int64_t idx, double* input, size_t N) {
static double mod_load(int64_t idx, double* input, size_t N) {
idx /= sizeof(double);
return input[idx % N];
}
Expand Down
23 changes: 12 additions & 11 deletions enzyme/test/Integration/Sparse/ringspring3Drestlengthone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ extern void __enzyme_fwddiff(void *, ...);
extern double* __enzyme_todense(void *, ...) noexcept;


/// Compute energy
double f(size_t N, double* pos) {
__attribute__((always_inline))
static double f(size_t N, double* pos) {
double e = 0.;
for (size_t i = 0; i < N; i += 3) {
double vx = pos[i];
Expand All @@ -59,48 +59,49 @@ double f(size_t N, double* pos) {
}


/// Perform dinput += gradient(f)
void grad_f(size_t N, double* input, double* dinput) {
__attribute__((always_inline))
static void grad_f(size_t N, double* input, double* dinput) {
__enzyme_autodiff((void*)f, enzyme_const, N, enzyme_dup, input, dinput);
}


void ident_store(double , int64_t idx, size_t i) {
__attribute__((always_inline))
static void ident_store(double , int64_t idx, size_t i) {
assert(0 && "should never load");
}

__attribute__((always_inline))
double ident_load(int64_t idx, size_t i, size_t N) {
static double ident_load(int64_t idx, size_t i, size_t N) {
idx /= sizeof(double);
return (double)(idx == i);// ? 1.0 : 0.0;
}

__attribute__((enzyme_sparse_accumulate))
void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
static void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
printf("row=%d col=%d val=%f\n", row, col % N, val);
// assert(abs(val) > 0.00001);
triplets.emplace_back(row % N, col % N, val);
}

__attribute__((always_inline))
void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
if (val == 0.0) return;
idx /= sizeof(double);
inner_store(i, idx, val, triplets);
}

__attribute__((always_inline))
double sparse_load(int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static double sparse_load(int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
return 0.0;
}

__attribute__((always_inline))
void never_store(double val, int64_t idx, double* input, size_t N) {
static void never_store(double val, int64_t idx, double* input, size_t N) {
assert(0 && "this is a read only input, why are you storing here...");
}

__attribute__((always_inline))
double mod_load(int64_t idx, double* input, size_t N) {
static double mod_load(int64_t idx, double* input, size_t N) {
idx /= sizeof(double);
return input[idx % N];
}
Expand Down
19 changes: 10 additions & 9 deletions enzyme/test/Integration/Sparse/sqrtspring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ extern void __enzyme_fwddiff(void *, ...);
extern double* __enzyme_todense(void *, ...) noexcept;


/// Compute energy
double f(size_t N, double* input) {
__attribute__((always_inline))
static double f(size_t N, double* input) {
double out = 0;
__builtin_assume(!((N-1) == 0));
for (size_t i=0; i<N-1; i++) {
Expand All @@ -48,38 +48,39 @@ double f(size_t N, double* input) {
return out;
}

/// Perform dinput += gradient(f)
void grad_f(size_t N, double* input, double* dinput) {
__attribute__((always_inline))
static void grad_f(size_t N, double* input, double* dinput) {
__enzyme_autodiff((void*)f, enzyme_const, N, enzyme_dup, input, dinput);
}


void ident_store(double , int64_t idx, size_t i) {
__attribute__((always_inline))
static void ident_store(double , int64_t idx, size_t i) {
assert(0 && "should never load");
}

__attribute__((always_inline))
double ident_load(int64_t idx, size_t i, size_t N) {
static double ident_load(int64_t idx, size_t i, size_t N) {
idx /= sizeof(double);
return (double)(idx == i);// ? 1.0 : 0.0;
}

__attribute__((enzyme_sparse_accumulate))
void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
static void inner_store(int64_t row, int64_t col, double val, std::vector<triple> &triplets) {
printf("row=%d col=%d val=%f\n", row, col, val);
assert(abs(val) > 0.00001);
triplets.emplace_back(row, col, val);
}

__attribute__((always_inline))
void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static void sparse_store(double val, int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
if (val == 0.0) return;
idx /= sizeof(double);
inner_store(i, idx, val, triplets);
}

__attribute__((always_inline))
double sparse_load(int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
static double sparse_load(int64_t idx, size_t i, size_t N, std::vector<triple> &triplets) {
return 0.0;
}

Expand Down

0 comments on commit 46e713f

Please sign in to comment.