first commit
This commit is contained in:
84
src/CheckAspectRatio.cpp
Normal file
84
src/CheckAspectRatio.cpp
Normal file
@@ -0,0 +1,84 @@
|
||||
//@HEADER
|
||||
// ***************************************************
|
||||
//
|
||||
// HPCG: High Performance Conjugate Gradient Benchmark
|
||||
//
|
||||
// Contact:
|
||||
// Michael A. Heroux ( maherou@sandia.gov)
|
||||
// Jack Dongarra (dongarra@eecs.utk.edu)
|
||||
// Piotr Luszczek (luszczek@eecs.utk.edu)
|
||||
//
|
||||
// ***************************************************
|
||||
//@HEADER
|
||||
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/*!
|
||||
@file CheckAspectRatio.cpp
|
||||
|
||||
HPCG routine
|
||||
*/
|
||||
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
|
||||
#ifndef HPCG_NO_MPI
|
||||
#include <mpi.h>
|
||||
#endif
|
||||
|
||||
#include "hpcg.hpp"
|
||||
|
||||
#include "CheckAspectRatio.hpp"
|
||||
|
||||
extern int use_output_file;
|
||||
|
||||
int CheckAspectRatio(double smallest_ratio, int x, int y, int z, const char* what, bool DoIo)
|
||||
{
|
||||
double current_ratio = std::min(std::min(x, y), z) / double(std::max(std::max(x, y), z));
|
||||
|
||||
if (current_ratio < smallest_ratio)
|
||||
{ // ratio of the smallest to the largest
|
||||
if (DoIo)
|
||||
{
|
||||
if (use_output_file)
|
||||
{
|
||||
HPCG_fout << "The " << what << " sizes (" << x << "," << y << "," << z
|
||||
<< ") are invalid because the ratio min(x,y,z)/max(x,y,z)=" << current_ratio
|
||||
<< " is too small (at least " << smallest_ratio << " is required)." << std::endl;
|
||||
HPCG_fout << "The shape should resemble a 3D cube. Please adjust and try again." << std::endl;
|
||||
HPCG_fout.flush();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "The " << what << " sizes (" << x << "," << y << "," << z
|
||||
<< ") are invalid because the ratio min(x,y,z)/max(x,y,z)=" << current_ratio
|
||||
<< " is too small (at least " << smallest_ratio << " is required)." << std::endl;
|
||||
std::cout << "The shape should resemble a 3D cube. Please adjust and try again." << std::endl
|
||||
<< std::flush;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef HPCG_NO_MPI
|
||||
MPI_Abort(MPI_COMM_WORLD, 127);
|
||||
#endif
|
||||
|
||||
return 127;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user