From b7ffb7d499412a788e58343d40723086c8ecf038 Mon Sep 17 00:00:00 2001 From: TilliFe Date: Tue, 13 May 2025 14:22:32 +0200 Subject: [PATCH 1/2] Add recipe NABLA: Remove Endia package and replace it with its successor. --- recipes/endia/image.jpeg | Bin 12900 -> 0 bytes recipes/endia/test.mojo | 41 --------------------------- recipes/nabla/image.jpeg | Bin 0 -> 63367 bytes recipes/{endia => nabla}/recipe.yaml | 20 ++++++------- recipes/nabla/test.mojo | 37 ++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 51 deletions(-) delete mode 100644 recipes/endia/image.jpeg delete mode 100644 recipes/endia/test.mojo create mode 100644 recipes/nabla/image.jpeg rename recipes/{endia => nabla}/recipe.yaml (52%) create mode 100644 recipes/nabla/test.mojo diff --git a/recipes/endia/image.jpeg b/recipes/endia/image.jpeg deleted file mode 100644 index 13fccfafcb5643c1afaaabdfc04ceb0bb7f82c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12900 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 D!)=ot diff --git a/recipes/endia/test.mojo b/recipes/endia/test.mojo deleted file mode 100644 index d1c70285..00000000 --- a/recipes/endia/test.mojo +++ /dev/null @@ -1,41 +0,0 @@ -import endia -import testing - -# Define the function -def foo(x: endia.Array) -> endia.Array: - return endia.sum(x**2) - - -def main(): - # Initialize variable - requires_grad=True needed! - x = endia.array("[1.0, 2.0, 3.0]", requires_grad=True) - - # Compute result, first aendia secoendia order derivatives - y = foo(x) - y.backward(create_graph=True) - dy_dx = x.grad() - d2y_dx2 = endia.autograd.functional.grad(outs=dy_dx, inputs=x)[0] - - # Create callables for the jacobian aendia hessian - foo_jac = endia.grad(foo) - foo_hes = endia.grad(foo_jac) - - # Initialize variable - no requires_grad=True needed - x = endia.array("[1.0, 2.0, 3.0]") - - # Compute result aendia derivatives (with type hints) - y = foo(x) - dy_dx = foo_jac(x)[endia.Array] - d2y_dx2 = foo_hes(x)[endia.Array] - - testing.assert_equal(y.size(), 1) - testing.assert_equal(y.load(0), 14.0) - - testing.assert_equal(dy_dx.size(), 3) - testing.assert_equal(dy_dx.load(0), 2.0) - - testing.assert_equal(d2y_dx2.size(), 9) - testing.assert_equal(d2y_dx2.load(0), 2.0) - testing.assert_equal(d2y_dx2.load(1), 0.0) - - diff --git a/recipes/nabla/image.jpeg b/recipes/nabla/image.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6657f1ef0f1e299623de5ebc74676cc7e208b170 GIT binary patch literal 63367 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 O(>Z List[nabla.Array]: + return List( + nabla.sum(nabla.sin(args[0] * args[1])), + nabla.sum(nabla.cos(args[0] * args[1])), + ) + + var foo_vmapped = nabla.vmap(foo) + var foo_d1 = nabla.jacrev(foo_vmapped) + var foo_d2 = nabla.jacfwd(foo_d1) + var foo_d3 = nabla.jacfwd(foo_d2) + + var args = List(nabla.arange((2, 3)), nabla.arange((2, 3))) + + var res = foo(args) + print("foo checksum: ", nabla.sum(res[0])) # , nabla.sum(res[1])) + + var d1 = foo_d1(args) + print( + "foo_d1 checksum: ", nabla.sum(d1[0]) + ) # , nabla.sum(d1[1]), nabla.sum(d1[2]), nabla.sum(d1[3])) + + var d2 = foo_d2(args) + print( + "foo_d2 checksum: ", nabla.sum(d2[0]) + ) # , nabla.sum(d2[1]), nabla.sum(d2[2]), nabla.sum(d2[3]), nabla.sum(d2[4]), nabla.sum(d2[5]), nabla.sum(d2[6]), nabla.sum(d2[7])) + + var d3 = foo_d3(args) + print( + "foo_d3 checksum: ", nabla.sum(d3[0]) + ) # , nabla.sum(d3[1]), nabla.sum(d3[2]), nabla.sum(d3[3]), nabla.sum(d3[4]), nabla.sum(d3[5]), nabla.sum(d3[6]), nabla.sum(d3[7]), nabla.sum(d3[8]), nabla.sum(d3[9]), nabla.sum(d3[10]), nabla.sum(d3[11]), nabla.sum(d3[12]), nabla.sum(d3[13]), nabla.sum(d3[14]), nabla.sum(d3[15])) \ No newline at end of file From a3f7e3ca9ad5d60c7ae666ad21125d1bdcb2c26f Mon Sep 17 00:00:00 2001 From: TilliFe Date: Tue, 13 May 2025 19:33:53 +0200 Subject: [PATCH 2/2] Fixed export name from endia to nabla, as it should!!!! --- recipes/nabla/recipe.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/recipes/nabla/recipe.yaml b/recipes/nabla/recipe.yaml index 8d9e2978..c3fbbd23 100644 --- a/recipes/nabla/recipe.yaml +++ b/recipes/nabla/recipe.yaml @@ -12,8 +12,7 @@ source: build: number: 0 script: - - mojo package nabla -o ${{ PREFIX }}/lib/mojo/endia.mojopkg - + - mojo package nabla -o ${{ PREFIX }}/lib/mojo/nabla.mojopkg requirements: host: - max =25.3 @@ -24,7 +23,7 @@ tests: - script: - if: unix then: - - mojo run test.mojo + - mojo test.mojo requirements: run: - max =25.3 @@ -33,12 +32,12 @@ tests: - test.mojo about: - homepage: https://nablaml.com + homepage: https://github.com/nabla-ml/nabla license: Apache-2.0 license_file: LICENSE - summary: Differentiable Programming in Mojo + summary: Differtiable Programming in Mojo. repository: https://github.com/nabla-ml/nabla extra: maintainers: - - TilliFe + - TilliFe \ No newline at end of file