As part of HeCBench analysis, lebesgue-hip benchmark failed to compile due to atomicMax incompatibility. Equivalent benchmark in CUDA passes. I did a comparison of atomicMax support in CUDA and ChipStar found couple of differences in support.
atomicMax (long long int) is not included as part of ChipStar
will there be an impact in behavior due to restrict pointer?
ChipStar:
kballeda@x1002c6s6b0n0:~/ANL_WORK/HeCBench/lebesgue-hip> make
hipcc -std=c++14 -Wall -O3 -c kernels.cu -o kernels.o
kernels.cu:40:3: error: no matching function for call to 'atomicMax'
atomicMax(lmax, t);
^~~~~~~~~
/home/kballeda/local/chipstar_0914/include/hip/devicelib/atomics.hh:217:36: note: candidate function not viable: no known conversion from 'double *__restrict' to 'int *' for 1st argument
extern "C++" inline __device__ int atomicMax(int *address, int val) {
^
/home/kballeda/local/chipstar_0914/include/hip/devicelib/atomics.hh:223:45: note: candidate function not viable: no known conversion from 'double *__restrict' to 'unsigned int *' for 1st argument
extern "C++" inline __device__ unsigned int atomicMax(unsigned int *address,
^
/home/kballeda/local/chipstar_0914/include/hip/devicelib/atomics.hh:231:1: note: candidate function not viable: no known conversion from 'double *__restrict' to 'unsigned long long *' for 1st argument
atomicMax(unsigned long long *address, unsigned long long val) {
As part of HeCBench analysis, lebesgue-hip benchmark failed to compile due to atomicMax incompatibility. Equivalent benchmark in CUDA passes. I did a comparison of atomicMax support in CUDA and ChipStar found couple of differences in support.
ChipStar:
CUDA:
Path to lebesgue-hip in HeCBench: https://github.com/zjin-lcf/HeCBench/tree/master/lebesgue-hip