Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
SWIFTsim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SWIFT
SWIFTsim
Commits
ec5ed5de
Commit
ec5ed5de
authored
7 years ago
by
James Willis
Browse files
Options
Downloads
Patches
Plain Diff
Created an inline function to set a vector to all zeros.
parent
2b655f78
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!440
Dopair2 vectorisation
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/hydro/Gadget2/hydro_iact.h
+4
-4
4 additions, 4 deletions
src/hydro/Gadget2/hydro_iact.h
src/runner_doiact_vec.c
+48
-66
48 additions, 66 deletions
src/runner_doiact_vec.c
src/vector.h
+14
-0
14 additions, 0 deletions
src/vector.h
with
66 additions
and
70 deletions
src/hydro/Gadget2/hydro_iact.h
+
4
−
4
View file @
ec5ed5de
...
...
@@ -593,7 +593,7 @@ runner_iact_nonsym_1_vec_force(
vector
piax
,
piay
,
piaz
;
vector
pih_dt
;
vector
v_sig
;
vector
omega_ij
,
mu_ij
,
fac_mu
,
balsara
;
vector
omega_ij
,
mu_ij
,
balsara
;
vector
rho_ij
,
visc
,
visc_term
,
sph_term
,
acc
,
entropy_dt
;
/* Fill vectors. */
...
...
@@ -607,7 +607,7 @@ runner_iact_nonsym_1_vec_force(
const
vector
balsara_j
=
vector_load
(
Balsara_j
);
const
vector
cj
=
vector_load
(
Cj
);
fac_mu
.
v
=
vec_set1
(
1
.
f
);
/* Will change with cosmological integration */
const
vector
fac_mu
=
vec
tor
_set1
(
1
.
f
);
/* Will change with cosmological integration */
/* Load stuff. */
balsara
.
v
=
vec_add
(
balsara_i
.
v
,
balsara_j
.
v
);
...
...
@@ -720,7 +720,7 @@ runner_iact_nonsym_2_vec_force(
vector
piax
,
piay
,
piaz
;
vector
pih_dt
;
vector
v_sig
;
vector
omega_ij
,
mu_ij
,
fac_mu
,
balsara
;
vector
omega_ij
,
mu_ij
,
balsara
;
vector
rho_ij
,
visc
,
visc_term
,
sph_term
,
acc
,
entropy_dt
;
vector
r_2
,
ri_2
;
...
...
@@ -772,7 +772,7 @@ runner_iact_nonsym_2_vec_force(
const
vector
hj_inv
=
vector_load
(
Hj_inv
);
const
vector
hj_inv_2
=
vector_load
(
&
Hj_inv
[
VEC_SIZE
]);
fac_mu
.
v
=
vec_set1
(
1
.
f
);
/* Will change with cosmological integration */
const
vector
fac_mu
=
vec
tor
_set1
(
1
.
f
);
/* Will change with cosmological integration */
/* Find the balsara switch. */
balsara
.
v
=
vec_add
(
balsara_i
.
v
,
balsara_j
.
v
);
...
...
This diff is collapsed.
Click to expand it.
src/runner_doiact_vec.c
+
48
−
66
View file @
ec5ed5de
...
...
@@ -583,21 +583,18 @@ __attribute__((always_inline)) INLINE void runner_doself1_density_vec(
const
float
hig2
=
hi
*
hi
*
kernel_gamma2
;
const
vector
v_hig2
=
vector_set1
(
hig2
);
/* Reset cumulative sums of update vectors. */
vector
v_rhoSum
,
v_rho_dhSum
,
v_wcountSum
,
v_wcount_dhSum
,
v_div_vSum
,
v_curlvxSum
,
v_curlvySum
,
v_curlvzSum
;
/* Get the inverse of hi. */
vector
v_hi_inv
=
vec_reciprocal
(
v_hi
);
v_rhoSum
.
v
=
vec_setzero
();
v_rho_dhSum
.
v
=
vec_setzero
();
v_wcountSum
.
v
=
vec_setzero
();
v_wcount_dhSum
.
v
=
vec_setzero
();
v_div_vSum
.
v
=
vec_setzero
();
v_curlvxSum
.
v
=
vec_setzero
();
v_curlvySum
.
v
=
vec_setzero
();
v_curlvzSum
.
v
=
vec_setzero
();
/* Reset cumulative sums of update vectors. */
vector
v_rhoSum
=
vector_setzero
();
vector
v_rho_dhSum
=
vector_setzero
();
vector
v_wcountSum
=
vector_setzero
();
vector
v_wcount_dhSum
=
vector_setzero
();
vector
v_div_vSum
=
vector_setzero
();
vector
v_curlvxSum
=
vector_setzero
();
vector
v_curlvySum
=
vector_setzero
();
vector
v_curlvzSum
=
vector_setzero
();
/* Pad cache if there is a serial remainder. */
int
count_align
=
count
;
...
...
@@ -798,19 +795,16 @@ __attribute__((always_inline)) INLINE void runner_doself2_force_vec(
const
float
hig2
=
hi
*
hi
*
kernel_gamma2
;
const
vector
v_hig2
=
vector_set1
(
hig2
);
/* Reset cumulative sums of update vectors. */
vector
v_a_hydro_xSum
,
v_a_hydro_ySum
,
v_a_hydro_zSum
,
v_h_dtSum
,
v_sigSum
,
v_entropy_dtSum
;
/* Get the inverse of hi. */
vector
v_hi_inv
=
vec_reciprocal
(
v_hi
);
v_a_hydro_xSum
.
v
=
vec_setzero
();
v_a_hydro_ySum
.
v
=
vec_setzero
();
v_a_hydro_zSum
.
v
=
vec_setzero
();
v_h_dtSum
.
v
=
vec_setzero
();
v_sigSum
=
vector_set1
(
pi
->
force
.
v_sig
);
v_entropy_dtSum
.
v
=
vec_setzero
();
/* Reset cumulative sums of update vectors. */
vector
v_a_hydro_xSum
=
vector_setzero
();
vector
v_a_hydro_ySum
=
vector_setzero
();
vector
v_a_hydro_zSum
=
vector_setzero
();
vector
v_h_dtSum
=
vector_setzero
();
vector
v_sigSum
=
vector_set1
(
pi
->
force
.
v_sig
);
vector
v_entropy_dtSum
=
vector_setzero
();
/* Pad cache if there is a serial remainder. */
count_align
=
count
;
...
...
@@ -1049,21 +1043,18 @@ void runner_dopair1_density_vec(struct runner *r, struct cell *ci,
const
float
hig2
=
hi
*
hi
*
kernel_gamma2
;
const
vector
v_hig2
=
vector_set1
(
hig2
);
/* Reset cumulative sums of update vectors. */
vector
v_rhoSum
,
v_rho_dhSum
,
v_wcountSum
,
v_wcount_dhSum
,
v_div_vSum
,
v_curlvxSum
,
v_curlvySum
,
v_curlvzSum
;
/* Get the inverse of hi. */
vector
v_hi_inv
=
vec_reciprocal
(
v_hi
);
v_rhoSum
.
v
=
vec_setzero
();
v_rho_dhSum
.
v
=
vec_setzero
();
v_wcountSum
.
v
=
vec_setzero
();
v_wcount_dhSum
.
v
=
vec_setzero
();
v_div_vSum
.
v
=
vec_setzero
();
v_curlvxSum
.
v
=
vec_setzero
();
v_curlvySum
.
v
=
vec_setzero
();
v_curlvzSum
.
v
=
vec_setzero
();
/* Reset cumulative sums of update vectors. */
vector
v_rhoSum
=
vector_setzero
();
vector
v_rho_dhSum
=
vector_setzero
();
vector
v_wcountSum
=
vector_setzero
();
vector
v_wcount_dhSum
=
vector_setzero
();
vector
v_div_vSum
=
vector_setzero
();
vector
v_curlvxSum
=
vector_setzero
();
vector
v_curlvySum
=
vector_setzero
();
vector
v_curlvzSum
=
vector_setzero
();
/* Pad the exit iteration if there is a serial remainder. */
int
exit_iteration_align
=
exit_iteration
;
...
...
@@ -1169,21 +1160,18 @@ void runner_dopair1_density_vec(struct runner *r, struct cell *ci,
const
float
hjg2
=
hj
*
hj
*
kernel_gamma2
;
const
vector
v_hjg2
=
vector_set1
(
hjg2
);
/* Reset cumulative sums of update vectors. */
vector
v_rhoSum
,
v_rho_dhSum
,
v_wcountSum
,
v_wcount_dhSum
,
v_div_vSum
,
v_curlvxSum
,
v_curlvySum
,
v_curlvzSum
;
/* Get the inverse of hj. */
vector
v_hj_inv
=
vec_reciprocal
(
v_hj
);
v_rhoSum
.
v
=
vec_setzero
();
v_rho_dhSum
.
v
=
vec_setzero
();
v_wcountSum
.
v
=
vec_setzero
();
v_wcount_dhSum
.
v
=
vec_setzero
();
v_div_vSum
.
v
=
vec_setzero
();
v_curlvxSum
.
v
=
vec_setzero
();
v_curlvySum
.
v
=
vec_setzero
();
v_curlvzSum
.
v
=
vec_setzero
();
/* Reset cumulative sums of update vectors. */
vector
v_rhoSum
=
vector_setzero
();
vector
v_rho_dhSum
=
vector_setzero
();
vector
v_wcountSum
=
vector_setzero
();
vector
v_wcount_dhSum
=
vector_setzero
();
vector
v_div_vSum
=
vector_setzero
();
vector
v_curlvxSum
=
vector_setzero
();
vector
v_curlvySum
=
vector_setzero
();
vector
v_curlvzSum
=
vector_setzero
();
/* Convert exit iteration to cache indices. */
int
exit_iteration_align
=
exit_iteration
-
first_pi
;
...
...
@@ -1416,19 +1404,16 @@ void runner_dopair2_force_vec(struct runner *r, struct cell *ci,
const
float
hig2
=
hi
*
hi
*
kernel_gamma2
;
const
vector
v_hig2
=
vector_set1
(
hig2
);
/* Reset cumulative sums of update vectors. */
vector
v_a_hydro_xSum
,
v_a_hydro_ySum
,
v_a_hydro_zSum
,
v_h_dtSum
,
v_sigSum
,
v_entropy_dtSum
;
/* Get the inverse of hi. */
vector
v_hi_inv
=
vec_reciprocal
(
v_hi
);
v_a_hydro_xSum
.
v
=
vec_setzero
();
v_a_hydro_ySum
.
v
=
vec_setzero
();
v_a_hydro_zSum
.
v
=
vec_setzero
();
v_h_dtSum
.
v
=
vec_setzero
();
v_sigSum
=
vector_set1
(
pi
->
force
.
v_sig
);
v_entropy_dtSum
.
v
=
vec_setzero
();
/* Reset cumulative sums of update vectors. */
vector
v_a_hydro_xSum
=
vector_setzero
();
vector
v_a_hydro_ySum
=
vector_setzero
();
vector
v_a_hydro_zSum
=
vector_setzero
();
vector
v_h_dtSum
=
vector_setzero
();
vector
v_sigSum
=
vector_set1
(
pi
->
force
.
v_sig
);
vector
v_entropy_dtSum
=
vector_setzero
();
/* Pad the exit iteration if there is a serial remainder. */
int
exit_iteration_align
=
exit_iteration
;
...
...
@@ -1550,19 +1535,16 @@ void runner_dopair2_force_vec(struct runner *r, struct cell *ci,
const
float
hjg2
=
hj
*
hj
*
kernel_gamma2
;
const
vector
v_hjg2
=
vector_set1
(
hjg2
);
/* Reset cumulative sums of update vectors. */
vector
v_a_hydro_xSum
,
v_a_hydro_ySum
,
v_a_hydro_zSum
,
v_h_dtSum
,
v_sigSum
,
v_entropy_dtSum
;
/* Get the inverse of hj. */
vector
v_hj_inv
=
vec_reciprocal
(
v_hj
);
v_a_hydro_xSum
.
v
=
vec_setzero
();
v_a_hydro_ySum
.
v
=
vec_setzero
();
v_a_hydro_zSum
.
v
=
vec_setzero
();
v_h_dtSum
.
v
=
vec_setzero
();
v_sigSum
=
vector_set1
(
pj
->
force
.
v_sig
);
v_entropy_dtSum
.
v
=
vec_setzero
();
/* Reset cumulative sums of update vectors. */
vector
v_a_hydro_xSum
=
vector_setzero
();
vector
v_a_hydro_ySum
=
vector_setzero
();
vector
v_a_hydro_zSum
=
vector_setzero
();
vector
v_h_dtSum
=
vector_setzero
();
vector
v_sigSum
=
vector_set1
(
pj
->
force
.
v_sig
);
vector
v_entropy_dtSum
=
vector_setzero
();
/* Convert exit iteration to cache indices. */
int
exit_iteration_align
=
exit_iteration
-
first_pi
;
...
...
This diff is collapsed.
Click to expand it.
src/vector.h
+
14
−
0
View file @
ec5ed5de
...
...
@@ -461,6 +461,20 @@ __attribute__((always_inline)) INLINE vector vector_set1(const float x) {
return
temp
;
}
/**
* @brief Loads a vector filled with zeros.
*
* @return temp set #vector.
*/
__attribute__
((
always_inline
))
INLINE
vector
vector_setzero
()
{
vector
temp
;
temp
.
v
=
vec_setzero
();
return
temp
;
}
#else
/* Needed for cache alignment. */
#define VEC_SIZE 8
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment