Pyjion - A JIT for Python based upon CoreCLR

Overview

Pyjion

Designing a JIT API for CPython

A note on development

Development has moved to https://github.com/tonybaloney/Pyjion

FAQ

What are the goals of this project?

There are three goals for this project.

  1. Add a C API to CPython for plugging in a JIT
  2. Develop a JIT module using CoreCLR utilizing the C API mentioned in goal #1
  3. Develop a C++ framework that any JIT targeting the API in goal #1 can use to make development easier

Goal #1 is to make it so that CPython can have a JIT plugged in as desired (CPython is the Python implementation you download from https://www.python.org/). That would allow for an ecosystem of JIT implementations for Python where users can choose the JIT that works best for their use-case. And by using CPython we hope to have compatibility with all code that it can run (both Python code as well as C extension modules).

Goal #2 is to develop a JIT for CPython using the JIT provided by the CoreCLR. It's cross-platform, liberally licensed, and the original creator of Pyjion has a lot of experience with it.

Goal #3 is to abstract out all of the common bits required to write a JIT implementation for CPython. The idea is to create a framework where JIT implementations only have to worry about JIT-specific stuff like how to do addition and not when to do addition.

How do you pronounce "Pyjion"?

Like the word "pigeon". @DinoV wanted a name that had something with "Python" -- the "Py" part -- and something with "JIT" -- the "JI" part -- and have it be pronounceable.

How do this compare to ...

PyPy?

PyPy is an implementation of Python with its own JIT. The biggest difference compared to Pyjion is that PyPy doesn't support all C extension modules without modification unless they use CFFI or work with the select subset of CPython's C API that PyPy does support. Pyjion also aims to support many JIT compilers while PyPy only supports their custom JIT compiler.

Pyston?

Pyston is an implementation of Python using LLVM as a JIT compiler. Compared to Pyjion, Pyston has partial CPython C API support but not complete support. Pyston also only supports LLVM as a JIT compiler.

Numba?

Numba is a JIT compiler for "array-oriented and math-heavy Python code". This means that Numba is focused on scientific computing while Pyjion tries to optimize all Python code. Numba also only supports LLVM.

IronPython?

IronPython is an implementation of Python that is implemented using .NET. While IronPython tries to be usable from within .NET, Pyjion does not have a compatibility story with .NET. This also means IronPython cannot use C extension modules while Pyjion can.

Psyco?

Psyco was a module that monkeypatched CPython to add a custom JIT compiler. Pyjion wants to introduce a proper C API for adding a JIT compiler to CPython instead of monkeypatching it. It should be noted the creator of Psyco went on to be one of the co-founders of PyPy.

Unladen Swallow?

Unladen Swallow was an attempt to make LLVM be a JIT compiler for CPython. Unfortunately the project lost funding before finishing their work after having to spend a large amount of time fixing issues in LLVM's JIT compiler (which has greatly improved over the subsequent years).

Nuitka and Shedskin?

Both Nuitka and Shedskin are Python-to-C++ transpilers, which means they translate Python code into equivalent C++ code. Being a JIT, Pyjion is not a transpiler.

Are you going to support OS X and/or Linux?

Yes! Goals #1 and #3 are entirely platform-agnostic while goal #2 of using CoreCLR as a JIT compiler is not an impedence to supporting OS X or Linux as it already supports the major OSs. The only reason Pyjion doesn't directly support Linux or OS X is entirely momentum/laziness: since the work is being driven by Microsoft employees, it simply meant it was easier to get going on Windows.

Will this ever ship with CPython?

Goal #1 is explicitly to add a C API to CPython to support JIT compilers. There is no expectation, though, to ship a JIT compiler with CPython. This is because CPython compiles with nothing more than a C89 compiler, which allows it to run on many platforms. But adding a JIT compiler to CPython would immediately limit it to only the platforms that the JIT supports.

Does this help with using CPython w/ .NET or UWP?

