summaryrefslogtreecommitdiff
path: root/modules/remote-sycl/benchmarks/mixed_precision.hpp
blob: e21a2e6d9d0935c4c5bc7e9ffeb04f59e519791a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#pragma once

#include "../c++/data.hpp"
#include "../c++/device.hpp"
#include "../c++/remote.hpp"

namespace sch {
using namespace saw::schema;

using MixedArray = Array<
	MixedPrecision<Float64, Float32>
>;

using Float64Array = Array<
	Float64
>;

using Float32Array = Array<
	Float32
>;

using MixedPrecisionBenchmarkInterface = Interface<
	Member<Function<MixedArray,Void>,   "float64_32">,
	Member<Function<Float64Array,Void>, "float64">,
	Member<Function<Float32Array,Void>, "float32">
>;

/**
 * This is more of a presentation
 */
template<typename FloatArraySchema>
using FloatPrecisionBenchmarkInterface = Interface<
	Member<Function<FloatArraySchema,Void>, "float_arr">
>;
}

saw::interface<sch::MixedPrecisionBenchmarkInterface, saw::encode::Sycl<saw::encode::Native>, cl::sycl::queue*> listen_mixed_precision(cl::sycl::event& mixed_ev, cl::sycl::event& float64_ev, cl::sycl::event& float32_ev, uint64_t& arithmetic_intensity);

saw::interface<sch::FloatPrecisionBenchmarkInterface<sch::MixedArray>, saw::encode::Sycl<saw::encode::Native>, cl::sycl::queue*> listen_mixed_float_precision(cl::sycl::event& ev, uint64_t& arithmetic_intensity);
saw::interface<sch::FloatPrecisionBenchmarkInterface<sch::Float32Array>, saw::encode::Sycl<saw::encode::Native>, cl::sycl::queue*> listen_half_float_precision(cl::sycl::event& ev, uint64_t& arithmetic_intensity);
saw::interface<sch::FloatPrecisionBenchmarkInterface<sch::Float64Array>, saw::encode::Sycl<saw::encode::Native>, cl::sycl::queue*> listen_full_precision(cl::sycl::event& ev, uint64_t& arithmetic_intensity);