Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.1.1 #10

Open
wants to merge 73 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
de62bfa
add the pow_exp kernel and tested
Nov 23, 2023
b1c0165
all fixes
mahmoudElkarargyBS Jan 8, 2024
d8cefec
resolve threads plus some modifications
mahmoudElkarargyBS Jan 10, 2024
eea866b
Fix cuda
mahmoudElkarargyBS Jan 11, 2024
6884d5c
fix for linking cuda
mahmoudElkarargyBS Jan 11, 2024
cd7cda3
fix: hicma modifactions
mahmoudElkarargyBS Jan 11, 2024
f72d63c
try fixing Jenkines
mahmoudElkarargyBS Jan 16, 2024
210c06b
Adding R structure
mahmoudElkarargyBS Jan 16, 2024
5b604ba
fix:add doxygen in Jenkines
mahmoudElkarargyBS Jan 16, 2024
b1f0fbf
add test file for pow-exp kernel
Jan 16, 2024
b5d530e
test with -fpic
mahmoudElkarargyBS Jan 17, 2024
957dd0c
some modifications for HiCMA
mahmoudElkarargyBS Jan 17, 2024
fe1f893
updates
mahmoudElkarargyBS Jan 18, 2024
6a61410
try 2 gpu devices
mahmoudElkarargyBS Jan 20, 2024
346a0d8
back to starsh
mahmoudElkarargyBS Jan 22, 2024
2d3bc17
a potential fix to doxygen
mahmoudElkarargyBS Jan 22, 2024
5446c76
roll back
mahmoudElkarargyBS Jan 23, 2024
da8ad1f
test Rcpp
mahmoudElkarargyBS Feb 4, 2024
2ea149e
Fix Jenkines
mahmoudElkarargyBS Feb 4, 2024
6481324
fix errors
mahmoudElkarargyBS Feb 4, 2024
038e923
Updated in design
mahmoudElkarargyBS Feb 4, 2024
836ccbc
updates
mahmoudElkarargyBS Feb 11, 2024
21e826b
all release issue without src checks
mahmoudElkarargyBS Feb 11, 2024
f56153c
Merge pull request #1 from ecrc/FIX-release-issue-MK
mahmoudElkarargyBS Feb 11, 2024
18564f6
merge devel
mahmoudElkarargyBS Feb 11, 2024
c3fd36a
Merge pull request #2 from ecrc/kernel/pow-exp
mahmoudElkarargyBS Feb 11, 2024
ad24449
merge devel
mahmoudElkarargyBS Feb 11, 2024
b4c6e7d
adding MakeFile
mahmoudElkarargyBS Feb 11, 2024
f4e7e80
Updated MPI
mahmoudElkarargyBS Feb 12, 2024
96d6dde
Documentation
mahmoudElkarargyBS Feb 12, 2024
9f94224
fix examples tests
mahmoudElkarargyBS Feb 13, 2024
47f1c1b
modeling takes pointers
mahmoudElkarargyBS Feb 13, 2024
e308baf
example for read and write data
mahmoudElkarargyBS Feb 19, 2024
ae0d55c
fix: typpo in Initialize
mahmoudElkarargyBS Feb 26, 2024
0110a82
fix passing numbers of theta
mahmoudElkarargyBS Feb 26, 2024
9a4081f
fix: performance of gsl
mahmoudElkarargyBS Feb 27, 2024
2f65d19
fix: GPU support
mahmoudElkarargyBS Feb 27, 2024
d72800a
fix:mspe
mahmoudElkarargyBS Mar 3, 2024
96931cf
updated devel
mahmoudElkarargyBS Mar 3, 2024
7c6f095
R branch init
mahmoudElkarargyBS Mar 3, 2024
d77d5ab
merge devel
mahmoudElkarargyBS Mar 3, 2024
7b812bc
merge diffrence
mahmoudElkarargyBS Mar 3, 2024
ad9530d
tests:add r tests
mahmoudElkarargyBS Mar 3, 2024
e119bb2
fix tests
mahmoudElkarargyBS Mar 3, 2024
258785b
bug: in tlr
mahmoudElkarargyBS Mar 3, 2024
6486456
fix:tlr
mahmoudElkarargyBS Mar 3, 2024
9e9a28e
fix Jenkines
mahmoudElkarargyBS Mar 3, 2024
c61eaf1
fix: Jenkines in Documentation
mahmoudElkarargyBS Mar 4, 2024
06220cc
minior updates
mahmoudElkarargyBS Mar 4, 2024
ff4ce3e
huge refactoring
mahmoudElkarargyBS Mar 29, 2024
e7b412c
full R
mahmoudElkarargyBS Apr 2, 2024
93844aa
Merge pull request #3 from ecrc/FT-adding-Rcpp-MK
mahmoudElkarargyBS Apr 2, 2024
f8a670b
potential for tlr issue
Apr 5, 2024
3e47fb1
updates in heavy tests
mahmoudElkarargyBS Apr 14, 2024
8480f4f
a fix for gpu in gaussian kernels
mahmoudElkarargyBS Apr 14, 2024
ccacbf9
smalling tlr size
mahmoudElkarargyBS Apr 15, 2024
d268ca3
update sizes of heavy_tests
mahmoudElkarargyBS Apr 15, 2024
115c0a4
smalling size for gpu
mahmoudElkarargyBS Apr 15, 2024
128af20
minior changes
mahmoudElkarargyBS Apr 15, 2024
a629ef3
Huge refactoring in docs
mahmoudElkarargyBS Apr 21, 2024
00fafed
resolve threads
mahmoudElkarargyBS Apr 21, 2024
23c4c5f
fix MPI
mahmoudElkarargyBS Apr 21, 2024
6488a8a
resolve thread
mahmoudElkarargyBS Apr 21, 2024
746d875
updated R documentation
mahmoudElkarargyBS Apr 22, 2024
dec9d1a
documentation and hardware changes
mahmoudElkarargyBS Apr 28, 2024
2aaf398
finalized documentations
mahmoudElkarargyBS Apr 28, 2024
6daad10
minior change in Hardware
mahmoudElkarargyBS Apr 28, 2024
1864818
Ft test mpi mk (#6)
mahmoudElkarargyBS May 10, 2024
fd721cd
minior cleanings (#7)
mahmoudElkarargyBS May 12, 2024
aa56c1c
v1.1.0 (#4) (#8)
mahmoudElkarargyBS Jun 2, 2024
3fce527
Fix P & Q
mahmoudElkarargyBS Jun 2, 2024
e459c18
updates in R (#9)
mahmoudElkarargyBS Jul 3, 2024
58197b0
resolve conflicts
mahmoudElkarargyBS Jul 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,9 @@ int main(int argc, char **argv) {
// Initialize the arguments with the provided command line arguments
configurations.InitializeArguments(argc, argv);
// Initialize the ExaGeoStat Hardware
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(), configurations.GetGPUsNumbers());
// Load data by either read from file or create synthetic data.
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid()); // Load data by either read from file or create synthetic data.
std::unique_ptr<ExaGeoStatData<double>> data;
ExaGeoStat<double>::ExaGeoStatLoadData(configurations, data);
// Modeling module.
Expand Down
2 changes: 1 addition & 1 deletion USER_MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ for setting your arguments:
To use any operations, you must initialize the hardware by selecting the number of CPUs and/or GPUs.
```c++
// Initialize an instance of the hardware
auto hardware = ExaGeoStatHardware(computation, number of cores, number of gpus);
auto hardware = ExaGeoStatHardware(computation, number of cores, number of gpus, p, q);

// Other code goes here

Expand Down
4 changes: 2 additions & 2 deletions examples/data-loader/CSVLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ int main(int argc, char **argv) {

// Initialize ExaGeoStat Hardware and Kernel.
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());

configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
Kernel<double> *kernel = exageostat::plugins::PluginRegistry<Kernel<double>>::Create(
configurations.GetKernelName(), configurations.GetTimeSlot());
int kernel_variables = kernel->GetVariablesNumber();
Expand Down
7 changes: 4 additions & 3 deletions examples/descriptors/ChameleonDescriptor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ int main(int argc, char **argv) {

// Initialize Hardware and Data
auto hardware = ExaGeoStatHardware(configuration.GetComputation(), configuration.GetCoresNumber(),
configuration.GetGPUsNumbers());
configuration.GetGPUsNumbers(), configuration.GetPGrid(),
configuration.GetQGrid());
unique_ptr<DescriptorData<double>> data = make_unique<DescriptorData<double>>();
Kernel<double> *kernel = exageostat::plugins::PluginRegistry<Kernel<double>>::Create(
configuration.GetKernelName(), configuration.GetTimeSlot());
Expand All @@ -51,8 +52,8 @@ int main(int argc, char **argv) {
int config_problem_size = configuration.GetProblemSize();
int config_full_problem_size = config_problem_size * kernel_variables_number;
int config_dts = configuration.GetDenseTileSize();
int config_p_grid = configuration.GetPGrid();
int config_q_grid = configuration.GetQGrid();
int config_p_grid = ExaGeoStatHardware::GetPGrid();
int config_q_grid = ExaGeoStatHardware::GetQGrid();
bool config_is_OOC = configuration.GetIsOOC();

// Randomly Initialized Matrix of Data
Expand Down
8 changes: 5 additions & 3 deletions examples/descriptors/ChameleonToHicmaConverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ int main(int argc, char **argv) {

// Initialize Hardware and Data
auto hardware = ExaGeoStatHardware(configuration.GetComputation(), configuration.GetCoresNumber(),
configuration.GetGPUsNumbers());
configuration.GetGPUsNumbers(), configuration.GetPGrid(),
configuration.GetQGrid());

unique_ptr<DescriptorData<double>> data = make_unique<DescriptorData<double>>();
Kernel<double> *kernel = exageostat::plugins::PluginRegistry<Kernel<double>>::Create(
configuration.GetKernelName(), configuration.GetTimeSlot());
Expand All @@ -53,8 +55,8 @@ int main(int argc, char **argv) {
int config_problem_size = configuration.GetProblemSize();
int config_full_problem_size = config_problem_size * kernel_variables_number;
int config_dts = configuration.GetDenseTileSize();
int config_p_grid = configuration.GetPGrid();
int config_q_grid = configuration.GetQGrid();
int config_p_grid = ExaGeoStatHardware::GetPGrid();
int config_q_grid = ExaGeoStatHardware::GetQGrid();
bool config_is_OOC = configuration.GetIsOOC();

// Randomly Initialized Matrix of Data
Expand Down
8 changes: 5 additions & 3 deletions examples/descriptors/HicmaDescriptor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ int main(int argc, char **argv) {
}
// Initialize Hardware and Data
auto hardware = ExaGeoStatHardware(configuration.GetComputation(), configuration.GetCoresNumber(),
configuration.GetGPUsNumbers());
configuration.GetGPUsNumbers(), configuration.GetPGrid(),
configuration.GetQGrid());

unique_ptr<DescriptorData<double>> data = make_unique<DescriptorData<double>>();
Kernel<double> *kernel = exageostat::plugins::PluginRegistry<Kernel<double>>::Create(
configuration.GetKernelName(), configuration.GetTimeSlot());
Expand All @@ -59,8 +61,8 @@ int main(int argc, char **argv) {
int config_problem_size = configuration.GetProblemSize();
int config_full_problem_size = config_problem_size * kernel_variables_number;
int config_dts = configuration.GetDenseTileSize();
int config_p_grid = configuration.GetPGrid();
int config_q_grid = configuration.GetQGrid();
int config_p_grid = ExaGeoStatHardware::GetPGrid();
int config_q_grid = ExaGeoStatHardware::GetQGrid();
bool config_is_OOC = configuration.GetIsOOC();

// Randomly Initialized Matrix of Data
Expand Down
3 changes: 2 additions & 1 deletion examples/end-to-end/DataGeneration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ int main(int argc, char **argv) {
configurations.InitializeArguments(argc, argv);
// Initialize the ExaGeoStat Hardware
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());
configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
// Load data by either read from file or create synthetic data.
std::unique_ptr<ExaGeoStatData<double>> data;
exageostat::api::ExaGeoStat<double>::ExaGeoStatLoadData(configurations, data);
Expand Down
3 changes: 2 additions & 1 deletion examples/end-to-end/DataGenerationAndModeling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ int main(int argc, char **argv) {
configurations.InitializeArguments(argc, argv);
// Initialize the ExaGeoStat Hardware
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());
configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
// Load data by either read from file or create synthetic data.
std::unique_ptr<ExaGeoStatData<double>> data;
ExaGeoStat<double>::ExaGeoStatLoadData(configurations, data);
Expand Down
3 changes: 2 additions & 1 deletion examples/end-to-end/DataGenerationAndPrediction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ int main(int argc, char **argv) {
configurations.InitializeArguments(argc, argv);
// Initialize the ExaGeoStat Hardware
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());
configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
// Load data by either read from file or create synthetic data.
std::unique_ptr<ExaGeoStatData<double>> data;
ExaGeoStat<double>::ExaGeoStatLoadData(configurations, data);
Expand Down
3 changes: 2 additions & 1 deletion examples/end-to-end/DataGenerationModelingAndPrediction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ int main(int argc, char **argv) {
configurations.InitializeArguments(argc, argv);
// Initialize the ExaGeoStat Hardware
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());
configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
// Load data by either read from file or create synthetic data.
std::unique_ptr<ExaGeoStatData<double>> data;
ExaGeoStat<double>::ExaGeoStatLoadData(configurations, data);
Expand Down
4 changes: 2 additions & 2 deletions examples/end-to-end/DataModeling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ int main(int argc, char **argv) {

// initialize ExaGeoStat hardware with the selected number of cores and gpus.
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());

configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
//Data Setup
std::unique_ptr<ExaGeoStatData<double>> data = std::make_unique<ExaGeoStatData<double>>(
configurations.GetProblemSize(), configurations.GetDimension());
Expand Down
4 changes: 2 additions & 2 deletions examples/end-to-end/DataPrediction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ int main(int argc, char **argv) {

// initialize ExaGeoStat hardware with the selected number of cores and gpus.
auto hardware = ExaGeoStatHardware(configurations.GetComputation(), configurations.GetCoresNumber(),
configurations.GetGPUsNumbers());

configurations.GetGPUsNumbers(), configurations.GetPGrid(),
configurations.GetQGrid());
//Data Setup
std::unique_ptr<ExaGeoStatData<double>> data = std::make_unique<ExaGeoStatData<double>>(
configurations.GetProblemSize(), configurations.GetDimension());
Expand Down
3 changes: 1 addition & 2 deletions examples/hardware/ExaGeoStatHardware.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ int main(int argc, char **argv) {

// Initialize Hardware
auto hardware = ExaGeoStatHardware(configuration.GetComputation(), configuration.GetCoresNumber(),
configuration.GetGPUsNumbers());

configuration.GetGPUsNumbers(), configuration.GetPGrid(), configuration.GetQGrid());
return 0;
}
21 changes: 1 addition & 20 deletions inst/include/Rcpp-adapters/FunctionsAdapter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,6 @@

namespace exageostat::adapters {

/**
* @brief Retrieves locations from ExaGeoStat data.
* @details Extracts and returns the locations stored in an ExaGeoStatData object,
* @param[in] apData Pointer to ExaGeoStatData object containing the spatial data.
* @return vector of locations coordinates.
*
*/
std::vector<std::vector<double>> R_GetLocations(ExaGeoStatData<double> *apData);

/**
* @brief Retrieves descriptive Z values from ExaGeoStat data based on type.
* @details Extracts and returns Z values from an ExaGeoStatData object, aiding in targeted spatial data analysis and visualization within ExaGeoStat.
* @param[in] apData Pointer to ExaGeoStatData object containing the spatial data.
* @param[in] aType String specifying the type of descriptor value to retrieve (e.g., "Chameleon", "HiCMA").
* @return Numeric vector of descriptive Z values.
*
*/
Rcpp::NumericVector R_GetDescZValues(ExaGeoStatData<double> *apData, const std::string &aType);

/**
* @brief Function to load ExaGeoStat data.
* @details This function loads data into an ExaGeoStatData object using the provided configuration and computational settings.
Expand All @@ -60,7 +41,7 @@ namespace exageostat::adapters {
* @return A pointer to an ExaGeoStatData object containing the loaded data.
*
*/
ExaGeoStatData<double> *
Rcpp::List
R_ExaGeoStatLoadData(const std::string &aKernelName, const std::vector<double> &aInitialTheta,
const std::string &aDistanceMatrix, const int &aProblemSize, const int &aSeed,
const int &aDenseTileSize, const int &aLowTileSize, const std::string &aDimension,
Expand Down
40 changes: 36 additions & 4 deletions inst/include/utilities/Logger.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,49 @@
#define DEFAULT_PRECISION 6

/**
* @def VERBOSE(msg)
* @brief Verbose macro for logging and debugging mode.
* @def VERBOSE_PRECISION
* @brief A fixed precision for the verbose mode.
*/
#define VERBOSE(msg) \
#define VERBOSE_PRECISION 12

/**
* @def VERBOSE_1(msg)
* @brief VERBOSE_1 macro for logging outputs in verbose mode, with double taps at the beginning, a fixed precision and a new line at the end.
*/
#define VERBOSE_1(msg) \
if(exageostat::configurations::Configurations::GetVerbosity() == exageostat::common::Verbose::DETAILED_MODE && \
!exageostat::helpers::CommunicatorMPI::GetInstance()->GetRank()) { \
std::ostringstream oss; \
oss << "\t\t " << std::fixed << std::setprecision(VERBOSE_PRECISION) << msg << std::endl; \
std::cout << oss.str(); \
}

/**
* @def VERBOSE_2(msg, A)
* @brief VERBOSE_2 macro for logging outputs in verbose mode, with double taps at the beginning, a fixed precision and without a new line at the end.
*/
#define VERBOSE_2(msg, A) \
if(exageostat::configurations::Configurations::GetVerbosity() == exageostat::common::Verbose::DETAILED_MODE && \
!exageostat::helpers::CommunicatorMPI::GetInstance()->GetRank()) { \
std::ostringstream oss; \
oss << "\t\t\t " << msg << std::endl; \
oss << "\t\t " << std::fixed << std::setprecision(VERBOSE_PRECISION) << msg ; \
std::cout << oss.str(); \
}

/**
* @def VERBOSE_CONTROL(x, A, B, FUNC, ...)
* @brief VERBOSE_CONTROL is The internal macro that simply strips the excess and ends up with the required macro
*/
#define VERBOSE_CONTROL(x, A, B, FUNC, ...) FUNC

/**
* @def VERBOSE(...)
* @brief VERBOSE macro that's called, Used to logging outputs in a verbose mode.
*/
#define VERBOSE(...) VERBOSE_CONTROL(,##__VA_ARGS__, \
VERBOSE_2(__VA_ARGS__), \
VERBOSE_1(__VA_ARGS__), \
)
/**
* @def LOGGER_1(msg)
* @brief LOGGER_1 macro for logging outputs with double taps and new line at the end.
Expand Down
1 change: 0 additions & 1 deletion man/get_Z_measurement_vector.Rd
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// TODO: dots
% Copyright (c) 2017-2024 King Abdullah University of Science and Technology,
% All rights reserved.
% ExaGeoStat is a software package, provided by King Abdullah University of Science and Technology (KAUST).
Expand Down
6 changes: 3 additions & 3 deletions scripts/Benchmarking.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ for N in "${desired_N[@]}"; do
time_prediction=$(echo "$time_prediction" | tr -d '\n' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
time_modeling_iteration=$(echo "$command_output" | awk -F "#Average Time Modeling per Iteration: " '{print $2}' | awk -F "," '{print $1}')
time_modeling_iteration=$(echo "$time_modeling_iteration" | tr -d '\n' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
flops_generation=$(echo "$command_output" | awk -F "#Total Data Generation Gflop/s: " '{print $2}' | awk -F "," '{print $1}')
flops_generation=$(echo "$command_output" | awk -F "#Total Data Generation GFlop/s: " '{print $2}' | awk -F "," '{print $1}')
flops_generation=$(echo "$flops_generation" | tr -d '\n' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
flops_modeling=$(echo "$command_output" | awk -F "#Total MLE Gflop/s: " '{print $2}' | awk -F "," '{print $1}')
flops_modeling=$(echo "$command_output" | awk -F "#Total MLE GFlop/s: " '{print $2}' | awk -F "," '{print $1}')
flops_modeling=$(echo "$flops_modeling" | tr -d '\n' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
flops_modeling_iteration=$(echo "$command_output" | awk -F "#Average Flops per Iteration: " '{print $2}' | awk -F "," '{print $1}')
flops_modeling_iteration=$(echo "$flops_modeling_iteration" | tr -d '\n' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
flops_mspe=$(echo "$command_output" | awk -F "#MSPE Gflop/s: " '{print $2}' | awk -F "," '{print $1}')
flops_mspe=$(echo "$command_output" | awk -F "#MSPE GFlop/s: " '{print $2}' | awk -F "," '{print $1}')
flops_mspe=$(echo "$flops_mspe" | tr -d '\n' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')

echo "$command_output"
Expand Down
Loading