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
|
#include <cassert>
#include <iostream>
#include <cuda.h>
#include <cuda_runtime.h>
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/HcalDetId/interface/HcalDetId.h"
#include "HeterogeneousCore/CUDAUtilities/interface/requireDevices.h"
__global__ void test_gen_detid(DetId* id, uint32_t const rawid) {
DetId did{rawid};
*id = did;
}
void test_detid() {
// test det ids
DetId h_id, h_id_test{100};
DetId h_test0{1};
DetId* d_id;
cudaMalloc((void**)&d_id, sizeof(DetId));
cudaMemcpy(d_id, &h_id, sizeof(DetId), cudaMemcpyHostToDevice);
test_gen_detid<<<1, 1>>>(d_id, 100);
cudaMemcpy(&h_id, d_id, sizeof(DetId), cudaMemcpyDeviceToHost);
assert(h_id_test == h_id);
assert(h_id != h_test0);
}
int main(int argc, char** argv) {
cms::cudatest::requireDevices();
// test det id functionality
test_detid();
}
|