Skip to content

Commit

Permalink
Try #1204:
Browse files Browse the repository at this point in the history
  • Loading branch information
bors[bot] authored Jun 3, 2020
2 parents ca1b1b2 + 50d503c commit 8f20b20
Show file tree
Hide file tree
Showing 16 changed files with 79 additions and 90 deletions.
4 changes: 2 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ image: nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
# tags:
# - nvidia

julia:1.3:
julia:1.4:
extends:
- .julia:1.3
- .julia:1.4
- .test
tags:
- nvidia
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ os:
# - osx

julia:
- 1.3
- 1.4
- 1
- nightly

Expand Down
105 changes: 47 additions & 58 deletions Manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,38 +29,32 @@ uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"

[[BinaryProvider]]
deps = ["Libdl", "Logging", "SHA"]
git-tree-sha1 = "428e9106b1ff27593cbd979afac9b45b82372b8c"
git-tree-sha1 = "ecdec412a9abc8db54c0efc5548c64dfce072058"
uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
version = "0.5.9"
version = "0.5.10"

[[CEnum]]
git-tree-sha1 = "1b77a77c3b28e0b3f413f7567c9bb8dd9bdccd14"
git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.3.0"
version = "0.4.1"

[[CUDA]]
deps = ["AbstractFFTs", "Adapt", "BinaryProvider", "CEnum", "DataStructures", "ExprTools", "GPUArrays", "GPUCompiler", "LLVM", "Libdl", "LinearAlgebra", "Logging", "MacroTools", "NNlib", "Pkg", "Printf", "Random", "Reexport", "Requires", "SparseArrays", "Statistics", "TimerOutputs"]
git-tree-sha1 = "3d247bd2260259f86853e52584169ddeca648ebc"
uuid = "052768ef-5323-5732-b1bb-66c8b64840ba"
version = "0.1.0"

[[CUDAapi]]
deps = ["Libdl", "Logging"]
git-tree-sha1 = "831b825d10104bd29e28f6da93312a976830717b"
uuid = "3895d2a7-ec45-59b8-82bb-cfc6a382f9b3"
version = "4.0.0"

[[CUDAdrv]]
deps = ["CEnum", "CUDAapi", "Printf"]
git-tree-sha1 = "f56bbf18c86bcff7a961a32a4947a5abb2963a29"
uuid = "c5f51814-7f29-56b8-a69c-e4d8f6be1fde"
version = "6.3.0"

[[CUDAnative]]
deps = ["Adapt", "BinaryProvider", "CEnum", "CUDAapi", "CUDAdrv", "ExprTools", "GPUCompiler", "LLVM", "Libdl", "Pkg", "Printf"]
git-tree-sha1 = "ac86db2b05fdfec96b011e25a504ffe7476e8a68"
uuid = "be33ccc6-a3ff-5ff2-a52e-74243cff1e17"
version = "3.1.0"

[[CodeTracking]]
deps = ["InteractiveUtils", "UUIDs"]
git-tree-sha1 = "cab4da992adc0a64f63fa30d2db2fd8bec40cab4"
uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2"
version = "0.5.11"
[[ChainRules]]
deps = ["ChainRulesCore", "LinearAlgebra", "Reexport", "Requires", "Statistics"]
git-tree-sha1 = "1886302d65c81cee7fd35cff67f33721db4ae88e"
uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2"
version = "0.6.3"

[[ChainRulesCore]]
deps = ["MuladdMacro"]
git-tree-sha1 = "32e2c6e44d4fdd985b5688b5e85c1f6892cf3d15"
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
version = "0.8.0"

[[CodecZlib]]
deps = ["TranscodingStreams", "Zlib_jll"]
Expand Down Expand Up @@ -92,28 +86,16 @@ git-tree-sha1 = "7c4f882c41faa72118841185afc58a2eb00ef612"
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "0.3.3+0"

