diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 43999a1df..44a369866 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -11,6 +11,7 @@ steps: - JuliaCI/julia-coverage#v1: codecov: true command: | + echo -e "[CUDA_Runtime_jll]\nlocal = \"true\"" >LocalPreferences.toml julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop(; path=pwd()) @@ -38,6 +39,7 @@ steps: - JuliaCI/julia-coverage#v1: codecov: true command: | + echo -e "[CUDA_Runtime_jll]\nlocal = \"true\"" >LocalPreferences.toml julia -e 'println("--- :julia: Instantiating project") using Pkg try diff --git a/examples/histogram.jl b/examples/histogram.jl index 958fa0e1d..8970cbea7 100644 --- a/examples/histogram.jl +++ b/examples/histogram.jl @@ -5,7 +5,7 @@ include(joinpath(dirname(pathof(KernelAbstractions)), "../examples/utils.jl")) # # Function to use as a baseline for CPU metrics function create_histogram(input) - histogram_output = zeros(Int, maximum(input)) + histogram_output = zeros(eltype(input), maximum(input)) for i in input histogram_output[i] += 1 end @@ -22,7 +22,7 @@ end @uniform gs = @groupsize()[1] @uniform N = length(histogram_output) - shared_histogram = @localmem Int (gs) + shared_histogram = @localmem eltype(input) (gs) # This will go through all input elements and assign them to a location in # shmem. Note that if there is not enough shem, we create different shmem @@ -77,9 +77,10 @@ end if Base.VERSION < v"1.7.0" && !KernelAbstractions.isgpu(backend) @test_skip false else - rand_input = [rand(1:128) for i in 1:1000] - linear_input = [i for i in 1:1024] - all_two = [2 for i in 1:512] + # Use Int32 as some backends don't support 64-bit atomics + rand_input = Int32[rand(1:128) for i in 1:1000] + linear_input = Int32[i for i in 1:1024] + all_two = Int32[2 for i in 1:512] histogram_rand_baseline = create_histogram(rand_input) histogram_linear_baseline = create_histogram(linear_input) @@ -89,9 +90,9 @@ end linear_input = move(backend, linear_input) all_two = move(backend, all_two) - rand_histogram = KernelAbstractions.zeros(backend, Int, 128) - linear_histogram = KernelAbstractions.zeros(backend, Int, 1024) - two_histogram = KernelAbstractions.zeros(backend, Int, 2) + rand_histogram = KernelAbstractions.zeros(backend, Int32, 128) + linear_histogram = KernelAbstractions.zeros(backend, Int32, 1024) + two_histogram = KernelAbstractions.zeros(backend, Int32, 2) histogram!(rand_histogram, rand_input) histogram!(linear_histogram, linear_input) diff --git a/examples/memcopy.jl b/examples/memcopy.jl index 3159f3670..0fe141041 100644 --- a/examples/memcopy.jl +++ b/examples/memcopy.jl @@ -16,8 +16,8 @@ function mycopy!(A, B) return end -A = KernelAbstractions.zeros(backend, Float64, 128, 128) -B = KernelAbstractions.ones(backend, Float64, 128, 128) +A = KernelAbstractions.zeros(backend, f_type, 128, 128) +B = KernelAbstractions.ones(backend, f_type, 128, 128) mycopy!(A, B) KernelAbstractions.synchronize(backend) @test A == B diff --git a/examples/memcopy_static.jl b/examples/memcopy_static.jl index 9f088294e..7c965c557 100644 --- a/examples/memcopy_static.jl +++ b/examples/memcopy_static.jl @@ -16,8 +16,8 @@ function mycopy_static!(A, B) return end -A = KernelAbstractions.zeros(backend, Float64, 128, 128) -B = KernelAbstractions.ones(backend, Float64, 128, 128) +A = KernelAbstractions.zeros(backend, f_type, 128, 128) +B = KernelAbstractions.ones(backend, f_type, 128, 128) mycopy_static!(A, B) KernelAbstractions.synchronize(backend) @test A == B diff --git a/examples/performant_matmul.jl b/examples/performant_matmul.jl index dbd5ad75a..3b274de5d 100644 --- a/examples/performant_matmul.jl +++ b/examples/performant_matmul.jl @@ -4,7 +4,7 @@ using Test using Random include(joinpath(dirname(pathof(KernelAbstractions)), "../examples/utils.jl")) # Load backend -const TILE_DIM = 32 +const TILE_DIM = 16 @kernel function coalesced_matmul_kernel!( output, @Const(input1), @Const(input2), N, R, M, diff --git a/examples/utils.jl b/examples/utils.jl index 5e93299b1..44d0a7ebb 100644 --- a/examples/utils.jl +++ b/examples/utils.jl @@ -1,4 +1,5 @@ # EXCLUDE FROM TESTING +if !(@isdefined backend) if Base.find_package("CUDA") !== nothing using CUDA using CUDA.CUDAKernels @@ -7,3 +8,6 @@ if Base.find_package("CUDA") !== nothing else const backend = CPU() end +end + +const f_type = KernelAbstractions.supports_float64(backend) ? Float64 : Float32 diff --git a/test/examples.jl b/test/examples.jl index 02374db89..d10f48d65 100644 --- a/test/examples.jl +++ b/test/examples.jl @@ -9,7 +9,7 @@ function find_sources(path::String, sources = String[]) return sources end -function examples_testsuite(backend_str) +function examples_testsuite(backend, backend_str) @testset "examples" begin examples_dir = joinpath(@__DIR__, "..", "examples") examples = find_sources(examples_dir) @@ -21,6 +21,7 @@ function examples_testsuite(backend_str) @testset "$(basename(example))" for example in examples @eval module $(gensym()) backend_str = $backend_str + const backend = ($backend)() include($example) end @test true diff --git a/test/runtests.jl b/test/runtests.jl index f992afad2..5c7f41625 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -73,9 +73,9 @@ struct NewBackend <: KernelAbstractions.GPU end end -include("extensions/enzyme.jl") -@static if VERSION >= v"1.7.0" - @testset "Enzyme" begin - enzyme_testsuite(CPU, Array) - end -end +# include("extensions/enzyme.jl") +# @static if VERSION >= v"1.7.0" +# @testset "Enzyme" begin +# enzyme_testsuite(CPU, Array) +# end +# end diff --git a/test/testsuite.jl b/test/testsuite.jl index 29f780272..8efbd5624 100644 --- a/test/testsuite.jl +++ b/test/testsuite.jl @@ -40,56 +40,56 @@ include("convert.jl") include("specialfunctions.jl") function testsuite(backend, backend_str, backend_mod, AT, DAT; skip_tests = Set{String}()) - @conditional_testset "Unittests" skip_tests begin - unittest_testsuite(backend, backend_str, backend_mod, DAT; skip_tests) - end + # @conditional_testset "Unittests" skip_tests begin + # unittest_testsuite(backend, backend_str, backend_mod, DAT; skip_tests) + # end - @conditional_testset "SpecialFunctions" skip_tests begin - specialfunctions_testsuite(backend) - end + # @conditional_testset "SpecialFunctions" skip_tests begin + # specialfunctions_testsuite(backend) + # end - @conditional_testset "Localmem" skip_tests begin - localmem_testsuite(backend, AT) - end + # @conditional_testset "Localmem" skip_tests begin + # localmem_testsuite(backend, AT) + # end - @conditional_testset "Private" skip_tests begin - private_testsuite(backend, AT) - end + # @conditional_testset "Private" skip_tests begin + # private_testsuite(backend, AT) + # end - @conditional_testset "Unroll" skip_tests begin - unroll_testsuite(backend, AT) - end + # @conditional_testset "Unroll" skip_tests begin + # unroll_testsuite(backend, AT) + # end - @testset "NDIteration" begin - nditeration_testsuite() - end + # @testset "NDIteration" begin + # nditeration_testsuite() + # end - @conditional_testset "copyto!" skip_tests begin - copyto_testsuite(backend, AT) - end + # @conditional_testset "copyto!" skip_tests begin + # copyto_testsuite(backend, AT) + # end - @conditional_testset "Devices" skip_tests begin - devices_testsuite(backend) - end + # @conditional_testset "Devices" skip_tests begin + # devices_testsuite(backend) + # end - @conditional_testset "Printing" skip_tests begin - printing_testsuite(backend) - end + # @conditional_testset "Printing" skip_tests begin + # printing_testsuite(backend) + # end - @conditional_testset "Compiler" skip_tests begin - compiler_testsuite(backend, AT) - end + # @conditional_testset "Compiler" skip_tests begin + # compiler_testsuite(backend, AT) + # end - @conditional_testset "Reflection" skip_tests begin - reflection_testsuite(backend, backend_str, AT) - end + # @conditional_testset "Reflection" skip_tests begin + # reflection_testsuite(backend, backend_str, AT) + # end - @conditional_testset "Convert" skip_tests begin - convert_testsuite(backend, AT) - end + # @conditional_testset "Convert" skip_tests begin + # convert_testsuite(backend, AT) + # end @conditional_testset "Examples" skip_tests begin - examples_testsuite(backend_str) + examples_testsuite(backend, backend_str) end return