1
1
using
2
+ CUDA,
2
3
FFTW,
3
4
LinearAlgebra,
4
5
Printf,
@@ -15,7 +16,7 @@ using FourierFlows: parsevalsum2
15
16
using LinearAlgebra: mul!, ldiv!, norm
16
17
17
18
# the devices on which tests will run
18
- devices = CUDA. has_cuda () ? (CPU (), GPU ()) : (CPU (),)
19
+ devices = CUDA. functional () ? (CPU (), GPU ()) : (CPU (),)
19
20
20
21
const rtol_fft = 1e-12
21
22
const rtol_output = 1e-12
@@ -365,10 +366,11 @@ for dev in devices
365
366
@test repr (diag) == " Diagnostic\n ├─── calc: get_sol\n ├─── prob: FourierFlows.Problem{DataType, Vector{ComplexF64}, Float64, Vector{Int64}}\n ├─── data: 101-element Vector{Vector{ComplexF64}}\n ├────── t: 101-element Vector{Float64}\n ├── steps: 101-element Vector{Int64}\n ├─── freq: 1\n └────── i: 1"
366
367
@test repr (out) == " Output\n ├──── prob: FourierFlows.Problem{DataType, Vector{ComplexF64}, Float64, Vector{Int64}}\n ├──── path: output.jld2\n └── fields: Dict{Symbol, Function}()"
367
368
else
368
- @test repr (prob. vars) == " Variables\n ├───── variable: c -> 128-element " * string ( ArrayType (dev)) * " {Float64, 1}\n ├───── variable: cx -> 128-element " * string ( ArrayType (dev)) * " {Float64, 1}\n ├───── variable: ch -> 65-element " * string ( ArrayType (dev)) * " {ComplexF64, 1}\n └───── variable: cxh -> 65-element " * string ( ArrayType (dev)) * " {ComplexF64, 1}\n "
369
- @test repr (diag) == " Diagnostic\n ├─── calc: get_sol\n ├─── prob: FourierFlows.Problem{DataType, " * string ( ArrayType (dev)) * " {ComplexF64, 1}, Float64, " * string ( ArrayType (dev)) * " {Int64, 1}}\n ├─── data: 101-element Vector{" * string ( ArrayType (dev)) * " {ComplexF64, 1}}\n ├────── t: 101-element Vector{Float64}\n ├── steps: 101-element Vector{Int64}\n ├─── freq: 1\n └────── i: 1"
370
- @test repr (out) == " Output\n ├──── prob: FourierFlows.Problem{DataType, " * string ( ArrayType (dev)) * " {ComplexF64, 1}, Float64, " * string ( ArrayType (dev)) * " {Int64, 1}}\n ├──── path: output.jld2\n └── fields: Dict{Symbol, Function}()"
369
+ @test repr (prob. vars) == " Variables\n ├───── variable: c -> 128-element CuArray {Float64, 1, CUDA.Mem.DeviceBuffer }\n ├───── variable: cx -> 128-element CuArray {Float64, 1, CUDA.Mem.DeviceBuffer }\n ├───── variable: ch -> 65-element CuArray {ComplexF64, 1, CUDA.Mem.DeviceBuffer }\n └───── variable: cxh -> 65-element CuArray {ComplexF64, 1, CUDA.Mem.DeviceBuffer }\n "
370
+ @test repr (diag) == " Diagnostic\n ├─── calc: get_sol\n ├─── prob: FourierFlows.Problem{DataType, CuArray {ComplexF64, 1, CUDA.Mem.DeviceBuffer }, Float64, CuArray {Int64, 1, CUDA.Mem.DeviceBuffer }}\n ├─── data: 101-element Vector{CuArray {ComplexF64, 1, CUDA.Mem.DeviceBuffer }}\n ├────── t: 101-element Vector{Float64}\n ├── steps: 101-element Vector{Int64}\n ├─── freq: 1\n └────── i: 1"
371
+ @test repr (out) == " Output\n ├──── prob: FourierFlows.Problem{DataType, CuArray {ComplexF64, 1, CUDA.Mem.DeviceBuffer }, Float64, CuArray {Int64, 1, CUDA.Mem.DeviceBuffer }}\n ├──── path: output.jld2\n └── fields: Dict{Symbol, Function}()"
371
372
end
373
+
372
374
@test repr (prob. eqn) == " Equation\n ├──────── linear coefficients: L\n │ ├───type: Int64\n │ └───size: (65,)\n ├───────────── nonlinear term: calcN!()\n └─── type of state vector sol: ComplexF64"
373
375
@test repr (prob. clock) == " Clock\n ├─── timestep dt: 0.01\n ├────────── step: 0\n └──────── time t: 0.0"
374
376
@test repr (prob) == " Problem\n ├─────────── grid: grid (on " * FourierFlows. griddevice (prob. grid) * " )\n ├───── parameters: params\n ├────── variables: vars\n ├─── state vector: sol\n ├─────── equation: eqn\n ├────────── clock: clock\n └──── timestepper: RK4TimeStepper"
0 commit comments