diff options
| author | Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> | 2022-07-13 15:55:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-13 15:55:30 -0400 |
| commit | 4af61e2296a49876c2d9e7cf192ae825302a83de (patch) | |
| tree | d067b944b9794fe5061bbf51e8ef6a39d5fcefbf /tests | |
| parent | 564f0d84a9c5276c05e8288955a7685f96278d1b (diff) | |
Added support for differentiating out and inout parameters. (#2323)
* Added out/inout tests
* Added support for out and inout parameters. Still untested
* Fixed and tested support for out and inout types
* Removed some comments
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/autodiff/inout-parameters-jvp.slang | 30 | ||||
| -rw-r--r-- | tests/autodiff/inout-parameters-jvp.slang.expected.txt | 5 | ||||
| -rw-r--r-- | tests/autodiff/out-parameters-jvp.slang | 28 | ||||
| -rw-r--r-- | tests/autodiff/out-parameters-jvp.slang.expected.txt | 5 |
4 files changed, 68 insertions, 0 deletions
diff --git a/tests/autodiff/inout-parameters-jvp.slang b/tests/autodiff/inout-parameters-jvp.slang new file mode 100644 index 000000000..989e56c02 --- /dev/null +++ b/tests/autodiff/inout-parameters-jvp.slang @@ -0,0 +1,30 @@ +//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; + +__differentiate_jvp void h(float x, float y, inout float z) +{ + float m = x + y; + float n = x - y; + z = z + m * n + 2 * x * y; +} + + +[numthreads(1, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + float x = 2.0; + float y = 3.5; + float z = 1.0; + float dx = 1.0; + float dy = 0.5; + float dz = 2.5; + + __jvp(h)(x, y, z, dx, dy, dz); + + outputBuffer[0] = dz; // Expect: 12.0 + outputBuffer[1] = z; // Expect: 1.0 + +}
\ No newline at end of file diff --git a/tests/autodiff/inout-parameters-jvp.slang.expected.txt b/tests/autodiff/inout-parameters-jvp.slang.expected.txt new file mode 100644 index 000000000..d8a590c0e --- /dev/null +++ b/tests/autodiff/inout-parameters-jvp.slang.expected.txt @@ -0,0 +1,5 @@ +type: float +12.0 +1.0 +0.0 +0.0
\ No newline at end of file diff --git a/tests/autodiff/out-parameters-jvp.slang b/tests/autodiff/out-parameters-jvp.slang new file mode 100644 index 000000000..58c6cfeb0 --- /dev/null +++ b/tests/autodiff/out-parameters-jvp.slang @@ -0,0 +1,28 @@ +//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; + +__differentiate_jvp void h(float x, float y, out float result) +{ + float m = x + y; + float n = x - y; + result = m * n + 2 * x * y; +} + + +[numthreads(1, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + float x = 2.0; + float y = 3.5; + float dx = 1.0; + float dy = 0.5; + + float dresult = 0.0f; + __jvp(h)(x, y, dx, dy, dresult); + + outputBuffer[0] = dresult; // Expect: 9.5 + +}
\ No newline at end of file diff --git a/tests/autodiff/out-parameters-jvp.slang.expected.txt b/tests/autodiff/out-parameters-jvp.slang.expected.txt new file mode 100644 index 000000000..555935fc4 --- /dev/null +++ b/tests/autodiff/out-parameters-jvp.slang.expected.txt @@ -0,0 +1,5 @@ +type: float +9.5 +0.0 +0.0 +0.0
\ No newline at end of file |
