File indexing completed on 2024-04-09 02:22:22
0001 #include <cstdint>
0002
0003 #include <alpaka/alpaka.hpp>
0004
0005 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0006 #include "HeterogeneousCore/AlpakaInterface/interface/devices.h"
0007 #include "HeterogeneousCore/AlpakaInterface/interface/memory.h"
0008 #include "HeterogeneousTest/AlpakaOpaque/interface/alpaka/DeviceAdditionOpaque.h"
0009 #include "HeterogeneousTest/AlpakaWrapper/interface/alpaka/DeviceAdditionWrapper.h"
0010
0011 namespace ALPAKA_ACCELERATOR_NAMESPACE::test {
0012
0013 void opaque_add_vectors_f(const float* in1, const float* in2, float* out, uint32_t size) {
0014
0015 auto const& device = cms::alpakatools::devices<Platform>()[0];
0016 Queue queue{device};
0017
0018
0019 auto in1_h = cms::alpakatools::make_host_view<const float>(in1, size);
0020 auto in2_h = cms::alpakatools::make_host_view<const float>(in2, size);
0021 auto out_h = cms::alpakatools::make_host_view<float>(out, size);
0022
0023
0024 auto in1_d = cms::alpakatools::make_device_buffer<float[]>(queue, size);
0025 auto in2_d = cms::alpakatools::make_device_buffer<float[]>(queue, size);
0026 auto out_d = cms::alpakatools::make_device_buffer<float[]>(queue, size);
0027
0028
0029
0030
0031 alpaka::memcpy(queue, in1_d, in1_h, size);
0032 alpaka::memcpy(queue, in2_d, in2_h, size);
0033
0034
0035 alpaka::memset(queue, out_d, 0);
0036
0037
0038 test::wrapper_add_vectors_f(queue, in1_d.data(), in2_d.data(), out_d.data(), size);
0039
0040
0041 alpaka::memcpy(queue, out_h, out_d);
0042
0043
0044 alpaka::wait(queue);
0045
0046
0047 }
0048
0049 void opaque_add_vectors_d(const double* in1, const double* in2, double* out, uint32_t size) {
0050
0051 auto const& device = cms::alpakatools::devices<Platform>()[0];
0052 Queue queue{device};
0053
0054
0055 auto in1_h = cms::alpakatools::make_host_view<const double>(in1, size);
0056 auto in2_h = cms::alpakatools::make_host_view<const double>(in2, size);
0057 auto out_h = cms::alpakatools::make_host_view<double>(out, size);
0058
0059
0060 auto in1_d = cms::alpakatools::make_device_buffer<double[]>(queue, size);
0061 auto in2_d = cms::alpakatools::make_device_buffer<double[]>(queue, size);
0062 auto out_d = cms::alpakatools::make_device_buffer<double[]>(queue, size);
0063
0064
0065
0066
0067 alpaka::memcpy(queue, in1_d, in1_h, size);
0068 alpaka::memcpy(queue, in2_d, in2_h, size);
0069
0070
0071 alpaka::memset(queue, out_d, 0);
0072
0073
0074 test::wrapper_add_vectors_d(queue, in1_d.data(), in2_d.data(), out_d.data(), size);
0075
0076
0077 alpaka::memcpy(queue, out_h, out_d);
0078
0079
0080 alpaka::wait(queue);
0081
0082
0083 }
0084
0085 }