Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Old master #59

Draft
wants to merge 1,494 commits into
base: master
Choose a base branch
from
Draft

Old master #59

wants to merge 1,494 commits into from

Conversation

ZuseZ4
Copy link
Member

@ZuseZ4 ZuseZ4 commented Oct 29, 2023

Just in case that we want to look something up

wsmoses and others added 30 commits October 4, 2022 16:03
* Add addr replacement handling of memtransfer

* Update test
* Add MLIR build infra

* With tests

* Update readme

* Add initial infra

* Continue pushing towards forward mode infra

* Most primitive functioning test

* Fix cmake

* Handle control flow (fwd)

* Add scf.for

* Update enzyme-mlir.yml

* Introduce a MLIR OpInterface and redistribute code

Note that the interface is not yet implement by the ops. This will be
done separately.

* Fix CI

* Fix CI

* Fix format

* Add python3-dev

* Reduce link

* Fix build and test

Real includes must precede .inc files. A function was not returning
anything leading to a segfault.

* Factor gradient implementations out into external interface models

MLIR-code must use interfaces instead of giant switches. External models
allow for interfaces to be attached to foreign dialect ops without
modifying them.

* Factor out the type interface for shadow and null

Introduce a separate type interface for types that will be handled by
AD. This interface currently allows for defining the (unique) shadow
type of the given type and for building a null value of the type. This
is a step towards removing the dependency on the arithmetic dialect from
the AD pass.

* Drop AD pass dependency on the Arith dialect

Now that null constant manipulation has been factored out into the
interface, the only remaining use is an attempt to match a constant. Use
the robust dialect-agnostic matcher instead.

* Factor out common OpBuilder manipulation into the driver

* Drop the dependency on FuncOps from GradientUtils

We don't need to know the specific op class of a function-like op to
clone it. This makes the autodiff interface independent of the func
dialect, but the AD pass still depends on it because it creates a
function call. There is currently no way of creating a function call in
an abstracted way, short of which the pass dependency on the func
dialect cannot be removed.

* Update enzyme-mlir.yml

* Only release llvm

* Fix CI

* Rebase

* Simplify TA

Co-authored-by: Alex Zinenko <zinenko@google.com>
* Consider even atomic loads as non-active writing

* Fix dso local nofree
Add autodiff attribute to foreign mods

Forward information to codegen backend
* Only with inst

* cleanup

* Add external warning

* Add checkedmerge

* fixup

* preserve ptls

* Fix LLVM Load default TT

* Fix phi lose
* Add noalias preservation to unwrap

* Fixup

* ix up
* Custom zero

* Enable on differentials

* Cleanup
* Custom forward zero

* Fix activity analysis of agg
* Keep integer extract

* Fixup
* Cleanup allocation and remat

* fix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

10 participants