No.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Comments
  • Use the release branch of CoreCLR

    Use the release branch of CoreCLR

    There is a bug in the referenced CoreCLR submodule in master.

    The NuGet config in CoreCLR/tests/src/runtime (tests) references a feed on MyGet that no longer exists. https://github.com/dotnet/coreclr/blob/release/1.0.0-rc2/tests/src/NuGet.Config

    When you run BuildDeps.bat it will try and build CoreCLR which fails at the restore packages phase, since the feed no longer exists.

    opened by tonybaloney 18
  • _Py_IDENTIFIER macro expansion issue

    _Py_IDENTIFIER macro expansion issue

    Im trying to build Pyjion using VS 2015 Update 3, cl Compiler Version 19.00.24224. When I build pyjion.sln, the build fails on _Py_IDENTIFIER macros. (The first one being here) It seems the designated initializer the macro expands to is not valid. This seems strange to me, and Im not sure where to proceed. The full output log is https://gist.github.com/ethanhs/2538016e4b8e9b80b20d8cd56e06a996

    Im not sure why this would fail exactly. The same macro is used without issue in CPython sources, which worked fine with the same compiler. I was hoping to get some guidance on what the issue could be. I have tried re-installing Visual Studio to no avail.

    opened by ethanhs 9
  • Improve ROT_TWO support

    Improve ROT_TWO support

    This partially fixes #88 by improving how code for ROT_TWO is generated. In particular, optimized locals are used for integers and floats. A similar fix will be made for ROT_THREE in a following patch.

    opened by meadori 6
  • Implement a minimal API for CPython

    Implement a minimal API for CPython

    API in CPython becomes:

    1. JitInit()
    2. EvalFrame()
    3. Code objects gain co_extra
    4. PyEval_EvalFrameEx_NoJit() (which should be named something else eventually)
    5. Interpreter state gains eval_frame

    Everything else is contained within Pyjion itself.

    opened by brettcannon 6
  • [WIP] CoreCLR 2.0 port

    [WIP] CoreCLR 2.0 port

    This is the beginning of my work on moving Pyjion to CoreCLR 2.0. Currently I am having some issues with the "real jit" not existing, but I just need to read through things a bit more. I just wanted to put this out there and get feedback (if there is any) on my work so far.

    WIP - DO NOT MERGE

    After this (hopefully) gets merged, I will move on to porting to a cmake build system.

    opened by ethanhs 5
  • test_concurrent_futures fails

    test_concurrent_futures fails

    FAIL: test_first_completed (test.test_concurrent_futures.ProcessPoolWaitTests)

    Traceback (most recent call last): File "C:\Users\brcan\Documents\Repositories\Pyjion\Python\lib\test\test_concurrent_futures.py", line 204, in test_firs t_completed self.assertEqual(set([future1]), done) AssertionError: Items in the first set but not the second: <Future at 0x1dc452a8468 state=running> Items in the second set but not the first: <Future at 0x1dc45820740 state=finished returned NoneType>

    FAIL: test_first_exception (test.test_concurrent_futures.ProcessPoolWaitTests)

    Traceback (most recent call last): File "C:\Users\brcan\Documents\Repositories\Pyjion\Python\lib\test\test_concurrent_futures.py", line 228, in test_firs t_exception self.assertEqual(set([future1, future2]), finished) AssertionError: Items in the second set but not the first: <Future at 0x1dc45820740 state=finished returned NoneType>


    bug 
    opened by brettcannon 5
  • Development Stopped?

    Development Stopped?

    Since no activity for 2 months , this project is stopped? Shouldn't microsoft just contribute to PyPy development ? PyPy team is already working back on CPyext compatiblity and it is a lot improving.

    opened by v3ss0n 4
  • Improve ROT_THREE support

    Improve ROT_THREE support

    This patch changes the implementation of ROT_THREE to only escape its operands when the types are not all ints or all floats. Furthermore, the ROT_THREE code generator has been enhanced to use the appropriate type for defining locals.

    This is the companion patch to 539866f0ec5e3595bfd5e8c9117084f2517dbc58 and is the last patch to properly resolve issue #88.

    opened by meadori 4
  • Any plan for Linux support?

    Any plan for Linux support?

    I'm a bit of a know-nothing, so pardon if this is a stupid question.

    Are there plans to make this buildable on (or at least for) Linux? A cursory glance through some of the source makes this seem non-trivial, but I figure I'd ask.

    Thanks much!

    opened by evanfoster 4
  • Can't execute `python -m test`

    Can't execute `python -m test`

    Triggers an assertion failure at https://github.com/Microsoft/Pyjion/blob/master/Pyjion/absint.h#L176. If you run with test -n you end up with:

    PS C:\Users\brcan\Documents\Repositories\Pyjion\Python> .\python.bat -m test -n
    Running Debug|x64 interpreter...
    == CPython 3.6.0a0 (default, Oct 26 2015, 11:12:33) [MSC v.1900 64 bit (AMD64)]
    c:\users\brcan\documents\repositories\pyjion\pyjion\absint.h(176) : Assertion failed: !(valueInfo.Value == &Undefined && !isUndefined)
    ==   Windows-10.0.10240 little-endian
    ==   hash algorithm: siphash24 64bit
    ==   C:\Users\brcan\Documents\Repositories\Pyjion\Python\build\test_python_6592
    Testing with flags: sys.flags(debug=0, inspect=0, interactive=0, optimize=0, dont_write_bytecode=0, no_user_site=0, no_site=0, ignore_environment=0, verbose=0, bytes_warning=0, quiet=0, hash_randomization=1, isolated=0)
    [  1/398] test_grammar
    Unknown unsupported opcode: YIELD_FROMC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(159) : Assertion failed: vector iterator + offset out of range
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector(160) : Assertion failed: "Standard C++ Libraries Out of Range" && 0
    
    bug 
    opened by brettcannon 4
  • Macro preprocessing error from g++ and clang++

    Macro preprocessing error from g++ and clang++

    g++ (6.3.1) and clang++ (3.9.1), I've got

    /home/ryuta/packages/pyjion/src/pyjion-git/Pyjion/taggedptr.h:60:10: error: pasting "*" and "tmpIn" does not give a valid preprocessing token
      PyObject* ##name = init_number(tmp_##name, value);
              ^
    /home/ryuta/packages/pyjion/src/pyjion-git/Pyjion/intrins.cpp:2445:9: note: in expansion of macro ‘INIT_TMP_NUMBER’
             INIT_TMP_NUMBER(tmpIn, UNTAG_IT(inI));
             ^~~~~~~~~~~~~~~
            size_t tmp_tmpIn[(((sizeof(PyVarObject) + sizeof(uint32_t) * ((((sizeof(tagged_ptr) * 8) - 1) + 30 - 1) / 30)) / sizeof(size_t)) + sizeof(size_t))]; PyObject*tmpIn = init_number(tmp_tmpIn, ((inI) >> 1));;
            *out = PyLong_AsDouble(tmpIn);
        }
        else {
            *out = PyLong_AsDouble(in);
        }
        return *out == -1.0 && PyErr_Occurred();
    }
    

    PyObject* ##name = init_number(tmp_##name, value);

    get preprocessed to

    PyObject*tmpIn = init_number(tmp_tmpIn, ((inI) >> 1))

    ## of ##name in PyObject* ##name = init_number(tmp_##name, value); should be removed. Is this change valid? I don't have a Windows machine to check this change won't break the build.

    opened by oroppas 3
  • error C2664: cannot convert 'const WCHAR *' to 'const std::basic_string<char1 6_t,std::char_traits<char16_t>,std::allocator<char16_t>> &

    error C2664: cannot convert 'const WCHAR *' to 'const std::basic_string,std::allocator> &

    Hi, I was unable to compile the following snippet of code:

        map<std::u16string, int> intSettings;
    
            int getIntConfigValue(const WCHAR* name, int defaultValue) override
            {
            if (intSettings.find(name) != intSettings.end())
                return intSettings[name];
            return defaultValue;
            }
    

    from Pyjion\cee.h. I'm not quite sure how to fix this easily...

    Here's the full log:

    [ 33%] Building CXX object CMakeFiles/pyjionlib.dir/Pyjion/pycomp.cpp.obj
    pycomp.cpp
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(86): error C2664: 'std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const std::u16string,int>>>> std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::find(const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &) const': cannot convert argument 1 from 'const WCHAR *' to 'const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &'
            with
            [
                _Kty=std::u16string,
                _Ty=int,
                _Pr=std::less<std::u16string>,
                _Alloc=std::allocator<std::pair<const std::u16string,int>>
            ]
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(86): note: Reason: cannot convert from 'const WCHAR *' to 'const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>>'
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(86): note: No constructor could take the source type, or constructor overload resolution was ambiguous
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xtree(1467): note: see declaration of 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::find'
            with
            [
                _Kty=std::u16string,
                _Ty=int,
                _Pr=std::less<std::u16string>,
                _Alloc=std::allocator<std::pair<const std::u16string,int>>
            ]
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(87): error C2679: binary '[': no operator found which takes a right-hand operand of type 'const WCHAR *' (or there is no acceptable conversion)
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\map(324): note: could be 'int &std::map<std::u16string,int,std::less<std::u16string>,std::allocator<std::pair<const std::u16string,int>>>::operator [](const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &)'
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\map(153): note: or       'int &std::map<std::u16string,int,std::less<std::u16string>,std::allocator<std::pair<const std::u16string,int>>>::operator [](std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &&)'
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(87): note: while trying to match the argument list '(std::map<std::u16string,int,std::less<std::u16string>,std::allocator<std::pair<const std::u16string,int>>>, const WCHAR *)'
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(93): error C2664: 'std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const std::u16string,const char16_t *>>>> std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::find(const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &) const': cannot convert argument 1 from 'const WCHAR *' to 'const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &'
            with
            [
                _Kty=std::u16string,
                _Ty=const char16_t *,
                _Pr=std::less<std::u16string>,
                _Alloc=std::allocator<std::pair<const std::u16string,const char16_t *>>
            ]
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(93): note: Reason: cannot convert from 'const WCHAR *' to 'const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>>'
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(93): note: No constructor could take the source type, or constructor overload resolution was ambiguous
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xtree(1467): note: see declaration of 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::find'
            with
            [
                _Kty=std::u16string,
                _Ty=const char16_t *,
                _Pr=std::less<std::u16string>,
                _Alloc=std::allocator<std::pair<const std::u16string,const char16_t *>>
            ]
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(94): error C2679: binary '[': no operator found which takes a right-hand operand of type 'const WCHAR *' (or there is no acceptable conversion)
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\map(324): note: could be 'const char16_t *&std::map<std::u16string,const char16_t *,std::less<std::u16string>,std::allocator<std::pair<const std::u16string,const char16_t *>>>::operator [](const std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &)'
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\map(153): note: or       'const char16_t *&std::map<std::u16string,const char16_t *,std::less<std::u16string>,std::allocator<std::pair<const std::u16string,const char16_t *>>>::operator [](std::basic_string<char16_t,std::char_traits<char16_t>,std::allocator<char16_t>> &&)'
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\cee.h(94): note: while trying to match the argument list '(std::map<std::u16string,const char16_t *,std::less<std::u16string>,std::allocator<std::pair<const std::u16string,const char16_t *>>>, const WCHAR *)'
    C:\msys64\home\ryuta\packages\pyjion\pyjion\Pyjion\pycomp.h(248): warning C4267: 'return': conversion from 'size_t' to 'int', possible loss of data
    NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\cl.exe' : return code '0x2'
    Stop.
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\nmake.exe"' : return code '0x2'
    Stop.
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\nmake.exe"' : return code '0x2'
    Stop.
    
    opened by oroppas 4
  • Bring project up to date with latest .NET and Python

    Bring project up to date with latest .NET and Python

    • [x] Convert build process to CMake
    • [x] Link .NET 5 stdlib libraries directly instead of copying dll files
    • [x] Update API to implement the merged PEP for FrameEval
    • [x] Remove the Python submodule as now uses the Python3 libraries directly
    • [x] Validate C++11/Clang support and compilation errors to ensure builds correctly on Linux and MacOS
    • [x] Remove MSBuild related files and scripts
    • [x] Remove IExecutionEngine/CExecutionEngine shim classes as they're removed from .NET and no longer needed for init
    • [x] Remove legacy Opcodes
    • [x] Replace Windows TLS API with the "new" PEP539 TLS API
    • [x] Add new opcodes
    • [x] Test it?

    Opcodes to implement

    • [x] JUMP_IF_NOT_EXC_MATCH
    • [x] DICT_MERGE
    • [x] LOAD_ASSERTION_ERROR
    • [x] RERAISE
    • [x] SETUP_ANNOTATIONS
    • [x] IS_OP
    • [x] DICT_UPDATE
    • [x] CONTAINS_OP
    • [x] SET_UPDATE
    • [x] LIST_EXTEND
    • [x] LIST_TO_TUPLE
    • [x] ROT_FOUR

    Unsupported

    • [ ] WITH_EXCEPT_START
    • [ ] END_ASYNC_FOR
    • [ ] GET_AITER
    opened by tonybaloney 24
  • Be able to bail out to deoptimized code

    Be able to bail out to deoptimized code

    Consider this function:

    def simple_func(a, b, c):
        if a > b:
            return b if b > c else c
        else:
            return 0
    

    To get good performance, we want to generate code that operates on machine integers, not Python objects. That means that we must:

    • Profile and record that (as is likely here) a, b, and c are all integers normally.
    • Generate optimized machine code that
      • tests that a, b, and c are machine integers
      • if not, bail out to the interpreter and deoptimize the generated code
      • otherwise, use the optimized machine code.
    opened by DemiMarie 2
  • Status of the project ?

    Status of the project ?

    After the death of pyston, the community, which had great hopes for pyjion, is starting to feel nervous about the future of pyjion. The repository is not very active, and little communication is made of it.

    Pyjion is cited as the most promising attempt to speed up Python on HN, /r/python, twitter regularly, so enthusiasm is here.

    So how is it going on ? Be honest. We all can understand people at MS have many important things to do and nobody would blame you if you couldn't work on it.

    On the other hand, if you need help (money, people) to carry on, we could spread the word.

    opened by sametmax 9
  • Link to the definition of

    Link to the definition of "JIT" in the README

    What is JIT?

    ... yeah, I can google it ... but why not mention it at least once in README?

    JIT --> Just In Time Compilation

    Never take anything for granted.

    enhancement task 
    opened by Tset-Noitamotua 2
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
An implementation of Python in Common Lisp

