diff options
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 |
