Multithread fft
This commit is contained in:
30
src/main.c
30
src/main.c
@@ -13,7 +13,7 @@
|
||||
int print_usage();
|
||||
|
||||
// read command line arguments
|
||||
int read_args(int argc, const char* argv[], char** params, unsigned int* driving_force, unsigned int* command);
|
||||
int read_args(int argc, const char* argv[], char** params, unsigned int* driving_force, unsigned int* command, unsigned int* nthreads);
|
||||
int read_params(char* params, int* K1, int* K2, int* N1, int* N2, unsigned int* nsteps, double* nu, double* delta, unsigned int* print_freq);
|
||||
int set_parameter(char* lhs, char* rhs, int* K1, int* K2, int* N1, int* N2, unsigned int* nsteps, double* nu, double* delta, unsigned int* print_freq, bool* setN1, bool* setN2);
|
||||
|
||||
@@ -38,12 +38,13 @@ int main (
|
||||
int ret;
|
||||
unsigned int driving,command;
|
||||
unsigned int print_freq;
|
||||
unsigned int nthreads=1;
|
||||
|
||||
command=0;
|
||||
driving=0;
|
||||
|
||||
// read command line arguments
|
||||
ret=read_args(argc, argv, ¶ms, &driving, &command);
|
||||
ret=read_args(argc, argv, ¶ms, &driving, &command, &nthreads);
|
||||
if(ret<0){
|
||||
return(-1);
|
||||
}
|
||||
@@ -65,13 +66,13 @@ int main (
|
||||
|
||||
// run command
|
||||
if (command==COMMAND_UK){
|
||||
uk(K1, K2, N1, N2, nsteps, nu, delta, g, print_freq);
|
||||
uk(K1, K2, N1, N2, nsteps, nu, delta, g, print_freq, nthreads);
|
||||
}
|
||||
else if(command==COMMAND_ENSTROPHY){
|
||||
enstrophy(K1, K2, N1, N2, nsteps, nu, delta, g, print_freq);
|
||||
enstrophy(K1, K2, N1, N2, nsteps, nu, delta, g, print_freq, nthreads);
|
||||
}
|
||||
else if(command==COMMAND_QUIET){
|
||||
quiet(K1, K2, N1, N2, nsteps, nu, delta, g);
|
||||
quiet(K1, K2, N1, N2, nsteps, nu, delta, g, nthreads);
|
||||
}
|
||||
else if(command==0){
|
||||
fprintf(stderr, "error: no command specified\n");
|
||||
@@ -90,14 +91,17 @@ int print_usage(){
|
||||
// read command line arguments
|
||||
#define CP_FLAG_PARAMS 1
|
||||
#define CP_FLAG_DRIVING 2
|
||||
#define CP_FLAG_NTHREADS 3
|
||||
int read_args(
|
||||
int argc,
|
||||
const char* argv[],
|
||||
char** params,
|
||||
unsigned int* driving_force,
|
||||
unsigned int* command
|
||||
unsigned int* command,
|
||||
unsigned int* nthreads
|
||||
){
|
||||
int i;
|
||||
int ret;
|
||||
// pointers
|
||||
char* ptr;
|
||||
// flag that indicates what argument is being read
|
||||
@@ -109,14 +113,15 @@ int read_args(
|
||||
if(argv[i][0]=='-'){
|
||||
for(ptr=((char*)argv[i])+1;*ptr!='\0';ptr++){
|
||||
switch(*ptr){
|
||||
// timestep
|
||||
case 'p':
|
||||
flag=CP_FLAG_PARAMS;
|
||||
break;
|
||||
// nsteps
|
||||
case 'g':
|
||||
flag=CP_FLAG_DRIVING;
|
||||
break;
|
||||
case 't':
|
||||
flag=CP_FLAG_NTHREADS;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "unrecognized option '-%c'\n", *ptr);
|
||||
print_usage();
|
||||
@@ -141,6 +146,15 @@ int read_args(
|
||||
}
|
||||
flag=0;
|
||||
}
|
||||
// nthreads
|
||||
else if(flag==CP_FLAG_NTHREADS){
|
||||
ret=sscanf(argv[i],"%u",nthreads);
|
||||
if(ret!=1){
|
||||
fprintf(stderr, "error: '-t' should be followed by an unsigned integer\n got '%s'\n",argv[i]);
|
||||
return(-1);
|
||||
}
|
||||
flag=0;
|
||||
}
|
||||
// computation to run
|
||||
else{
|
||||
if(strcmp(argv[i], "uk")==0){
|
||||
|
||||
Reference in New Issue
Block a user