CLPython - an implementation of Python in Common Lisp CLPython is an open-source implementation of Python written in Common Lisp. With CLPython you ca

Willem Broekema 339 Jan 4, 2023
The Python programming language

This is Python version 3.10.0 alpha 5 Copyright (c) 2001-2021 Python Software Foundation. All rights reserved. See the end of this file for further co

Python 49.7k Dec 30, 2022
Grumpy is a Python to Go source code transcompiler and runtime.

Grumpy: Go running Python Overview Grumpy is a Python to Go source code transcompiler and runtime that is intended to be a near drop-in replacement fo

Google 10.6k Dec 24, 2022
DO NOT USE. Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime.

IronPython 3 IronPython3 is NOT ready for use yet. There is still much that needs to be done to support Python 3.x. We are working on it, albeit slowl

IronLanguages 2k Dec 30, 2022
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems

The MicroPython project This is the MicroPython project, which aims to put an implementation of Python 3.x on microcontrollers and small embedded syst

MicroPython 15.7k Dec 31, 2022
x86-64 assembler embedded in Python

Portable Efficient Assembly Code-generator in Higher-level Python (PeachPy) PeachPy is a Python framework for writing high-performance assembly kernel

Marat Dukhan 1.7k Jan 3, 2023
A faster and highly-compatible implementation of the Python programming language. The code here is out of date, please follow our blog

