|
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