typedef TestBaseWithParam<Size> BruteForceMatcherFixture;
-PERF_TEST_P(BruteForceMatcherFixture, DISABLED_match,
- OCL_BFMATCHER_TYPICAL_MAT_SIZES) // TODO too big difference between implementations
+PERF_TEST_P(BruteForceMatcherFixture, match,
+ OCL_BFMATCHER_TYPICAL_MAT_SIZES)
{
const Size srcSize = GetParam();
oclMatcher.matchDownload(oclTrainIdx, oclDistance, matches);
- SANITY_CHECK_MATCHES(matches);
+ SANITY_CHECK_MATCHES(matches, 1e-5);
}
else
OCL_PERF_ELSE
}
-PERF_TEST_P(BruteForceMatcherFixture, DISABLED_knnMatch,
- OCL_BFMATCHER_TYPICAL_MAT_SIZES) // TODO too big difference between implementations
+PERF_TEST_P(BruteForceMatcherFixture, knnMatch,
+ OCL_BFMATCHER_TYPICAL_MAT_SIZES)
{
const Size srcSize = GetParam();
oclMatcher.knnMatchDownload(oclTrainIdx, oclDistance, matches);
std::vector<DMatch> & matches0 = matches[0], & matches1 = matches[1];
- SANITY_CHECK_MATCHES(matches0);
- SANITY_CHECK_MATCHES(matches1);
+ SANITY_CHECK_MATCHES(matches0, 1e-5);
+ SANITY_CHECK_MATCHES(matches1, 1e-5);
}
else
OCL_PERF_ELSE
// @Authors
// Nathan, liujun@multicorewareinc.com
// Peng Xiao, pengxiao@outlook.com
+// Baichuan Su, baichuan@multicorewareinc.com
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
s_query[lidy * MAX_DESC_LEN + block_index * BLOCK_SIZE + j],
s_train[j * BLOCK_SIZE + lidx]);
}
- return DIST_RES(result);
+ return result;
}
/* 2dim launch, global size: dim0 is (query rows + BLOCK_SIZE - 1) / BLOCK_SIZE * BLOCK_SIZE, dim1 is BLOCK_SIZE
barrier(CLK_LOCAL_MEM_FENCE);
}
+ result = DIST_RES(result);
+
int trainIdx = t * BLOCK_SIZE + lidx;
if (queryIdx < query_rows && trainIdx < train_rows && result < myBestDistance/* && mask(queryIdx, trainIdx)*/)
barrier(CLK_LOCAL_MEM_FENCE);
}
+ result = DIST_RES(result);
+
const int trainIdx = t * BLOCK_SIZE + lidx;
if (queryIdx < query_rows && trainIdx < train_rows)