Pyston is a faster and highly-compatible implementation of the Python programming language. Version 2 is currently closed source, but you can find the

null 4.9k Dec 21, 2022
The Stackless Python programming language

This is Python version 3.7.0 alpha 4+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 20

Stackless Python 891 Jan 3, 2023
A mini implementation of python library.

minipy author = RQDYSGN date = 2021.10.11 version = 0.2 1. 简介 基于python3.7环境,通过py原生库和leetcode上的一些习题构建的超小型py lib。 2. 环境 Python 3.7 2. 结构 ${project_name}

RQDYGSN 2 Oct 26, 2021
A faster and highly-compatible implementation of the Python programming language.

Pyston Pyston is a fork of CPython 3.8.8 with additional optimizations for performance. It is targeted at large real-world applications such as web se

null 2.3k Jan 9, 2023
Rust syntax and lexical analyzer implemented in Python.

Rust Scanner Rust syntax and lexical analyzer implemented in Python. This project was made for the Programming Languages class at ESPOL (SOFG1009). Me

Joangie Marquez 0 Jul 3, 2022
Core Python libraries ported to MicroPython

This is a repository of libraries designed to be useful for writing MicroPython applications.

MicroPython 1.8k Jan 7, 2023
Jittor is a high-performance deep learning framework based on JIT compiling and meta-operators.

