COMBINATORIAL_BLAS
1.6
Loading...
Searching...
No Matches
util.cpp
Go to the documentation of this file.
1
/*
2
//@HEADER
3
// *****************************************************************************
4
//
5
// HPCGraph: Graph Computation on High Performance Computing Systems
6
// Copyright (2016) Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact George M. Slota (gmslota@sandia.gov)
39
// Siva Rajamanickam (srajama@sandia.gov)
40
// Kamesh Madduri (madduri@cse.psu.edu)
41
//
42
// *****************************************************************************
43
//@HEADER
44
*/
45
46
#include <mpi.h>
47
#include <omp.h>
48
#include <stdio.h>
49
#include <string.h>
50
#include <
stdint.h
>
51
#include <stdlib.h>
52
53
#include "
util.h
"
54
55
extern
int
procid
,
nprocs
;
56
extern
bool
verbose
,
debug
,
verify
;
57
58
void
throw_err
(
char
const
* err_message)
59
{
60
fprintf(stderr,
"Error: %s\n"
, err_message);
61
MPI_Abort(MPI_COMM_WORLD, 1);
62
}
63
64
void
throw_err
(
char
const
* err_message,
int32_t
task)
65
{
66
fprintf(stderr,
"Task %d Error: %s\n"
, task, err_message);
67
MPI_Abort(MPI_COMM_WORLD, 1);
68
}
69
70
void
throw_err
(
char
const
* err_message,
int32_t
task,
int32_t
thread)
71
{
72
fprintf(stderr,
"Task %d Thread %d Error: %s\n"
, task, thread, err_message);
73
MPI_Abort(MPI_COMM_WORLD, 1);
74
}
75
76
void
quicksort_dec
(
uint64_t
* arr1,
uint64_t
* arr2,
int64_t
left,
int64_t
right)
77
{
78
int64_t
i = left;
79
int64_t
j = right;
80
uint64_t
temp;
uint64_t
temp2;
81
uint64_t
pivot = arr1[(left + right) / 2];
82
83
while
(i <= j)
84
{
85
while
(arr1[i] > pivot) {i++;}
86
while
(arr1[j] < pivot) {j--;}
87
88
if
(i <= j)
89
{
90
temp = arr1[i];
91
arr1[i] = arr1[j];
92
arr1[j] = temp;
93
temp2 = arr2[i];
94
arr2[i] = arr2[j];
95
arr2[j] = temp2;
96
++i;
97
--j;
98
}
99
}
100
101
if
(j > left)
102
quicksort_dec
(arr1, arr2, left, j);
103
if
(i < right)
104
quicksort_dec
(arr1, arr2, i, right);
105
}
106
107
108
uint64_t
*
str_to_array
(
char
*input_list_str,
uint64_t
* num)
109
{
110
char
*cp = strtok(input_list_str,
","
);
111
if
(cp == NULL) {
112
return
(
uint64_t
*)malloc((*num)*
sizeof
(
uint64_t
));
113
}
114
115
int64_t
my_index = -1;
116
uint64_t
n;
117
if
(sscanf(cp,
"%lu"
, &n) == 1) {
118
my_index = (
int64_t
)*num;
119
*num += 1;
120
}
else
{
121
printf(
"Invalid integer token '%s'\n"
, cp);
122
}
123
uint64_t
*array =
str_to_array
(NULL, num);
124
if
(my_index >= 0) {
125
array[my_index] = n;
126
}
127
return
array;
128
}
int64_t
long int64_t
Definition
compat.h:21
util.h
stdint.h
int32_t
signed int int32_t
Definition
stdint.h:77
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:90
quicksort_dec
void quicksort_dec(uint64_t *arr1, uint64_t *arr2, int64_t left, int64_t right)
Definition
util.cpp:76
procid
int procid
Definition
main.cpp:55
debug
bool debug
Definition
util.cpp:56
verify
bool verify
Definition
util.cpp:56
throw_err
void throw_err(char const *err_message)
Definition
util.cpp:58
verbose
bool verbose
Definition
main.cpp:56
str_to_array
uint64_t * str_to_array(char *input_list_str, uint64_t *num)
Definition
util.cpp:108
nprocs
int nprocs
Definition
util.cpp:55
Applications
CC_ipdps18
HPCGraph
0.1
util.cpp
Generated by
1.9.8