summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com>2022-07-13 15:55:30 -0400
committerGitHub <noreply@github.com>2022-07-13 15:55:30 -0400
commit4af61e2296a49876c2d9e7cf192ae825302a83de (patch)
treed067b944b9794fe5061bbf51e8ef6a39d5fcefbf /tests
parent564f0d84a9c5276c05e8288955a7685f96278d1b (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.slang30
-rw-r--r--tests/autodiff/inout-parameters-jvp.slang.expected.txt5
-rw-r--r--tests/autodiff/out-parameters-jvp.slang28
-rw-r--r--tests/autodiff/out-parameters-jvp.slang.expected.txt5
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