[[Cthulhu]]
deps = ["CodeTracking", "InteractiveUtils", "REPL", "Unicode"]
git-tree-sha1 = "a4849ec61df9659423cc63b298ed895904ee9743"
uuid = "f68482b8-f384-11e8-15f7-abe071a5a75f"
version = "1.0.2"

[[CuArrays]]
deps = ["AbstractFFTs", "Adapt", "CEnum", "CUDAapi", "CUDAdrv", "CUDAnative", "DataStructures", "GPUArrays", "Libdl", "LinearAlgebra", "MacroTools", "NNlib", "Pkg", "Printf", "Random", "Reexport", "Requires", "SparseArrays", "Statistics", "TimerOutputs"]
git-tree-sha1 = "870a4ac61e99c36f42d15e496fd290c841541d90"
uuid = "3a865a2d-5b23-5a0f-bc46-62713ec82fae"
version = "2.2.0"

[[DataAPI]]
git-tree-sha1 = "176e23402d80e7743fc26c19c681bfb11246af32"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.3.0"

[[DataStructures]]
deps = ["InteractiveUtils", "OrderedCollections"]
git-tree-sha1 = "6166ecfaf2b8bbf2b68d791bc1d54501f345d314"
git-tree-sha1 = "af6d9c86e191c917c2276fbede1137e8ea20157f"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.17.15"
version = "0.17.17"

[[Dates]]
deps = ["Printf"]
Expand Down Expand Up @@ -146,9 +128,9 @@ version = "0.1.1"

[[FillArrays]]
deps = ["LinearAlgebra", "Random", "SparseArrays"]
git-tree-sha1 = "6c89d5b673e59b8173c546c84127e5f623d865f6"
git-tree-sha1 = "44f561e293987ffc84272cd3d2b14b0b93123d63"
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
version = "0.8.9"
version = "0.8.10"

[[FixedPointNumbers]]
git-tree-sha1 = "3ba9ea634d4c8b289d590403b4a06f8e227a6238"
Expand All @@ -173,21 +155,21 @@ uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"

[[GPUArrays]]
deps = ["AbstractFFTs", "Adapt", "LinearAlgebra", "Printf", "Random", "Serialization"]
git-tree-sha1 = "ce4579ebffef43e07318e9544ffeb6532c95d04d"
git-tree-sha1 = "5f90fd4385ae86ab56cdd9bd4717f7bd2ff2acdf"
uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7"
version = "3.3.0"
version = "3.4.0"

[[GPUCompiler]]
deps = ["Cthulhu", "DataStructures", "InteractiveUtils", "LLVM", "Libdl", "TimerOutputs"]
git-tree-sha1 = "5275aa268ecd09640b32560e1eae90c78816e4d1"
deps = ["DataStructures", "InteractiveUtils", "LLVM", "Libdl", "TimerOutputs", "UUIDs"]
git-tree-sha1 = "7ed10d9c41b7bb392f3e645233e45ecf93217130"
uuid = "61eb1bfa-7361-4325-ad38-22787b887f55"
version = "0.2.0"
version = "0.3.0"

[[IRTools]]
deps = ["InteractiveUtils", "MacroTools", "Test"]
git-tree-sha1 = "8845400bd2d9815d37720251f1b53d27a335e1f4"
git-tree-sha1 = "1a4355e4b5b50be2311ebb644f34f3306dbd0410"
uuid = "7869d1d1-7146-5819-86e3-90919afe41df"
version = "0.3.2"
version = "0.3.1"

[[InteractiveUtils]]
deps = ["Markdown"]
Expand All @@ -201,9 +183,9 @@ version = "0.8.1"

[[LLVM]]
deps = ["CEnum", "Libdl", "Printf", "Unicode"]
git-tree-sha1 = "93d2e1e960fe47db1a9015e86fad1d47cf67cf59"
git-tree-sha1 = "dd3f584c3dbefe39b2a8fbafa1a3b77e31e21255"
uuid = "929cbde3-209d-540e-8aea-75f648917ca0"
version = "1.4.1"
version = "1.5.1"

