blob: 9f9c521fd0bfac33ac5a1581f040701f698c1170 (
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#include "../c++/remote.hpp"
#include "../c++/transfer.hpp"
#include <iostream>
__global__ void print_value(data<saw::schema::UInt16,encode::Native>* val){
printf("Hello world: %d", val);
}
namespace sch {
using namespace saw::schema;
}
saw::error_or<void> real_main(){
using namespace saw;
remote<rmt::Hip> rmt;
auto eo_addr = rmt.parse_address(0);
if(eo_addr.is_error()){
return std::move(eo_addr.get_error());
}
auto& addr = eo_addr.get_value();
auto eo_dat_srv = rmt.data_listen<sch::Int16, encode::Native>(*addr);
if(eo_dat_srv.is_error()){
return std::move(eo_dat_srv.get_error());
}
auto& dat_srv = eo_dat_srv.get_value();
data<sch::Int16> val{42};
id<sch::Int16> id_val{0u};
auto eo_send = dat_srv->send(val, id_val);
if(eo_send.is_error()){
return std::move(eo_send.get_error());
}
auto eo_dfind = dat_srv->find(id_val);
if(eo_dfind.is_error()){
return std::move(eo_dfind.get_error());
}
auto dfind = eo_dfind.get_value();
auto& val = dfind();
print_value<<<dim3(2),dim3(2),0,hipStreamDefault>>>(&val);
return make_void();
}
int main(){
auto eov = real_main();
if(eov.is_error()){
auto& err = eov.get_error();
std::cerr<<"Error: "<<err.get_category();
auto err_msg = err.get_message();
if(err_msg.size() > 0u){
std::cerr<<" - "<<err_msg;
}
std::cerr<<"\n"<<std::endl;
return err.get_id();
}
return 0;
}
|