exanauts / ExaModels.jl

An algebraic modeling and automatic differentiation tool in Julia Language, specialized for SIMD abstraction of nonlinear programs.
MIT License
51 stars 4 forks source link

ExaCore(::Type{Float64}, ::CPU) is ambiguous #103

Open amontoison opened 2 months ago

amontoison commented 2 months ago
ERROR: MethodError: ExaCore(::Type{Float64}, ::CPU) is ambiguous.

Candidates:
  ExaCore(::Type{T}, backend) where T<:AbstractFloat
    @ ExaModels ~/.julia/packages/ExaModels/tBDe7/src/nlp.jl:144
  ExaCore(T, backend::CPU)
    @ ExaModelsKernelAbstractions ~/.julia/packages/ExaModels/tBDe7/ext/ExaModelsKernelAbstractions.jl:13

Possible fix, define
  ExaCore(::Type{T}, ::CPU) where T<:AbstractFloat

Stacktrace:
 [1] ac_power_model(filename::String; backend::CPU, T::Type, kwargs::@Kwargs{})
   @ Main ~/Argonne/MadNCL.jl/benchmarks/acopf_model.jl:109
 [2] pglib_opf_case240_pserc(backend::CPU)
   @ Main ~/Argonne/MadNCL.jl/benchmarks/instances.jl:44
 [3] main(instances::String)
   @ Main ~/Argonne/MadNCL.jl/benchmarks/kkt.jl:207
 [4] top-level scope
   @ REPL[6]:1

