@@ -5,7 +5,7 @@ include(joinpath(dirname(pathof(KernelAbstractions)), "../examples/utils.jl")) #
55
66# Function to use as a baseline for CPU metrics
77function create_histogram (input)
8- histogram_output = zeros (Int , maximum (input))
8+ histogram_output = zeros (eltype (input) , maximum (input))
99 for i in input
1010 histogram_output[i] += 1
1111 end
2222 @uniform gs = @groupsize ()[1 ]
2323 @uniform N = length (histogram_output)
2424
25- shared_histogram = @localmem Int (gs)
25+ shared_histogram = @localmem eltype (input) (gs)
2626
2727 # This will go through all input elements and assign them to a location in
2828 # shmem. Note that if there is not enough shem, we create different shmem
7777 if Base. VERSION < v " 1.7.0" && ! KernelAbstractions. isgpu (backend)
7878 @test_skip false
7979 else
80- rand_input = [rand (1 : 128 ) for i in 1 : 1000 ]
81- linear_input = [i for i in 1 : 1024 ]
82- all_two = [2 for i in 1 : 512 ]
80+ # Use Int32 as some backends don't support 64-bit atomics
81+ rand_input = Int32[rand (1 : 128 ) for i in 1 : 1000 ]
82+ linear_input = Int32[i for i in 1 : 1024 ]
83+ all_two = Int32[2 for i in 1 : 512 ]
8384
8485 histogram_rand_baseline = create_histogram (rand_input)
8586 histogram_linear_baseline = create_histogram (linear_input)
8990 linear_input = move (backend, linear_input)
9091 all_two = move (backend, all_two)
9192
92- rand_histogram = KernelAbstractions. zeros (backend, Int , 128 )
93- linear_histogram = KernelAbstractions. zeros (backend, Int , 1024 )
94- two_histogram = KernelAbstractions. zeros (backend, Int , 2 )
93+ rand_histogram = KernelAbstractions. zeros (backend, Int32 , 128 )
94+ linear_histogram = KernelAbstractions. zeros (backend, Int32 , 1024 )
95+ two_histogram = KernelAbstractions. zeros (backend, Int32 , 2 )
9596
9697 histogram! (rand_histogram, rand_input)
9798 histogram! (linear_histogram, linear_input)
0 commit comments