[[LibGit2]]
deps = ["Printf"]
Expand Down Expand Up @@ -244,6 +226,11 @@ version = "0.4.3"
[[Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"

[[MuladdMacro]]
git-tree-sha1 = "c6190f9a7fc5d9d5915ab29f2134421b12d24a68"
uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221"
version = "0.2.2"

[[NNlib]]
deps = ["BinaryProvider", "Libdl", "LinearAlgebra", "Requires", "Statistics"]
git-tree-sha1 = "d9f196d911f55aeaff11b11f681b135980783824"
Expand Down Expand Up @@ -319,9 +306,9 @@ uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[[SpecialFunctions]]
deps = ["OpenSpecFun_jll"]
git-tree-sha1 = "e19b98acb182567bcb7b75bb5d9eedf3a3b5ec6c"
git-tree-sha1 = "d8d8b8a9f4119829410ecd706da4cc8594a1e020"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "0.10.0"
version = "0.10.3"

[[StaticArrays]]
deps = ["LinearAlgebra", "Random", "Statistics"]
Expand Down Expand Up @@ -370,13 +357,15 @@ version = "0.9.1"

[[Zlib_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "2f6c3e15e20e036ee0a0965879b31442b7ec50fa"
git-tree-sha1 = "a2e0d558f6031002e380a90613b199e37a8565bf"
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.2.11+9"
version = "1.2.11+10"

[[Zygote]]
deps = ["AbstractFFTs", "ArrayLayouts", "DiffRules", "FillArrays", "ForwardDiff", "Future", "IRTools", "InteractiveUtils", "LinearAlgebra", "MacroTools", "NNlib", "NaNMath", "Random", "Requires", "SpecialFunctions", "Statistics", "ZygoteRules"]
git-tree-sha1 = "707ceea58e2bd0ff3077ab13a92f8355181d3ee4"
deps = ["AbstractFFTs", "ArrayLayouts", "ChainRules", "FillArrays", "ForwardDiff", "Future", "IRTools", "InteractiveUtils", "LinearAlgebra", "MacroTools", "NNlib", "Random", "Requires", "Statistics", "ZygoteRules"]
git-tree-sha1 = "df4392bb922b6aacc36b131835dd54e65782f15a"
repo-rev = "dg/cuda"
repo-url = "https://github.com/FluxML/Zygote.jl.git"
uuid = "e88e6eb3-aa80-5325-afca-941959d7151f"
version = "0.4.20"

Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# v0.10.5
* Moved CUDA compatibility to use [CUDA.jl instead of CuArrays.jl](https://github.com/FluxML/Flux.jl/pull/1204)
* Add option for [same padding](https://github.com/FluxML/Flux.jl/pull/901) to conv and pooling layers by setting `pad=SamePad()`.
* Added option to set `bias` to [Flux.Zeros](https://github.com/FluxML/Flux.jl/pull/873) to eliminating `bias` from being trained.
* Added `GlobalMaxPool` and `GlobalMeanPool` [layers](https://github.com/FluxML/Flux.jl/pull/950) for performing global pooling operations.
Expand Down
6 changes: 3 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ version = "0.10.5"
[deps]
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
CodecZlib = "944b1d66-785c-5afd-91f1-9de20f533193"
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
CuArrays = "3a865a2d-5b23-5a0f-bc46-62713ec82fae"
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
Functors = "d9f16b24-f501-4c13-a1f2-28368ffc5196"
Juno = "e5e0dc1b-0480-54bc-9374-aad01c23163d"
Expand All @@ -30,7 +30,7 @@ AbstractTrees = "0.2, 0.3"
Adapt = "1"
CodecZlib = "0.5, 0.6, 0.7"
Colors = "0.8, 0.9, 0.10, 0.11, 0.12"
CuArrays = "2"
CUDA = "0"
Functors = "0.1"
Juno = "0.5, 0.6, 0.7, 0.8"
MacroTools = "0.3, 0.4, 0.5"
Expand All @@ -39,7 +39,7 @@ Reexport = "0.2"
StatsBase = "0"
ZipFile = "0.7, 0.8, 0.9"
Zygote = "0.4.13"
julia = "1.3"
julia = "1.4"

[extras]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
Expand Down
10 changes: 5 additions & 5 deletions src/Flux.jl
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export Descent, ADAM, Momentum, Nesterov, RMSProp,
ClipValue, ClipNorm


using CuArrays
using CUDA
const use_cuda = Ref(false)

include("utils.jl")
Expand All @@ -46,10 +46,10 @@ include("deprecations.jl")
include("cuda/cuda.jl")

function __init__()
use_cuda[] = CuArrays.functional() # Can be overridden after load with `Flux.use_cuda[] = false`
if CuArrays.functional()
if !CuArrays.has_cudnn()
@warn "CuArrays.jl found cuda, but did not find libcudnn. Some functionality will not be available."
use_cuda[] = CUDA.functional() # Can be overridden after load with `Flux.use_cuda[] = false`
if CUDA.functional()
if !CUDA.has_cudnn()
@warn "CUDA.jl found cuda, but did not find libcudnn. Some functionality will not be available."
end
end
end
Expand Down
6 changes: 3 additions & 3 deletions src/cuda/cuda.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
module CUDA
module CUDAint

using ..CuArrays
using ..CUDA

using CuArrays: CUDNN
using CUDA: CUDNN
include("curnn.jl")
include("cudnn.jl")

Expand Down
2 changes: 1 addition & 1 deletion src/cuda/cudnn.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ..Flux: data
import CuArrays.CUDNN: batchnorm, ∇batchnorm
import CUDA.CUDNN: batchnorm, ∇batchnorm

(BN::Flux.BatchNorm)(x::Union{CuArray{T,2},CuArray{T,4},CuArray{T,5}}, cache = nothing) where T<:Union{Float32, Float64} =
BN.λ.(batchnorm(BN.γ, BN.β, x, BN.μ, BN.σ², BN.momentum; cache = cache, alpha = 1, beta = 0, eps = BN.ϵ, training = Flux.istraining()))
Expand Down
3 changes: 1 addition & 2 deletions src/cuda/curnn.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import ..Flux: Flux, relu
using CuArrays.CUDAnative

CuRNN{T} = Flux.RNNCell{<:Union{typeof(tanh),typeof(relu)},<:CuArray{T,2},<:CuArray{T,1}}
CuGRU{T} = Flux.GRUCell{<:CuArray{T,2},<:CuArray{T,1}}
Expand Down Expand Up @@ -55,7 +54,7 @@ unbroadcast(x::AbstractArray, Δ) =
coerce_cuda(x::Union{CuArray,Nothing}) = x
coerce_cuda(x::Tuple) = coerce_cuda.(x)

coerce_cuda(x::AbstractArray) = x .+ CuArrays.fill(0)
coerce_cuda(x::AbstractArray) = x .+ CUDA.fill(0)

function struct_grad!(cx::Zygote.Context, x, x̄)
for f in fieldnames(typeof(x))
Expand Down
2 changes: 1 addition & 1 deletion src/functor.jl
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ end

cpu(m) = fmap(x -> adapt(Array, x), m)

gpu(x) = use_cuda[] ? fmap(CuArrays.cu, x) : x
gpu(x) = use_cuda[] ? fmap(CUDA.cu, x) : x

# Precision

Expand Down
12 changes: 6 additions & 6 deletions src/layers/stateless.jl
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ julia> Flux.binarycrossentropy.(σ.([-1.1491, 0.8619, 0.3127]), [1, 1, 0])
"""
binarycrossentropy(ŷ, y; ϵ=eps(ŷ)) = -xlogy(y, ŷ + ϵ) - xlogy(1 - y, 1 -+ ϵ)

# Re-definition to fix interaction with CuArrays.
CuArrays.@cufunc binarycrossentropy(ŷ, y; ϵ=eps(ŷ)) = -y*log(ŷ + ϵ) - (1 - y)*log(1 -+ ϵ)
# Re-definition to fix interaction with CUDA.
CUDA.@cufunc binarycrossentropy(ŷ, y; ϵ=eps(ŷ)) = -y*log(ŷ + ϵ) - (1 - y)*log(1 -+ ϵ)

"""
logitbinarycrossentropy(ŷ, y)
Expand All @@ -147,8 +147,8 @@ julia> Flux.logitbinarycrossentropy.([-1.1491, 0.8619, 0.3127], [1, 1, 0])
"""
logitbinarycrossentropy(ŷ, y) = (1 - y)*ŷ - logσ(ŷ)

# Re-definition to fix interaction with CuArrays.
CuArrays.@cufunc logitbinarycrossentropy(ŷ, y) = (1 - y)*ŷ - logσ(ŷ)
# Re-definition to fix interaction with CUDA.
CUDA.@cufunc logitbinarycrossentropy(ŷ, y) = (1 - y)*ŷ - logσ(ŷ)

"""
normalise(x; dims=1)
Expand Down Expand Up @@ -271,7 +271,7 @@ function xlogx(x)
result = x * log(x)
ifelse(iszero(x), zero(result), result)
end
CuArrays.@cufunc function xlogx(x)
CUDA.@cufunc function xlogx(x)
result = x * log(x)
ifelse(iszero(x), zero(result), result)
end
Expand All @@ -284,7 +284,7 @@ function xlogy(x, y)
result = x * log(y)
ifelse(iszero(x), zero(result), result)
end
CuArrays.@cufunc function xlogy(x, y)
CUDA.@cufunc function xlogy(x, y)
result = x * log(y)
ifelse(iszero(x), zero(result), result)
end
Expand Down
2 changes: 1 addition & 1 deletion src/onehot.jl
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import Adapt: adapt, adapt_structure

adapt_structure(T, xs::OneHotMatrix) = OneHotMatrix(xs.height, adapt(T, xs.data))

import .CuArrays: CuArray, CuArrayStyle, cudaconvert
import .CUDA: CuArray, CuArrayStyle, cudaconvert
import Base.Broadcast: BroadcastStyle, ArrayStyle
BroadcastStyle(::Type{<:OneHotMatrix{<:CuArray}}) = CuArrayStyle{2}()
cudaconvert(x::OneHotMatrix{<:CuArray}) = OneHotMatrix(x.height, cudaconvert(x.data))
Expand Down
8 changes: 4 additions & 4 deletions test/cuda/cuda.jl
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using Flux, Test
using Flux.CuArrays
using Flux.CUDA
using Flux: gpu

@info "Testing GPU Support"

@testset "CuArrays" begin
@testset "CUDA" begin

CuArrays.allowscalar(false)
CUDA.allowscalar(false)

x = randn(5, 5)
cx = gpu(x)
Expand Down Expand Up @@ -65,7 +65,7 @@ end
@test gradient(foo, cu(rand(1)))[1] isa CuArray
end

if CuArrays.has_cudnn()
if CUDA.has_cudnn()
@info "Testing Flux/CUDNN"
include("cudnn.jl")
include("curnn.jl")
Expand Down
2 changes: 1 addition & 1 deletion test/cuda/cudnn.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Flux, CuArrays, Test
using Flux, CUDA, Test
using Flux: pullback

@testset "CUDNN BatchNorm" begin
Expand Down
2 changes: 1 addition & 1 deletion test/cuda/curnn.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Flux, CuArrays, Test
using Flux, CUDA, Test
using Flux: pullback

@testset for R in [RNN, GRU, LSTM]
Expand Down
Loading

0 comments on commit 8f20b20

Please sign in to comment.