Skip to content
Snippets Groups Projects
Commit b90a1e37 authored by Anna Wellmann's avatar Anna Wellmann
Browse files

temp

parent ca9c6037
No related branches found
No related tags found
1 merge request!104Add Communication Hiding to GPU version
......@@ -11,22 +11,11 @@
#include <gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h>
#include <gpu/GridGenerator/grid/GridImp.h>
auto RealEq = [](auto value) {
#ifdef VF_DOUBLE_ACCURACY
return testing::DoubleEq(value);
#else
return testing::FloatEq(value);
#endif
};
class GridBuilderDouble : public LevelGridBuilder
{
private:
SPtr<Grid> grid;
GridBuilderDouble()=default;
public:
GridBuilderDouble(SPtr<Grid> grid) : LevelGridBuilder(Device(), ""), grid(grid){};
SPtr<Grid> getGrid(uint level) override{ return grid; };
......@@ -93,47 +82,18 @@ struct CFBorderBulk {
};
static void initParameterClass(std::shared_ptr<Parameter> &para);
class IndexRearrangementForStreamsTest
{
public:
static void setUpAndRun_splitCoarseToFineIntoBorderAndBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para)
{
SPtr<GridImpDouble> grid =
GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1);
grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder);
std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid);
para->setMaxLevel(cf.level + 1);
para->parH[cf.level] = std::make_shared<LBMSimulationParameter>();
para->parD[cf.level] = std::make_shared<LBMSimulationParameter>();
para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front());
para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front());
para->getParH(cf.level)->neighborX_SP = cf.neighborX_SP;
para->getParH(cf.level)->neighborY_SP = cf.neighborY_SP;
para->getParH(cf.level)->neighborZ_SP = cf.neighborZ_SP;
para->getParH(cf.level)->intCF.kCF = cf.sizeOfICellCf;
para->getParH(cf.level)->offCF.xOffCF = &(cf.offsetCFx.front());
para->getParH(cf.level)->offCF.yOffCF = &(cf.offsetCFy.front());
para->getParH(cf.level)->offCF.zOffCF = &(cf.offsetCFz.front());
IndexRearrangementForStreams testSubject = IndexRearrangementForStreams(para, builder);
testSubject.splitCoarseToFineIntoBorderAndBulk(cf.level);
};
};
void initParameterClass(std::shared_ptr<Parameter> &para)
static SPtr<Parameter> initParameterClass()
{
std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file.
filePath.replace_filename("IndexRearrangementForStreamsTest.cfg");
vf::basics::ConfigurationFile config;
config.load(filePath.string());
para = std::make_shared<Parameter>(config, 1, 0);
return std::make_shared<Parameter>(config, 1, 0);
}
bool vectorsAreEqual(std::vector<uint> vector1, std::vector<uint> vectorExpected)
template <typename T>
bool vectorsAreEqual(std::vector<T> vector1, std::vector<T> vectorExpected)
{
return vector1 == vectorExpected;
}
......@@ -157,101 +117,131 @@ bool vectorsAreEqual(real *vector1, std::vector<uint> vectorExpected)
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, sizeIsConstant)
class IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest : public testing::Test
{
public:
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF == cf.sizeOfICellCf);
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFC)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCfcBorder_expected.size());
}
private:
static std::unique_ptr<IndexRearrangementForStreams> createTestSubjectCFBorderBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para)
{
SPtr<GridImpDouble> grid =
GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1);
grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder);
std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid);
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected));
}
para->setMaxLevel(cf.level + 1); // setMaxLevel resizes parH and parD
para->parH[cf.level] = std::make_shared<LBMSimulationParameter>();
para->parD[cf.level] = std::make_shared<LBMSimulationParameter>();
para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front());
para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front());
para->getParH(cf.level)->neighborX_SP = cf.neighborX_SP;
para->getParH(cf.level)->neighborY_SP = cf.neighborY_SP;
para->getParH(cf.level)->neighborZ_SP = cf.neighborZ_SP;
para->getParH(cf.level)->intCF.kCF = cf.sizeOfICellCf;
para->getParH(cf.level)->offCF.xOffCF = &(cf.offsetCFx.front());
para->getParH(cf.level)->offCF.yOffCF = &(cf.offsetCFy.front());
para->getParH(cf.level)->offCF.zOffCF = &(cf.offsetCFz.front());
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCfcBulk_expected.size());
}
return std::make_unique<IndexRearrangementForStreams>(para, builder);
};
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFC)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected));
}
public:
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFF)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size());
}
void SetUp() override {
para = initParameterClass();
auto testSubject = createTestSubjectCFBorderBulk(cf, para);
testSubject->splitCoarseToFineIntoBorderAndBulk(cf.level);
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected));
}
void TearDown() override {
}
};
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFF)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCffBulk_expected.size());
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFF)
TEST_F(IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest, splitCoarseToFineIntoBorderAndBulk)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected));
EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF, testing::Eq(cf.sizeOfICellCf)) << "The number of interpolation cells from coarse to fine changed during reordering.";
EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF, testing::Eq((uint) cf.iCellCfcBorder_expected.size()));
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC)
{
CFBorderBulk cf;
SPtr<Parameter> para;
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected));
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected));
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected));
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected));
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected));
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected));
}
\ No newline at end of file
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected));
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCfcBulk_expected.size());
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFC)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected));
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFF)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size());
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected));
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFF)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCffBulk_expected.size());
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFF)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected));
// }
// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC)
// {
// CFBorderBulk cf;
// SPtr<Parameter> para;
// initParameterClass(para);
// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected));
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected));
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected));
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected));
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected));
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected));
// }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment