|
1 | 1 | // RUN: %target-swift-frontend -emit-sil -verify -O %s | %FileCheck %s |
2 | 2 | // REQUIRES: swift_in_compiler |
3 | | -// UNSUPPORTED: OS=windows-msvc |
4 | 3 |
|
5 | 4 | import _Differentiation |
6 | | -#if canImport(Glibc) |
7 | | -import Glibc |
8 | | -#else |
9 | | -import Foundation |
10 | | -#endif |
11 | 5 |
|
12 | 6 | // Simulation parameters |
13 | 7 | let trials = 100 |
14 | 8 | let timesteps = 20 |
15 | 9 | let dTime: Float = 0.1 |
16 | | -let printGradToCompare = false |
17 | 10 |
|
18 | 11 | // Definitions |
19 | 12 | let π = Float.pi |
@@ -219,47 +212,17 @@ func dontLetTheCompilerOptimizeThisAway<T>(_ x: T) { |
219 | 212 | blackHole = x |
220 | 213 | } |
221 | 214 |
|
222 | | -func measure<T>(_ block: () throws -> T) throws -> (time: Double, result: T) { |
223 | | - let t0 = DispatchTime.now() |
224 | | - let result = try block() |
225 | | - let t1 = DispatchTime.now() |
226 | | - let elapsed = Double(t1.uptimeNanoseconds - t0.uptimeNanoseconds) / 1E9 |
227 | | - return (elapsed, result) |
228 | | -} |
229 | | - |
230 | 215 | @differentiable(reverse) |
231 | 216 | func fullPipe(simParams: SimParams) -> Float { |
232 | 217 | let pred = simulate(simParams: simParams) |
233 | 218 | let loss = lossCalc(pred: pred, gt: 27.344767) |
234 | 219 | return loss |
235 | 220 | } |
236 | 221 |
|
237 | | -var totalPureForwardTime: Double = 0 |
238 | | -var totalGradientTime: Double = 0 |
239 | | - |
240 | 222 | for _ in 0 ..< trials { |
241 | | - let (forwardOnly, _) = try measure { |
242 | | - return fullPipe(simParams: simParams) |
243 | | - } |
| 223 | + let forwardOnly = fullPipe(simParams: simParams) |
244 | 224 | dontLetTheCompilerOptimizeThisAway(forwardOnly) |
245 | 225 |
|
246 | | - let (gradientTime, grad) = try measure { |
247 | | - return gradient(at: simParams, of: fullPipe) |
248 | | - } |
| 226 | + let grad = gradient(at: simParams, of: fullPipe) |
249 | 227 | dontLetTheCompilerOptimizeThisAway(grad) |
250 | | - |
251 | | - if printGradToCompare { |
252 | | - print(grad) |
253 | | - } |
254 | | - |
255 | | - totalPureForwardTime += forwardOnly |
256 | | - totalGradientTime += gradientTime |
257 | 228 | } |
258 | | - |
259 | | -let averagePureForward = totalPureForwardTime / Double(trials) |
260 | | -let averageGradient = totalGradientTime / Double(trials) |
261 | | - |
262 | | -print("trials: \(trials)") |
263 | | -print("timesteps: \(timesteps)") |
264 | | -print("average forward only time: \(averagePureForward) seconds") |
265 | | -print("average forward and back (gradient) time: \(averageGradient) seconds") |
0 commit comments