Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
CodeVault
hpc-kernels
structured_grids
Commits
ed0da381
Commit
ed0da381
authored
Oct 11, 2016
by
Thomas Ponweiser
Browse files
broadcasting configuration
parent
bc7e5a32
Changes
3
Hide whitespace changes
Inline
Side-by-side
cellular_automaton/wireworld_c/configuration.c
View file @
ed0da381
...
@@ -92,7 +92,7 @@ void conf_init_from_args(conf_t *c, int argc, char* argv[])
...
@@ -92,7 +92,7 @@ void conf_init_from_args(conf_t *c, int argc, char* argv[])
}
}
if
(
optind
>
argc
)
{
if
(
optind
>
argc
)
{
fprintf
(
stderr
,
"Expected base name of input file (omitting '
.wi
' file extension)
\n
"
);
fprintf
(
stderr
,
"Expected base name of input file (omitting '
%s
' file extension)
\n
"
,
FILE_EXT
);
MPI_Abort
(
MPI_COMM_WORLD
,
EXIT_FAILURE
);
MPI_Abort
(
MPI_COMM_WORLD
,
EXIT_FAILURE
);
}
}
...
...
cellular_automaton/wireworld_c/configuration.h
View file @
ed0da381
...
@@ -47,7 +47,7 @@ typedef struct
...
@@ -47,7 +47,7 @@ typedef struct
#define CONF_T_N_INT_MEMBERS 6
#define CONF_T_N_INT_MEMBERS 6
#define CONF_T_FIRST_INT_MEMBER verbosity_level
#define CONF_T_FIRST_INT_MEMBER verbosity_level
#define CONF_T_N_LONG_MEMBERS
2
#define CONF_T_N_LONG_MEMBERS
1
#define CONF_T_FIRST_LONG_MEMBER n_generations_per_iteration
#define CONF_T_FIRST_LONG_MEMBER n_generations_per_iteration
#define CONF_T_N_CHAR_MEMBERS FILE_BASENAME_SZ
#define CONF_T_N_CHAR_MEMBERS FILE_BASENAME_SZ
...
...
cellular_automaton/wireworld_c/main.c
View file @
ed0da381
...
@@ -9,7 +9,6 @@
...
@@ -9,7 +9,6 @@
#include
"world.h"
#include
"world.h"
#include
"simulation.h"
#include
"simulation.h"
void
broadcast_configuration
(
conf_t
*
c
);
void
broadcast_configuration
(
conf_t
*
c
);
void
read_input
(
const
conf_t
*
c
,
world_t
*
world
);
void
read_input
(
const
conf_t
*
c
,
world_t
*
world
);
...
@@ -20,11 +19,15 @@ void print_avg_timings(const conf_t *c, double total_time, double sim_time, doub
...
@@ -20,11 +19,15 @@ void print_avg_timings(const conf_t *c, double total_time, double sim_time, doub
int
main
(
int
argc
,
char
*
argv
[])
int
main
(
int
argc
,
char
*
argv
[])
{
{
int
rank
,
nprocs
;
conf_t
config
;
conf_t
config
;
world_t
world
;
world_t
world
;
MPI_Init
(
&
argc
,
&
argv
);
MPI_Init
(
&
argc
,
&
argv
);
MPI_Comm_rank
(
MPI_COMM_WORLD
,
&
rank
);
MPI_Comm_size
(
MPI_COMM_WORLD
,
&
nprocs
);
// We want the program to stop on I/O errors
// We want the program to stop on I/O errors
// -> Change the default I/O error hander from MPI_ERRORS_RETURN to MPI_ERRORS_ARE_FATAL
// -> Change the default I/O error hander from MPI_ERRORS_RETURN to MPI_ERRORS_ARE_FATAL
// Notes:
// Notes:
...
@@ -32,8 +35,12 @@ int main(int argc, char* argv[])
...
@@ -32,8 +35,12 @@ int main(int argc, char* argv[])
// * The default I/O error handler is associated to the null file handle, i.e. MPI_FILE_NULL.
// * The default I/O error handler is associated to the null file handle, i.e. MPI_FILE_NULL.
MPI_File_set_errhandler
(
MPI_FILE_NULL
,
MPI_ERRORS_ARE_FATAL
);
MPI_File_set_errhandler
(
MPI_FILE_NULL
,
MPI_ERRORS_ARE_FATAL
);
// Parse command line arguments
// Parse command line arguments and broadcast configuration
conf_init_from_args
(
&
config
,
argc
,
argv
);
if
(
rank
==
0
)
{
conf_init_from_args
(
&
config
,
argc
,
argv
);
}
broadcast_configuration
(
&
config
);
if
(
info_enabled
(
&
config
))
conf_print
(
&
config
,
stdout
);
if
(
info_enabled
(
&
config
))
conf_print
(
&
config
,
stdout
);
// Read input file
// Read input file
...
@@ -48,6 +55,16 @@ int main(int argc, char* argv[])
...
@@ -48,6 +55,16 @@ int main(int argc, char* argv[])
return
EXIT_SUCCESS
;
return
EXIT_SUCCESS
;
}
}
void
broadcast_configuration
(
conf_t
*
c
)
{
MPI_Datatype
conf_type
;
mpitype_conf_init
(
&
conf_type
);
MPI_Bcast
(
c
,
1
,
conf_type
,
0
,
MPI_COMM_WORLD
);
mpitype_conf_free
(
&
conf_type
);
}
void
read_input
(
const
conf_t
*
c
,
world_t
*
world
)
{
void
read_input
(
const
conf_t
*
c
,
world_t
*
world
)
{
int
rank
;
int
rank
;
const
int
periods
[
2
]
=
{
0
};
// non-periodic boundaries
const
int
periods
[
2
]
=
{
0
};
// non-periodic boundaries
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment