Skip to content

Can't compare Float32 with Rational on CUDA #2681

Open
@efaulhaber

Description

@efaulhaber

This is the same problem as JuliaGPU/Metal.jl#550.

julia> map(y -> y < 3 // 2, CUDA.zeros(1))
ERROR: LLVM error: Undefined external symbol "__divti3"
Stacktrace:
  [1] handle_error(reason::Cstring)
    @ LLVM ~/.julia/packages/LLVM/b3kFs/src/core/context.jl:194
  [2] LLVMTargetMachineEmitToMemoryBuffer(T::LLVM.TargetMachine, M::LLVM.Module, codegen::LLVM.API.LLVMCodeGenFileType, ErrorMessage::Base.RefValue{…}, OutMemBuf::Base.RefValue{…})
    @ LLVM.API ~/.julia/packages/LLVM/b3kFs/lib/16/libLLVM.jl:11138
  [3] emit(tm::LLVM.TargetMachine, mod::LLVM.Module, filetype::LLVM.API.LLVMCodeGenFileType)
    @ LLVM ~/.julia/packages/LLVM/b3kFs/src/targetmachine.jl:118
  [4] mcgen(job::GPUCompiler.CompilerJob, mod::LLVM.Module, format::LLVM.API.LLVMCodeGenFileType)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/mcgen.jl:75
  [5] mcgen(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, format::LLVM.API.LLVMCodeGenFileType)
    @ CUDA ~/.julia/packages/CUDA/1kIOw/src/compiler/compilation.jl:127
  [6] macro expansion
    @ ~/.julia/packages/TimerOutputs/6KVfH/src/TimerOutput.jl:253 [inlined]
  [7] macro expansion
    @ ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:403 [inlined]
  [8] macro expansion
    @ ~/.julia/packages/TimerOutputs/6KVfH/src/TimerOutput.jl:253 [inlined]
  [9] macro expansion
    @ ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:400 [inlined]
 [10] 
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/utils.jl:108
 [11] emit_asm
    @ ~/.julia/packages/GPUCompiler/AQezv/src/utils.jl:106 [inlined]
 [12] 
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:120
 [13] codegen
    @ ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:82 [inlined]
 [14] compile(target::Symbol, job::GPUCompiler.CompilerJob; kwargs::@Kwargs{})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:79
 [15] compile
    @ ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:74 [inlined]
 [16] #1147
    @ ~/.julia/packages/CUDA/1kIOw/src/compiler/compilation.jl:250 [inlined]
 [17] JuliaContext(f::CUDA.var"#1147#1150"{GPUCompiler.CompilerJob{}}; kwargs::@Kwargs{})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:34
 [18] JuliaContext(f::Function)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/driver.jl:25
 [19] compile(job::GPUCompiler.CompilerJob)
    @ CUDA ~/.julia/packages/CUDA/1kIOw/src/compiler/compilation.jl:249
 [20] actual_compilation(cache::Dict{…}, src::Core.MethodInstance, world::UInt64, cfg::GPUCompiler.CompilerConfig{…}, compiler::typeof(CUDA.compile), linker::typeof(CUDA.link))
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/execution.jl:237
 [21] cached_compilation(cache::Dict{…}, src::Core.MethodInstance, cfg::GPUCompiler.CompilerConfig{…}, compiler::Function, linker::Function)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/AQezv/src/execution.jl:151
 [22] macro expansion
    @ ~/.julia/packages/CUDA/1kIOw/src/compiler/execution.jl:380 [inlined]
 [23] macro expansion
    @ ./lock.jl:273 [inlined]
 [24] cufunction(f::GPUArrays.var"#gpu_broadcast_kernel_linear#38", tt::Type{…}; kwargs::@Kwargs{})
    @ CUDA ~/.julia/packages/CUDA/1kIOw/src/compiler/execution.jl:375
 [25] macro expansion
    @ ~/.julia/packages/CUDA/1kIOw/src/compiler/execution.jl:112 [inlined]
 [26] (::KernelAbstractions.Kernel{…})(::CuArray{…}, ::Vararg{…}; ndrange::Tuple{…}, workgroupsize::Nothing)
    @ CUDA.CUDAKernels ~/.julia/packages/CUDA/1kIOw/src/CUDAKernels.jl:103
 [27] _copyto!
    @ ~/.julia/packages/GPUArrays/uiVyU/src/host/broadcast.jl:71 [inlined]
 [28] copyto!
    @ ~/.julia/packages/GPUArrays/uiVyU/src/host/broadcast.jl:44 [inlined]
 [29] copy(bc::Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{…}, Tuple{…}, var"#57#58", Tuple{…}})
    @ GPUArrays ~/.julia/packages/GPUArrays/uiVyU/src/host/broadcast.jl:29
 [30] materialize
    @ ./broadcast.jl:867 [inlined]
 [31] map(f::Function, xs::CuArray{Float32, 1, CUDA.DeviceMemory})
    @ GPUArrays ~/.julia/packages/GPUArrays/uiVyU/src/host/broadcast.jl:88
 [32] top-level scope
    @ REPL[123]:1
Some type information was truncated. Use `show(err)` to see complete types.
julia> CUDA.versioninfo()
CUDA runtime 12.6, artifact installation
CUDA driver 12.4
NVIDIA driver 550.90.7

CUDA libraries: 
- CUBLAS: 12.6.4
- CURAND: 10.3.7
- CUFFT: 11.3.0
- CUSOLVER: 11.7.1
- CUSPARSE: 12.5.4
- CUPTI: 2024.3.2 (API 24.0.0)
- NVML: 12.0.0+550.90.7

Julia packages: 
- CUDA: 5.6.1
- CUDA_Driver_jll: 0.10.4+0
- CUDA_Runtime_jll: 0.15.5+0

Toolchain:
- Julia: 1.11.1
- LLVM: 16.0.6

1 device:
  0: NVIDIA GeForce RTX 3090 (sm_86, 23.320 GiB / 24.000 GiB available)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions