diff options
| author | Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> | 2023-08-15 00:47:43 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-14 21:47:43 -0700 |
| commit | 113a257aafe4403c3ab905098d0560635ca94286 (patch) | |
| tree | cab658382229c357d59960bbe56d31c60f031dd1 /tests | |
| parent | b05b126e0975f84e3505b2271e06d567e1c13692 (diff) | |
Add auto-diff support for `IRSwizzleStore` (#3102)
* Add auto-diff support for `IRSwizzleStore`
- Lower IRSwizzleStore to multiple stores during AD preprocess.
- Fix typo in `transcribeNonDiffInst`
* Remove unnecessary file & add more robust check for 'local' addresses
* Fix.
* Update slang-ir-autodiff-fwd.cpp
---------
Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/autodiff/swizzled-store.slang | 39 | ||||
| -rw-r--r-- | tests/autodiff/swizzled-store.slang.expected.txt | 5 |
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/autodiff/swizzled-store.slang b/tests/autodiff/swizzled-store.slang new file mode 100644 index 000000000..58980616b --- /dev/null +++ b/tests/autodiff/swizzled-store.slang @@ -0,0 +1,39 @@ +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer<float> outputBuffer; + +typedef DifferentialPair<float2> dpfloat2; +typedef DifferentialPair<float3> dpfloat3; +typedef DifferentialPair<float4> dpfloat4; + +[Differentiable] +float2 f(float3 x) +{ + float3 u; + u.zy = x.yx; + return u.zy; +} + +[numthreads(1, 1, 1)] +void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) +{ + { + float3 a = float3(2.0, 2.0, 2.0); + float3 da = float3(1.0, 0.5, 1.0); + + outputBuffer[0] = fwd_diff(f)(dpfloat3(a, da)).d.x; + } + + { + float3 a = float3(2.0, 2.0, 2.0); + var dpa = diffPair(a); + + bwd_diff(f)(dpa, float2(0.5, 1.0)); + + outputBuffer[1] = dpa.d.x; // 1.0 + outputBuffer[2] = dpa.d.y; // 0.5 + outputBuffer[3] = dpa.d.z; // 0.0 + } +} diff --git a/tests/autodiff/swizzled-store.slang.expected.txt b/tests/autodiff/swizzled-store.slang.expected.txt new file mode 100644 index 000000000..8fe60c0db --- /dev/null +++ b/tests/autodiff/swizzled-store.slang.expected.txt @@ -0,0 +1,5 @@ +type: float +0.500000 +1.000000 +0.500000 +0.000000 |
