Add cuda intersect and unittest.

This commit is contained in:
sunwen
2023-12-04 13:54:17 +08:00
parent 5e77b4dafe
commit 1716b139c4
3 changed files with 83 additions and 0 deletions

View File

@@ -965,3 +965,25 @@ TEST_F(Function1D_Cuda_Test, auroraUnion) {
EXPECT_FLOAT_AE(result1[i], result2[i]);
}
}
TEST_F(Function1D_Cuda_Test, intersect) {
float* data1 = new float[9]{3,3,2,2,2,1,4,4,7};
auto matrix1 = Aurora::Matrix::fromRawData(data1, 9,1,1).toDeviceMatrix();
float* data2 = new float[8]{6,6,7,7,8,1,2};
auto matrix2 = Aurora::Matrix::fromRawData(data2, 7,1,1).toDeviceMatrix();
auto result = Aurora::intersect(matrix1, matrix2).toHostMatrix();
EXPECT_FLOAT_AE(result.getData()[0],1);
EXPECT_FLOAT_AE(result.getData()[1],2);
EXPECT_FLOAT_AE(result.getData()[2],7);
Aurora::CudaMatrix ia;
result = Aurora::intersect(matrix1, matrix2, ia).toHostMatrix();
auto iaHost = ia.toHostMatrix();
EXPECT_FLOAT_AE(result.getData()[0],1);
EXPECT_FLOAT_AE(result.getData()[1],2);
EXPECT_FLOAT_AE(result.getData()[2],7);
EXPECT_FLOAT_AE(iaHost.getData()[0],6);
EXPECT_FLOAT_AE(iaHost.getData()[1],3);
EXPECT_FLOAT_AE(iaHost.getData()[2],9);
}