pglib_opf_case240_pserc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case240_pserc.m"); backend)
pglib_opf_case4619_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case4619_goc.m"); backend)
pglib_opf_case24464_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case24464_goc.m"); backend)
pglib_opf_case4661_sdet(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case4661_sdet.m"); backend)
pglib_opf_case24_ieee_rts(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case24_ieee_rts.m"); backend)
pglib_opf_case4837_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case4837_goc.m"); backend)
pglib_opf_case2736sp_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2736sp_k.m"); backend)
pglib_opf_case4917_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case4917_goc.m"); backend)
pglib_opf_case2737sop_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2737sop_k.m"); backend)
pglib_opf_case500_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case500_goc.m"); backend)
pglib_opf_case2742_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2742_goc.m"); backend)
pglib_opf_case5658_epigrids(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case5658_epigrids.m"); backend)
pglib_opf_case10000_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case10000_goc.m"); backend)
pglib_opf_case2746wop_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2746wop_k.m"); backend)
pglib_opf_case57_ieee(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case57_ieee.m"); backend)
pglib_opf_case10192_epigrids(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case10192_epigrids.m"); backend)
pglib_opf_case2746wp_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2746wp_k.m"); backend)
pglib_opf_case588_sdet(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case588_sdet.m"); backend)
pglib_opf_case10480_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case10480_goc.m"); backend)
pglib_opf_case2848_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2848_rte.m"); backend)
pglib_opf_case5_pjm(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case5_pjm.m"); backend)
pglib_opf_case118_ieee(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case118_ieee.m"); backend)
pglib_opf_case2853_sdet(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2853_sdet.m"); backend)
pglib_opf_case60_c(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case60_c.m"); backend)
pglib_opf_case1354_pegase(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case1354_pegase.m"); backend)
pglib_opf_case2868_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2868_rte.m"); backend)
pglib_opf_case6468_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case6468_rte.m"); backend)
pglib_opf_case13659_pegase(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case13659_pegase.m"); backend)
pglib_opf_case2869_pegase(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2869_pegase.m"); backend)
pglib_opf_case6470_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case6470_rte.m"); backend)
pglib_opf_case14_ieee(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case14_ieee.m"); backend)
pglib_opf_case30000_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case30000_goc.m"); backend)
pglib_opf_case6495_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case6495_rte.m"); backend)
pglib_opf_case162_ieee_dtc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case162_ieee_dtc.m"); backend)
pglib_opf_case300_ieee(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case300_ieee.m"); backend)
pglib_opf_case6515_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case6515_rte.m"); backend)
pglib_opf_case179_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case179_goc.m"); backend)
pglib_opf_case3012wp_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case3012wp_k.m"); backend)
pglib_opf_case7336_epigrids(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case7336_epigrids.m"); backend)
pglib_opf_case1803_snem(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case1803_snem.m"); backend)
pglib_opf_case3022_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case3022_goc.m"); backend)
pglib_opf_case73_ieee_rts(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case73_ieee_rts.m"); backend)
pglib_opf_case1888_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case1888_rte.m"); backend)
pglib_opf_case30_as(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case30_as.m"); backend)
pglib_opf_case78484_epigrids(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case78484_epigrids.m"); backend)
pglib_opf_case19402_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case19402_goc.m"); backend)
pglib_opf_case30_ieee(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case30_ieee.m"); backend)
pglib_opf_case793_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case793_goc.m"); backend)
pglib_opf_case1951_rte(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case1951_rte.m"); backend)
pglib_opf_case3120sp_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case3120sp_k.m"); backend)
pglib_opf_case8387_pegase(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case8387_pegase.m"); backend)
pglib_opf_case197_snem(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case197_snem.m"); backend)
pglib_opf_case3375wp_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case3375wp_k.m"); backend)
pglib_opf_case89_pegase(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case89_pegase.m"); backend)
pglib_opf_case2000_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2000_goc.m"); backend)
pglib_opf_case3970_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case3970_goc.m"); backend)
pglib_opf_case9241_pegase(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case9241_pegase.m"); backend)
pglib_opf_case200_activ(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case200_activ.m"); backend)
pglib_opf_case39_epri(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case39_epri.m"); backend)
pglib_opf_case9591_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case9591_goc.m"); backend)
pglib_opf_case20758_epigrids(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case20758_epigrids.m"); backend)
pglib_opf_case3_lmbd(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case3_lmbd.m"); backend)
pglib_opf_case2312_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2312_goc.m"); backend)
pglib_opf_case4020_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case4020_goc.m"); backend)
pglib_opf_case2383wp_k(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case2383wp_k.m"); backend)
pglib_opf_case4601_goc(backend) = ac_power_model(joinpath(pglib_path, "pglib_opf_case4601_goc.m"); backend)

        for (model, model_parameters_cpu, model_parameters_gpu, model_name) in [
            (pglib_opf_case240_pserc, CPU(), CUDABackend(), "pglib_opf_case240_pserc"),
            (pglib_opf_case4619_goc, CPU(), CUDABackend(), "pglib_opf_case4619_goc"),
            (pglib_opf_case24464_goc, CPU(), CUDABackend(), "pglib_opf_case24464_goc"),
            (pglib_opf_case4661_sdet, CPU(), CUDABackend(), "pglib_opf_case4661_sdet"),
            (pglib_opf_case24_ieee_rts, CPU(), CUDABackend(), "pglib_opf_case24_ieee_rts"),
            (pglib_opf_case4837_goc, CPU(), CUDABackend(), "pglib_opf_case4837_goc"),
            (pglib_opf_case2736sp_k, CPU(), CUDABackend(), "pglib_opf_case2736sp_k"),
            (pglib_opf_case4917_goc, CPU(), CUDABackend(), "pglib_opf_case4917_goc"),
            (pglib_opf_case2737sop_k, CPU(), CUDABackend(), "pglib_opf_case2737sop_k"),
            (pglib_opf_case500_goc, CPU(), CUDABackend(), "pglib_opf_case500_goc"),
            (pglib_opf_case2742_goc, CPU(), CUDABackend(), "pglib_opf_case2742_goc"),
            (pglib_opf_case5658_epigrids, CPU(), CUDABackend(), "pglib_opf_case5658_epigrids"),
            (pglib_opf_case10000_goc, CPU(), CUDABackend(), "pglib_opf_case10000_goc"),
            (pglib_opf_case2746wop_k, CPU(), CUDABackend(), "pglib_opf_case2746wop_k"),
            (pglib_opf_case57_ieee, CPU(), CUDABackend(), "pglib_opf_case57_ieee"),
            (pglib_opf_case10192_epigrids, CPU(), CUDABackend(), "pglib_opf_case10192_epigrids"),
            (pglib_opf_case2746wp_k, CPU(), CUDABackend(), "pglib_opf_case2746wp_k"),
            (pglib_opf_case588_sdet, CPU(), CUDABackend(), "pglib_opf_case588_sdet"),
            (pglib_opf_case10480_goc, CPU(), CUDABackend(), "pglib_opf_case10480_goc"),
            (pglib_opf_case2848_rte, CPU(), CUDABackend(), "pglib_opf_case2848_rte"),
            (pglib_opf_case5_pjm, CPU(), CUDABackend(), "pglib_opf_case5_pjm"),
            (pglib_opf_case118_ieee, CPU(), CUDABackend(), "pglib_opf_case118_ieee"),
            (pglib_opf_case2853_sdet, CPU(), CUDABackend(), "pglib_opf_case2853_sdet"),
            (pglib_opf_case60_c, CPU(), CUDABackend(), "pglib_opf_case60_c"),
            (pglib_opf_case1354_pegase, CPU(), CUDABackend(), "pglib_opf_case1354_pegase"),
            (pglib_opf_case2868_rte, CPU(), CUDABackend(), "pglib_opf_case2868_rte"),
            (pglib_opf_case6468_rte, CPU(), CUDABackend(), "pglib_opf_case6468_rte"),
            (pglib_opf_case13659_pegase, CPU(), CUDABackend(), "pglib_opf_case13659_pegase"),
            (pglib_opf_case2869_pegase, CPU(), CUDABackend(), "pglib_opf_case2869_pegase"),
            (pglib_opf_case6470_rte, CPU(), CUDABackend(), "pglib_opf_case6470_rte"),
            (pglib_opf_case14_ieee, CPU(), CUDABackend(), "pglib_opf_case14_ieee"),
            (pglib_opf_case30000_goc, CPU(), CUDABackend(), "pglib_opf_case30000_goc"),
            (pglib_opf_case6495_rte, CPU(), CUDABackend(), "pglib_opf_case6495_rte"),
            (pglib_opf_case162_ieee_dtc, CPU(), CUDABackend(), "pglib_opf_case162_ieee_dtc"),
            (pglib_opf_case300_ieee, CPU(), CUDABackend(), "pglib_opf_case300_ieee"),
            (pglib_opf_case6515_rte, CPU(), CUDABackend(), "pglib_opf_case6515_rte"),
            (pglib_opf_case179_goc, CPU(), CUDABackend(), "pglib_opf_case179_goc"),
            (pglib_opf_case3012wp_k, CPU(), CUDABackend(), "pglib_opf_case3012wp_k"),
            (pglib_opf_case7336_epigrids, CPU(), CUDABackend(), "pglib_opf_case7336_epigrids"),
            (pglib_opf_case1803_snem, CPU(), CUDABackend(), "pglib_opf_case1803_snem"),
            (pglib_opf_case3022_goc, CPU(), CUDABackend(), "pglib_opf_case3022_goc"),
            (pglib_opf_case73_ieee_rts, CPU(), CUDABackend(), "pglib_opf_case73_ieee_rts"),
            (pglib_opf_case1888_rte, CPU(), CUDABackend(), "pglib_opf_case1888_rte"),
            (pglib_opf_case30_as, CPU(), CUDABackend(), "pglib_opf_case30_as"),
            (pglib_opf_case78484_epigrids, CPU(), CUDABackend(), "pglib_opf_case78484_epigrids"),
            (pglib_opf_case19402_goc, CPU(), CUDABackend(), "pglib_opf_case19402_goc"),
            (pglib_opf_case30_ieee, CPU(), CUDABackend(), "pglib_opf_case30_ieee"),
            (pglib_opf_case793_goc, CPU(), CUDABackend(), "pglib_opf_case793_goc"),
            (pglib_opf_case1951_rte, CPU(), CUDABackend(), "pglib_opf_case1951_rte"),
            (pglib_opf_case3120sp_k, CPU(), CUDABackend(), "pglib_opf_case3120sp_k"),
            (pglib_opf_case8387_pegase, CPU(), CUDABackend(), "pglib_opf_case8387_pegase"),
            (pglib_opf_case197_snem, CPU(), CUDABackend(), "pglib_opf_case197_snem"),
            (pglib_opf_case3375wp_k, CPU(), CUDABackend(), "pglib_opf_case3375wp_k"),
            (pglib_opf_case89_pegase, CPU(), CUDABackend(), "pglib_opf_case89_pegase"),
            (pglib_opf_case2000_goc, CPU(), CUDABackend(), "pglib_opf_case2000_goc"),
            (pglib_opf_case3970_goc, CPU(), CUDABackend(), "pglib_opf_case3970_goc"),
            (pglib_opf_case9241_pegase, CPU(), CUDABackend(), "pglib_opf_case9241_pegase"),
            (pglib_opf_case200_activ, CPU(), CUDABackend(), "pglib_opf_case200_activ"),
            (pglib_opf_case39_epri, CPU(), CUDABackend(), "pglib_opf_case39_epri"),
            (pglib_opf_case9591_goc, CPU(), CUDABackend(), "pglib_opf_case9591_goc"),
            (pglib_opf_case20758_epigrids, CPU(), CUDABackend(), "pglib_opf_case20758_epigrids"),
            (pglib_opf_case3_lmbd, CPU(), CUDABackend(), "pglib_opf_case3_lmbd"),
            (pglib_opf_case2312_goc, CPU(), CUDABackend(), "pglib_opf_case2312_goc"),
            (pglib_opf_case4020_goc, CPU(), CUDABackend(), "pglib_opf_case4020_goc"),
            (pglib_opf_case2383wp_k, CPU(), CUDABackend(), "pglib_opf_case2383wp_k"),
            (pglib_opf_case4601_goc, CPU(), CUDABackend(), "pglib_opf_case4601_goc"),
        ]
            acopf_model_cpu = model(model_parameters_cpu)
            acopf_model_gpu = model(model_parameters_gpu)
amontoison commented 2 months ago

The current fix on my side is to add this method:

ExaModels.ExaCore(::Type{T}, ::CPU) where T<:AbstractFloat = ExaCore(T, backend=CPU())