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 @@ ...@@ -11,22 +11,11 @@
#include <gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h> #include <gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h>
#include <gpu/GridGenerator/grid/GridImp.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 class GridBuilderDouble : public LevelGridBuilder
{ {
private: private:
SPtr<Grid> grid; SPtr<Grid> grid;
GridBuilderDouble()=default; GridBuilderDouble()=default;
public: public:
GridBuilderDouble(SPtr<Grid> grid) : LevelGridBuilder(Device(), ""), grid(grid){}; GridBuilderDouble(SPtr<Grid> grid) : LevelGridBuilder(Device(), ""), grid(grid){};
SPtr<Grid> getGrid(uint level) override{ return grid; }; SPtr<Grid> getGrid(uint level) override{ return grid; };
...@@ -93,47 +82,18 @@ struct CFBorderBulk { ...@@ -93,47 +82,18 @@ struct CFBorderBulk {
}; };
static void initParameterClass(std::shared_ptr<Parameter> &para); static SPtr<Parameter> initParameterClass()
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)
{ {
std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file. std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file.
filePath.replace_filename("IndexRearrangementForStreamsTest.cfg"); filePath.replace_filename("IndexRearrangementForStreamsTest.cfg");
vf::basics::ConfigurationFile config; vf::basics::ConfigurationFile config;
config.load(filePath.string()); 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; return vector1 == vectorExpected;
} }
...@@ -157,101 +117,131 @@ bool vectorsAreEqual(real *vector1, std::vector<uint> vectorExpected) ...@@ -157,101 +117,131 @@ bool vectorsAreEqual(real *vector1, std::vector<uint> vectorExpected)
} }
class IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest : public testing::Test
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, sizeIsConstant)
{ {
public:
CFBorderBulk cf; CFBorderBulk cf;
SPtr<Parameter> para; 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) private:
{ static std::unique_ptr<IndexRearrangementForStreams> createTestSubjectCFBorderBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para)
CFBorderBulk cf; {
SPtr<Parameter> para; SPtr<GridImpDouble> grid =
initParameterClass(para); GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder);
EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCfcBorder_expected.size()); std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid);
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC) para->setMaxLevel(cf.level + 1); // setMaxLevel resizes parH and parD
{ para->parH[cf.level] = std::make_shared<LBMSimulationParameter>();
CFBorderBulk cf; para->parD[cf.level] = std::make_shared<LBMSimulationParameter>();
SPtr<Parameter> para; para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front());
initParameterClass(para); para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front());
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); para->getParH(cf.level)->neighborX_SP = cf.neighborX_SP;
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected)); 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) return std::make_unique<IndexRearrangementForStreams>(para, builder);
{ };
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) public:
{
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) void SetUp() override {
{ para = initParameterClass();
CFBorderBulk cf; auto testSubject = createTestSubjectCFBorderBulk(cf, para);
SPtr<Parameter> para; testSubject->splitCoarseToFineIntoBorderAndBulk(cf.level);
initParameterClass(para); }
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size());
}
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF) void TearDown() override {
{
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) TEST_F(IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest, splitCoarseToFineIntoBorderAndBulk)
{ {
CFBorderBulk cf; 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.";
SPtr<Parameter> para; EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF, testing::Eq((uint) cf.iCellCfcBorder_expected.size()));
initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected));
} }
TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC) // TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC)
{ // {
CFBorderBulk cf; // CFBorderBulk cf;
SPtr<Parameter> para; // SPtr<Parameter> para;
initParameterClass(para); // initParameterClass(para);
IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); // IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected));
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)); // TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC)
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)); // CFBorderBulk cf;
EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected)); // SPtr<Parameter> para;
} // initParameterClass(para);
\ No newline at end of file // 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