Add transpose, horzcat, vertcat and Fix repmat threadPerBlock problem.
This commit is contained in:
@@ -280,6 +280,21 @@ TEST_F(Function1D_Cuda_Test, repmat)
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(Function1D_Cuda_Test, repmat3d)
|
||||
{
|
||||
Aurora::Matrix hostMatrix = Aurora::Matrix::fromRawData(new float[12]{1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9,10,11,12}, 2,3,2);
|
||||
Aurora::CudaMatrix deviceMatrix = hostMatrix.toDeviceMatrix();
|
||||
|
||||
auto result1 = Aurora::repmat3d(hostMatrix,3,6,4);
|
||||
auto result2 = Aurora::repmat3d(deviceMatrix,3,6,4).toHostMatrix();
|
||||
EXPECT_EQ(result2.getDataSize(), result1.getDataSize());
|
||||
EXPECT_EQ(result2.getValueType(), Aurora::Normal);
|
||||
for(size_t i=0; i<result1.getDataSize(); ++i)
|
||||
{
|
||||
EXPECT_EQ(result1[i], result2[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(Function1D_Cuda_Test, log)
|
||||
{
|
||||
Aurora::Matrix hostMatrix = Aurora::Matrix::fromRawData(new float[8]{1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8}, 2,4);
|
||||
@@ -800,3 +815,90 @@ TEST_F(Function1D_Cuda_Test, norm) {
|
||||
result = Aurora::norm(deviceMatrix,Aurora::NormMethod::NormF);
|
||||
EXPECT_FLOAT_AE(result,44.3847);
|
||||
}
|
||||
|
||||
TEST_F(Function1D_Cuda_Test, transpose) {
|
||||
float *data = new float[6]{1,2,3,4,5,6};
|
||||
auto matrix = Aurora::Matrix::fromRawData(data, 3,2).toDeviceMatrix();
|
||||
auto result = Aurora::transpose(matrix).toHostMatrix();
|
||||
|
||||
EXPECT_FLOAT_EQ(result.getData()[0],1);
|
||||
EXPECT_FLOAT_EQ(result.getData()[1],4);
|
||||
EXPECT_FLOAT_EQ(result.getData()[2],2);
|
||||
EXPECT_FLOAT_EQ(result.getData()[3],5);
|
||||
EXPECT_FLOAT_EQ(result.getData()[4],3);
|
||||
EXPECT_FLOAT_EQ(result.getData()[5],6);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),2);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),3);
|
||||
|
||||
data = new float[12]{1,2,3,4,5,6,7,8,9,10,11,12};
|
||||
matrix = Aurora::Matrix::fromRawData(data, 3,2,1,Aurora::Complex).toDeviceMatrix();
|
||||
result = Aurora::transpose(matrix).toHostMatrix();
|
||||
EXPECT_FLOAT_EQ(result.getData()[0],1);
|
||||
EXPECT_FLOAT_EQ(result.getData()[1],2);
|
||||
EXPECT_FLOAT_EQ(result.getData()[2],7);
|
||||
EXPECT_FLOAT_EQ(result.getData()[3],8);
|
||||
EXPECT_FLOAT_EQ(result.getData()[4],3);
|
||||
EXPECT_FLOAT_EQ(result.getData()[5],4);
|
||||
EXPECT_FLOAT_EQ(result.getData()[6],9);
|
||||
EXPECT_FLOAT_EQ(result.getData()[7],10);
|
||||
EXPECT_FLOAT_EQ(result.getData()[8],5);
|
||||
EXPECT_FLOAT_EQ(result.getData()[9],6);
|
||||
EXPECT_FLOAT_EQ(result.getData()[10],11);
|
||||
EXPECT_FLOAT_EQ(result.getData()[11],12);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),2);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),3);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),2);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),3);
|
||||
}
|
||||
|
||||
TEST_F(Function1D_Cuda_Test, horzcat) {
|
||||
float *data1 = new float[6]{1,2,3,4,5,6};
|
||||
auto matrix1 = Aurora::Matrix::fromRawData(data1, 3,2).toDeviceMatrix();
|
||||
float *data2 = new float[9]{7,8,9,10,11,12,13,14,15};
|
||||
auto matrix2 = Aurora::Matrix::fromRawData(data2, 3,3).toDeviceMatrix();
|
||||
auto result = Aurora::horzcat(matrix1,matrix2).toHostMatrix();
|
||||
EXPECT_FLOAT_EQ(result.getData()[0],1);
|
||||
EXPECT_FLOAT_EQ(result.getData()[1],2);
|
||||
EXPECT_FLOAT_EQ(result.getData()[10],11);
|
||||
EXPECT_FLOAT_EQ(result.getData()[14],15);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),3);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),5);
|
||||
|
||||
data1 = new float[6]{1,2,3,4,5,6};
|
||||
matrix1 = Aurora::Matrix::fromRawData(data1, 3,1,1,Aurora::Complex).toDeviceMatrix();
|
||||
data2 = new float[6]{7,8,9,10,11,12};
|
||||
matrix2 = Aurora::Matrix::fromRawData(data2, 3,1,1,Aurora::Complex).toDeviceMatrix();
|
||||
result = Aurora::horzcat(matrix1,matrix2).toHostMatrix();
|
||||
EXPECT_FLOAT_EQ(result.getData()[0],1);
|
||||
EXPECT_FLOAT_EQ(result.getData()[1],2);
|
||||
EXPECT_FLOAT_EQ(result.getData()[8],9);
|
||||
EXPECT_FLOAT_EQ(result.getData()[9],10);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),3);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),2);
|
||||
}
|
||||
|
||||
TEST_F(Function1D_Cuda_Test, vertcat) {
|
||||
float *data1 = new float[6]{1,2,3,4,5,6};
|
||||
auto matrix1 = Aurora::Matrix::fromRawData(data1, 2,3).toDeviceMatrix();
|
||||
float *data2 = new float[9]{7,8,9,10,11,12,13,14,15};
|
||||
auto matrix2 = Aurora::Matrix::fromRawData(data2, 3,3).toDeviceMatrix();
|
||||
auto result = Aurora::vertcat(matrix1,matrix2).toHostMatrix();
|
||||
EXPECT_FLOAT_EQ(result.getData()[0],1);
|
||||
EXPECT_FLOAT_EQ(result.getData()[1],2);
|
||||
EXPECT_FLOAT_EQ(result.getData()[10],5);
|
||||
EXPECT_FLOAT_EQ(result.getData()[14],15);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),5);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),3);
|
||||
|
||||
data1 = new float[6]{1,2,3,4,5,6};
|
||||
matrix1 = Aurora::Matrix::fromRawData(data1, 3,1,1,Aurora::Complex).toDeviceMatrix();
|
||||
data2 = new float[6]{7,8,9,10,11,12};
|
||||
matrix2 = Aurora::Matrix::fromRawData(data2, 3,1,1,Aurora::Complex).toDeviceMatrix();
|
||||
result = Aurora::vertcat(matrix1,matrix2).toHostMatrix();
|
||||
EXPECT_FLOAT_EQ(result.getData()[0],1);
|
||||
EXPECT_FLOAT_EQ(result.getData()[1],2);
|
||||
EXPECT_FLOAT_EQ(result.getData()[8],9);
|
||||
EXPECT_FLOAT_EQ(result.getData()[9],10);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(0),6);
|
||||
EXPECT_FLOAT_EQ(result.getDimSize(1),1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user