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

automatically translate pure python models to C #58

Closed
wants to merge 53 commits into from
Closed

automatically translate pure python models to C #58

wants to merge 53 commits into from

Conversation

pkienzle
Copy link
Contributor

@pkienzle pkienzle commented Jan 4, 2018

As an exploratory project we created a translator that converts pure python models directly to C, allowing them to run on the GPU. See for example _cylpy, the cylinder model in python.

TODO: update example to define F(q) rather than I(q)

For now this is only enabled if py2c = True is in the model file. The impact on the rest of the code is minimal, so including this shouldn't break anything.

Long term it would be nice to have only C models so that we do not need separate code paths for python models and C models. The python model infrastructure has already fallen behind, and doesn't support the changes for jitter or magnetism. Future changes will become increasingly difficult.

On the other hand, updating the translation code to production quality and maintaining it will also require work. It is not extensively tested, and it only supports a small subset of python. It is good enough for fortran-style code, but idiomatic python and numpy code will quickly trip it up.

I will leave it to others to decide if it will be easier to teach the SAS community to write models in C than it will be to teach the community to write models in restricted python AND maintain the restricted python to C converter.

Note that there are several projects that do a better job of translating python to C (nuitka, pypy, cython and numba for example), but I don't know if we can get any of them to produce code that we can run in OpenCL.

apply after beta approx branch

Paul Kienzle and others added 30 commits December 1, 2017 14:36
@butlerpd butlerpd changed the base branch from ticket-1043 to master January 16, 2018 23:36
@pkienzle
Copy link
Contributor Author

Updated to use the beta_approx branch

@pkienzle pkienzle changed the base branch from master to beta_approx November 9, 2018 19:30
@pkienzle pkienzle changed the base branch from beta_approx to master March 19, 2019 14:50
@wpotrzebowski wpotrzebowski self-requested a review March 27, 2019 09:44
@timsnow timsnow self-requested a review September 30, 2021 14:19
@wpotrzebowski
Copy link

As agreed on the call it will be moved to discussions

@wpotrzebowski
Copy link

Closing this PR and archiving in discussion #559

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.

3 participants