From 49d0c897c29e828a989c15ec5465f946b8826e87 Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Sun, 16 Feb 2025 16:17:46 +0100 Subject: [PATCH 1/8] Update roc_auc_score.cpp --- .../src/data_management/roc_auc_score.cpp | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index 4cb4c56e245..664d4f7bbd9 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -35,21 +35,21 @@ using namespace daal::internal; using namespace daal::services; using namespace daal::services::internal; -template -services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction, double & score) +template +services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction, DataType & score) { services::Status s; SafeStatus safeStat; const size_t nElements = truePrediction->getNumberOfRows(); - TArrayScalable, cpu> predict(nElements); + TArrayScalable, cpu> predict(nElements); DAAL_CHECK_MALLOC(predict.get()); const size_t blockSizeDefault = 256; const size_t nBlocks = nElements / blockSizeDefault + !!(nElements % blockSizeDefault); - ReadColumns testPredictionBlock(testPrediction.get(), 0, 0, nElements); + ReadColumns testPredictionBlock(testPrediction.get(), 0, 0, nElements); DAAL_CHECK_BLOCK_STATUS(testPredictionBlock); - const double * const testPredictionPtr = testPredictionBlock.get(); + const DataType * const testPredictionPtr = testPredictionBlock.get(); daal::threader_for(nBlocks, nBlocks, [&](const size_t iBlock) { const size_t blockBegin = iBlock * blockSizeDefault; @@ -63,12 +63,12 @@ services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const N } }); - daal::parallel_sort(predict.get(), predict.get() + nElements); + daal::parallel_sort(predict.get(), predict.get() + nElements); size_t rank = 1; size_t elementsInBlock = 1; size_t i = 0; - TArray predictedRank(nElements); + TArray predictedRank(nElements); DAAL_CHECK_MALLOC(predictedRank.get()); while (i < nElements) { @@ -84,14 +84,14 @@ services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const N for (size_t j = 0; j < elementsInBlock; ++j) { const size_t idx = predict[i + j].index; - predictedRank[idx] = static_cast(rank) + ((static_cast(elementsInBlock) - double(1.0)) * double(0.5)); + predictedRank[idx] = static_cast(rank) + ((static_cast(elementsInBlock) - DataType(1.0)) * DataType(0.5)); } rank += elementsInBlock; i += elementsInBlock; } - double nPos = double(0); - double filteredRankSum = double(0); + DataType nPos = DataType(0); + DataType filteredRankSum = DataType(0); for (size_t iBlock = 0; iBlock < nBlocks; ++iBlock) { const size_t blockBegin = iBlock * blockSizeDefault; @@ -108,14 +108,15 @@ services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const N } } } - const double nNeg = static_cast(nElements) - nPos; - score = (filteredRankSum - (nPos * (nPos + double(1.0)) * double(0.5))) / (nPos * nNeg); + const DataType nNeg = static_cast(nElements) - nPos; + score = (filteredRankSum - (nPos * (nPos + DataType(1.0)) * DataType(0.5))) / (nPos * nNeg); return s; } -DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction) +template +DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction) { - double score = double(0); + DataType score = DataType(0); #define DAAL_ROC_AUC_SCORE(cpuId, ...) rocAucScoreImpl(__VA_ARGS__); DAAL_DISPATCH_FUNCTION_BY_CPU_SAFE(DAAL_ROC_AUC_SCORE, truePrediction, testPrediction, score); @@ -123,6 +124,10 @@ DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const Num #undef DAAL_ROC_AUC_SCORE return score; } + +DAAL_EXPORT float rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); +DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); + } // namespace internal } // namespace data_management } // namespace daal From d6832eca8a95811cf5f88da665da2c09020bd28f Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Sun, 16 Feb 2025 16:18:45 +0100 Subject: [PATCH 2/8] Update roc_auc_score.cpp --- cpp/daal/src/data_management/roc_auc_score.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index 664d4f7bbd9..0604d47310b 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -117,7 +117,7 @@ template DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction) { DataType score = DataType(0); -#define DAAL_ROC_AUC_SCORE(cpuId, ...) rocAucScoreImpl(__VA_ARGS__); +#define DAAL_ROC_AUC_SCORE(cpuId, ...) rocAucScoreImpl(__VA_ARGS__); DAAL_DISPATCH_FUNCTION_BY_CPU_SAFE(DAAL_ROC_AUC_SCORE, truePrediction, testPrediction, score); From 6b8d2635895a38c7595ed90c4f932f83a758934b Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Sun, 16 Feb 2025 17:21:05 +0100 Subject: [PATCH 3/8] Update roc_auc_score.cpp --- cpp/daal/src/data_management/roc_auc_score.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index 0604d47310b..370aa7d678c 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -113,7 +113,7 @@ services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const N return s; } -template +template DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction) { DataType score = DataType(0); @@ -125,7 +125,7 @@ DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const N return score; } -DAAL_EXPORT float rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); +DAAL_EXPORT float rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); } // namespace internal From 545aa747209c3c6c374f8056a7cc04cf5b5336a9 Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Sun, 16 Feb 2025 17:35:10 +0100 Subject: [PATCH 4/8] Update roc_auc_score.cpp --- cpp/daal/src/data_management/roc_auc_score.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index 370aa7d678c..e319701330f 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -125,7 +125,7 @@ DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const N return score; } -DAAL_EXPORT float rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); +template DAAL_EXPORT float rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); } // namespace internal From a953a769813d8eb4bdcb0acdb00cbabdbe4b2c25 Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Sun, 16 Feb 2025 20:59:59 +0100 Subject: [PATCH 5/8] Update roc_auc_score.h --- cpp/daal/include/data_management/data/internal/roc_auc_score.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/daal/include/data_management/data/internal/roc_auc_score.h b/cpp/daal/include/data_management/data/internal/roc_auc_score.h index 5c7f3888197..a3a5dd9d659 100644 --- a/cpp/daal/include/data_management/data/internal/roc_auc_score.h +++ b/cpp/daal/include/data_management/data/internal/roc_auc_score.h @@ -26,7 +26,8 @@ namespace data_management { namespace internal { -DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); +template +DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); } // namespace internal } // namespace data_management } // namespace daal From 5522e579266dea110822729ff75c287427e7d96e Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Sun, 16 Feb 2025 22:05:07 +0100 Subject: [PATCH 6/8] Update roc_auc_score.cpp --- cpp/daal/src/data_management/roc_auc_score.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index e319701330f..08b2e143fc9 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -113,7 +113,7 @@ services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const N return s; } -template +template DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction) { DataType score = DataType(0); From b95d450a3a8403bb01f3ed7dec5b3a3511b7cd20 Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Mon, 17 Feb 2025 00:13:27 +0100 Subject: [PATCH 7/8] Update roc_auc_score.cpp --- cpp/daal/src/data_management/roc_auc_score.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index 08b2e143fc9..cefe17a4a6e 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -126,7 +126,7 @@ DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const N } template DAAL_EXPORT float rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); -DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); +template DAAL_EXPORT double rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); } // namespace internal } // namespace data_management From c89cd334a366dd563e32194b14ac7947fa5cf326 Mon Sep 17 00:00:00 2001 From: icfaust Date: Sun, 16 Feb 2025 21:28:33 -0800 Subject: [PATCH 8/8] clang-formatting and comment --- cpp/daal/include/data_management/data/internal/roc_auc_score.h | 1 + cpp/daal/src/data_management/roc_auc_score.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/daal/include/data_management/data/internal/roc_auc_score.h b/cpp/daal/include/data_management/data/internal/roc_auc_score.h index a3a5dd9d659..3d9a66eb989 100644 --- a/cpp/daal/include/data_management/data/internal/roc_auc_score.h +++ b/cpp/daal/include/data_management/data/internal/roc_auc_score.h @@ -26,6 +26,7 @@ namespace data_management { namespace internal { +// Default template to double for backwards compatability in daal4py (<2025.5) template DAAL_EXPORT DataType rocAucScore(const NumericTablePtr & truePrediction, const NumericTablePtr & testPrediction); } // namespace internal diff --git a/cpp/daal/src/data_management/roc_auc_score.cpp b/cpp/daal/src/data_management/roc_auc_score.cpp index cefe17a4a6e..31abbd1281b 100644 --- a/cpp/daal/src/data_management/roc_auc_score.cpp +++ b/cpp/daal/src/data_management/roc_auc_score.cpp @@ -109,7 +109,7 @@ services::Status rocAucScoreImpl(const NumericTablePtr & truePrediction, const N } } const DataType nNeg = static_cast(nElements) - nPos; - score = (filteredRankSum - (nPos * (nPos + DataType(1.0)) * DataType(0.5))) / (nPos * nNeg); + score = (filteredRankSum - (nPos * (nPos + DataType(1.0)) * DataType(0.5))) / (nPos * nNeg); return s; }