Skip to content

Commit

Permalink
Attempt to fix failed example on Windows oneapi-src#1
Browse files Browse the repository at this point in the history
  • Loading branch information
rlnx committed Mar 6, 2020
1 parent 24d6973 commit d37e987
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 65 deletions.
2 changes: 1 addition & 1 deletion build/bazel/daal.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ _daal_extra_copts = [
_daal_extra_defines = [
"DAAL_HIDE_DEPRECATED",
"DAAL_NOTHROW_EXCEPTIONS",
"__DAAL_IMPLEMENTATION", # Valid only for DLL
# "__DAAL_IMPLEMENTATION", # Valid only for DLL
]

def daal_module(name, copts=[], local_defines=[], **kwargs):
Expand Down
2 changes: 2 additions & 0 deletions build/bazel/flags.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ def get_default_flags(arch_id, os_id, compiler_id):
# "-nologo",
"/EHsc",
"/WX",
"/DEBUG",
"/Z7",
]
else:
return []
Expand Down
4 changes: 2 additions & 2 deletions cpp/daal/include/services/daal_defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
#include <cstddef> // for size_t

#if (!defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#define __int32 int
#define __int64 long long
// #define __int32 int
// #define __int64 long long
#endif

#if defined(_WIN32) || defined(_WIN64)
Expand Down
38 changes: 19 additions & 19 deletions cpp/onedal/backend/interop/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,33 +8,33 @@ namespace dal {
namespace backend {
namespace interop {

// template <typename DispatchId>
// constexpr daal::CpuType get_daal_cpu_type(DispatchId);
template <typename DispatchId>
constexpr daal::CpuType get_daal_cpu_type(DispatchId);

// template <>
// constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_default>(cpu_dispatch_default) {
// return daal::CpuType::sse2;
// }
template <>
constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_default>(cpu_dispatch_default) {
return daal::CpuType::sse2;
}

// template <>
// constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_avx>(cpu_dispatch_avx) {
// return daal::CpuType::avx;
// }
template <>
constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_avx>(cpu_dispatch_avx) {
return daal::CpuType::avx;
}

// template <>
// constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_avx2>(cpu_dispatch_avx2) {
// return daal::CpuType::avx2;
// }
template <>
constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_avx2>(cpu_dispatch_avx2) {
return daal::CpuType::avx2;
}

// template <>
// constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_avx512>(cpu_dispatch_avx512) {
// return daal::CpuType::avx512;
// }
template <>
constexpr daal::CpuType get_daal_cpu_type<cpu_dispatch_avx512>(cpu_dispatch_avx512) {
return daal::CpuType::avx512;
}

template <typename Float, template <typename, daal::CpuType> typename CpuKernel, typename... Args>
inline auto call_daal_kernel(const context_cpu& ctx, Args&&... args) {
return dal::backend::dispatch_by_cpu(ctx, [&](auto cpu) {
constexpr daal::CpuType daal_cpu_type = daal::CpuType::avx512;
constexpr daal::CpuType daal_cpu_type = daal::CpuType::avx;
// constexpr daal::CpuType daal_cpu_type = get_daal_cpu_type(cpu);
return CpuKernel<Float, daal_cpu_type>().compute(args...);
});
Expand Down
87 changes: 44 additions & 43 deletions cpp/onedal/decomposition/pca/backend/cpu/train_kernel_cov.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@
* limitations under the License.
*******************************************************************************/

#include <iostream>
#include "onedal/decomposition/pca/backend/cpu/train_kernel.hpp"

#include "onedal/table_homogen.hpp"
#include "onedal/backend/interop/common.hpp"
#include "onedal/backend/interop/table_conversion.hpp"
#include "onedal/table_homogen_impl.hpp"

#include "daal/src/algorithms/pca/pca_dense_correlation_batch_kernel.h"

Expand All @@ -30,47 +31,47 @@ namespace backend {
using std::int64_t;
using dal::backend::context_cpu;

namespace daal_pca = daal::algorithms::pca;
namespace daal_cov = daal::algorithms::covariance;
namespace interop = dal::backend::interop;

template <typename Float, daal::CpuType Cpu>
using daal_pca_cor_kernel_t = daal_pca::internal::PCACorrelationKernel<daal::batch, Float, Cpu>;

template <typename Float>
static void call_daal_kernel(const context_cpu& ctx,
const descriptor_base& desc,
const table& data,
const table& eigenvectors,
const table& eigenvalues,
const table& means,
const table& variances) {
const auto daal_data = interop::convert_to_daal_homogen_table<Float>(data);
const auto daal_eigenvectors = interop::convert_to_daal_homogen_table<Float>(eigenvectors);
const auto daal_eigenvalues = interop::convert_to_daal_homogen_table<Float>(eigenvalues);
const auto daal_means = interop::convert_to_daal_homogen_table<Float>(means);
const auto daal_variances = interop::convert_to_daal_homogen_table<Float>(variances);

daal_cov::Batch<Float, daal_cov::defaultDense> covariance_alg;
covariance_alg.input.set(daal_cov::data, daal_data);

constexpr bool is_correlation = false;
constexpr uint64_t results_to_compute = int64_t(daal_pca::mean ||
daal_pca::variance ||
daal_pca::eigenvalue);

interop::call_daal_kernel<Float, daal_pca_cor_kernel_t>(
ctx,
is_correlation,
desc.get_is_deterministic(),
*daal_data,
&covariance_alg,
results_to_compute,
*daal_eigenvectors,
*daal_eigenvalues,
*daal_means,
*daal_variances);
}
// namespace daal_pca = daal::algorithms::pca;
// namespace daal_cov = daal::algorithms::covariance;
// namespace interop = dal::backend::interop;

// template <typename Float, daal::CpuType Cpu>
// using daal_pca_cor_kernel_t = daal_pca::internal::PCACorrelationKernel<daal::batch, Float, Cpu>;

// template <typename Float>
// static void call_daal_kernel(const context_cpu& ctx,
// const descriptor_base& desc,
// const table& data,
// const table& eigenvectors,
// const table& eigenvalues,
// const table& means,
// const table& variances) {
// const auto daal_data = interop::convert_to_daal_homogen_table<Float>(data);
// const auto daal_eigenvectors = interop::convert_to_daal_homogen_table<Float>(eigenvectors);
// const auto daal_eigenvalues = interop::convert_to_daal_homogen_table<Float>(eigenvalues);
// const auto daal_means = interop::convert_to_daal_homogen_table<Float>(means);
// const auto daal_variances = interop::convert_to_daal_homogen_table<Float>(variances);

// daal_cov::Batch<Float, daal_cov::defaultDense> covariance_alg;
// covariance_alg.input.set(daal_cov::data, daal_data);

// constexpr bool is_correlation = false;
// constexpr uint64_t results_to_compute = int64_t(daal_pca::mean ||
// daal_pca::variance ||
// daal_pca::eigenvalue);

// interop::call_daal_kernel<Float, daal_pca_cor_kernel_t>(
// ctx,
// is_correlation,
// desc.get_is_deterministic(),
// *daal_data,
// &covariance_alg,
// results_to_compute,
// *daal_eigenvectors,
// *daal_eigenvalues,
// *daal_means,
// *daal_variances);
// }

template <typename Float>
static train_result train(const context_cpu& ctx,
Expand All @@ -87,7 +88,7 @@ static train_result train(const context_cpu& ctx,
const auto means = allocate_table<Float>(1, component_count);
const auto variances = allocate_table<Float>(1, component_count);

call_daal_kernel<Float>(ctx, desc, data, eigenvectors, eigenvalues, means, variances);
// call_daal_kernel<Float>(ctx, desc, data, eigenvectors, eigenvalues, means, variances);

return train_result()
.set_model(model().set_eigenvectors(eigenvectors))
Expand Down
1 change: 1 addition & 0 deletions cpp/onedal/decomposition/pca/detail/train_ops.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

#pragma once

#include <iostream>
#include "onedal/decomposition/pca/train_types.hpp"

namespace dal {
Expand Down
1 change: 1 addition & 0 deletions cpp/onedal/train.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

#pragma once

#include <iostream>
#include "onedal/detail/train_ops.hpp"

namespace dal {
Expand Down
6 changes: 6 additions & 0 deletions examples/onedal/simple/cpp/pca.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,15 @@ std::ostream &operator <<(std::ostream& stream, const dal::table& table) {
}

int main(int argc, char const *argv[]) {
// int x;
// std::cin >> x;

using namespace dal::decomposition;

constexpr std::int64_t row_count = 5;
constexpr std::int64_t column_count = 3;


const float data[] = {
1.f, 2.f, 3.f,
1.f, -1.f, 0.f,
Expand All @@ -39,7 +43,9 @@ int main(int argc, char const *argv[]) {
.set_is_deterministic(true);

const auto result = dal::train(pca_desc, data_table);
// dal::train(pca_desc, data_table);

// std::cout << "dd" << std::endl;
std::cout << "Eigenvectors:" << std::endl
<< result.get_eigenvectors() << std::endl;

Expand Down

0 comments on commit d37e987

Please sign in to comment.