+/* Copyright (c) 2012, 2014. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
/*
* Block Matrix Multiplication example
*
- * Authors: Quintin Jean-Noël
*/
-#include "topo.h"
-#include "param.h"
#include "Matrix_init.h"
#include "2.5D_MM.h"
#include "xbt/log.h"
/*int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);
int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);
*/
+#include <stdio.h>
+#include <string.h>
#include <mpi.h>
#include <math.h>
#include <getopt.h>
-#include <stdio.h>
-#include <string.h>
XBT_LOG_NEW_DEFAULT_CATEGORY(MM_mpi,
"Messages specific for this msg example");
while(loop==1);
#endif
- int opt, display = 0;
- char *conf_file = NULL;
+ int opt = 0;
optind = 1;
//get the parameter from command line
- while ((opt = getopt(argc, argv, "hdf:r:c:M:N:K:B:G:g:k:P:")) != -1) {
+ while ((opt = getopt(argc, argv, "hr:c:M:N:K:B:G:g:k:P:")) != -1) {
switch(opt) {
case 'h':
XBT_INFO(
"Usage: mxm_cblas_test [options]\n"
- " -M I M size (default: %zu)\n"
- " -N I N size (default: %zu)\n"
- " -K I K size (default: %zu)\n"
- " -B I Block size on the k dimension(default: %zu)\n"
- " -G I Number of processor groups(default: %zu)\n"
- " -g I group index(default: %zu)\n"
- " -k I group rank(default: %zu)\n"
- " -r I processor row size (default: %zu)\n"
- " -c I processor col size (default: %zu)\n"
- " -f {Filename} provide the file with the configuration\n"
- " -d display the configuration file on the stderr\n"
- " -h help\n",
+ " -M I M size (default: %zu)\n"
+ " -N I N size (default: %zu)\n"
+ " -K I K size (default: %zu)\n"
+ " -B I Block size on the k dimension (default: %zu)\n"
+ " -G I Number of processor groups (default: %zu)\n"
+ " -g I group index (default: %zu)\n"
+ " -k I group rank (default: %zu)\n"
+ " -r I processor row size (default: %zu)\n"
+ " -c I processor col size (default: %zu)\n"
+ " -h help\n",
m, n, k, Block_size, NB_groups, group, key, row, col);
return 0;
case 'M':
- m = atoi(optarg);
+ m = xbt_str_parse_int(optarg, "Invalid M size: %s");
break;
case 'N':
- n = atoi(optarg);
+ n = xbt_str_parse_int(optarg, "Invalid N size: %s");
break;
case 'K':
- k = atoi(optarg);
+ k = xbt_str_parse_int(optarg, "Invalid K size: %s");
break;
case 'B':
- Block_size = atoi(optarg);
+ Block_size = xbt_str_parse_int(optarg, "Invalid block size: %s");
break;
case 'G':
- NB_groups = atoi(optarg);
+ NB_groups = xbt_str_parse_int(optarg, "Invalid number of processor groups: %s");
break;
case 'g':
- group = atoi(optarg);
+ group = xbt_str_parse_int(optarg, "Invalid group index: %s");
break;
case 'k':
- key = atoi(optarg);
+ key = xbt_str_parse_int(optarg, "Invalid group rank: %s");
break;
case 'r':
- size_row = atoi(optarg);
+ size_row = xbt_str_parse_int(optarg, "Invalid processor row size: %s");
break;
case 'c':
- size_col = atoi(optarg);
+ size_col = xbt_str_parse_int(optarg, "Invalid processor col size: %s");
break;
/*case 'P':
str_mask = strdup(optarg);
break;*/
- case 'f':
- conf_file = strdup(optarg);
- break;
- case 'd':
- display = 1;
- break;
}
}
- if( display == 1 ){
- print_conf(MPI_COMM_WORLD, myrank,NULL,NULL);
- MPI_Barrier(MPI_COMM_WORLD);
- MPI_Finalize();
- exit(0);
- }
-
- char **conf;
- //char ***conf_all;
- if(conf_file == NULL){
- conf = get_conf(MPI_COMM_WORLD, "default_conf", -1);
- }else{
- conf = get_conf(MPI_COMM_WORLD, conf_file, -1);
- //conf_all = get_conf_all(conf_file);
- }
- if(conf == NULL){
- XBT_INFO(
- "No configuration for me inside the file\n");
- }else{
- if(NB_groups !=1){
- /* Get my group number from the config file */
- group = (size_t)atoi(conf[4]);
- }
- }
-
size_row, size_col, NB_groups);
// close properly the pragram
-end:
MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize();
return 0;