CUDA.jl模拟性能优化:GPU表现远逊于多线程的问题求助
Julia GPU模拟性能优化求助:GPU比20线程CPU慢20倍
我在撰写Julia语言的GPU计算教程,在演示简单矩阵运算时,GPU性能远超单线程与多线程版本。但在实现包含模拟数据X生成和参数β估算的复杂示例时,Nvidia RTX 2070 GPU的模拟性能比20线程的多线程版本差约20倍。

以下是最小可复现示例(MRE)代码:
# Meta-simulation constants ================================= replications = 10 n = 100 p = 2 μ = rand(replications) # Multi-threaded simulations ================================= β_par = fill(0., (p, replications)) function parsim() Threads.@threads for r in 1:replications X = rand(Float16, (n, p)) .* μ[r]; # Sample data β = sum(X .^ 2, dims = 1); # Estimate parameters β_par[:, r] = β end end # GPU simulations ================================= using CUDA β_gpu = CuArray(fill(0., (p, replications))) function gpusim() for r in 1:replications X = CuArray(rand(Float16, (n, p))) .* μ[r]; # Sample data β = sum(X .^ 2, dims = 1); # Estimate parameters β_par[:, r] = β end end
我已花费十多小时尝试优化gpusim(),使其性能至少不低于parsim(),反复查阅CUDA.jl和LinearAlgebra.jl文档,尝试过自定义内核和多种线性代数方案,ChatGPT给出的复杂方案也未改善性能,希望了解如何让gpusim()性能超越parsim()。
内容的提问来源于stack exchange,提问作者Waldir Leoncio
相关产品推荐
相关产品推荐