Jittor: a Just-in-time(JIT) deep learning framework Quickstart | Install | Tutorial | Chinese Jittor is a high-performance deep learning framework bas

null 2.7k Jan 3, 2023
Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more

JAX: Autograd and XLA Quickstart | Transformations | Install guide | Neural net libraries | Change logs | Reference docs | Code search News: JAX tops

Google 21.3k Jan 1, 2023
Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more

JAX: Autograd and XLA Quickstart | Transformations | Install guide | Neural net libraries | Change logs | Reference docs | Code search News: JAX tops

Google 11.4k Feb 13, 2021
Callable PyTrees and filtered JIT/grad transformations => neural networks in JAX.

Equinox Callable PyTrees and filtered JIT/grad transformations => neural networks in JAX Equinox brings more power to your model building in JAX. Repr

Patrick Kidger 909 Dec 30, 2022
Simple Port Scanner script written in Python, plans is to expand upon this script to turn it into a GUI based pen testing suite

PortScanner Simple Port Scanner script written in Python, plans is to expand upon this script to turn it into a GUI based pen testing suite. #IMPORTAN

null 1 Oct 23, 2021
A GUI for Face Recognition, based upon Docker, Tkinter, GPU and a camera device.

Face Recognition GUI This repository is a GUI version of Face Recognition by Adam Geitgey, where e.g. Docker and Tkinter are utilized. All the materia

Kasper Henriksen 6 Dec 5, 2022
The windML framework provides an easy-to-use access to wind data sources within the Python world, building upon numpy, scipy, sklearn, and matplotlib. Renewable Wind Energy, Forecasting, Prediction

windml Build status : The importance of wind in smart grids with a large number of renewable energy resources is increasing. With the growing infrastr

Computational Intelligence Group 125 Dec 24, 2022
A version of nrsc5-gui that merges the interface developed by cmnybo with the architecture developed by zefie in order to start a new baseline that is not heavily dependent upon Python processing.

NRSC5-DUI is a graphical interface for nrsc5. It makes it easy to play your favorite FM HD radio stations using an RTL-SDR dongle. It will also displa

null 61 Dec 22, 2022