Python bindings for ArrayFire: A general purpose GPU library.

Overview

ArrayFire Python Bindings

ArrayFire is a high performance library for parallel computing with an easy-to-use API. It enables users to write scientific computing code that is portable across CUDA, OpenCL and CPU devices. This project provides Python bindings for the ArrayFire library.

Documentation

Documentation for this project can be found over here.

Example

# Monte Carlo estimation of pi
def calc_pi_device(samples):
    # Simple, array based API
    # Generate uniformly distributed random numers
    x = af.randu(samples)
    y = af.randu(samples)
    # Supports Just In Time Compilation
    # The following line generates a single kernel
    within_unit_circle = (x * x + y * y) < 1
    # Intuitive function names
    return 4 * af.count(within_unit_circle) / samples

Choosing a particular backend can be done using af.set_backend(name) where name is either "cuda", "opencl", or "cpu". The default device is chosen in the same order of preference.

Requirements

Currently, this project is tested only on Linux and OSX. You also need to have the ArrayFire C/C++ library installed on your machine. You can get it from the following sources.

Please check the following links for dependencies.

Getting started

Install the last stable version:

pip install arrayfire

Install the development version:

pip install git+git://github.com/arrayfire/[email protected]

Installing offline:

cd path/to/arrayfire-python
python setup.py install

Post Installation:

Please follow these instructions to ensure the arrayfire-python can find the arrayfire libraries.

To run arrayfire tests, you can run the following command from command line.

python -m arrayfire.tests

Communication

Acknowledgements

The ArrayFire library is written by developers at ArrayFire LLC with contributions from several individuals.

The developers at ArrayFire LLC have received partial financial support from several grants and institutions. Those that wish to receive public acknowledgement are listed below:

Grants

This material is based upon work supported by the DARPA SBIR Program Office under Contract Numbers W31P4Q-14-C-0012 and W31P4Q-15-C-0008. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the DARPA SBIR Program Office.

Comments
  • upgrade problems

    upgrade problems

    Hi there, today I upgraded af_python via pip. I uninstalled the devel version previously installed with setup.py install. Then installed with pip. Afterwards I tried to do simple_tests.py from the devel package. I got 'Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.' My af-python based application executes without any result, no error message, no sign of doing calculations, no nothing. I also reinstalled the arrayfire library from the website, without any success. af.info() on the other hand works and gives the version and device message. What's going on here? Is there a way to explicitly point af_python to the arrayfire path?

    opened by ZacDiggum 29
  • Could not load any ArrayFire libraries

    Could not load any ArrayFire libraries

    Hello, I'm sorry I know this issue has been around for a while but I couldn't solve it based on the posted solutions. I'm trying to install it for Mac OSx with cpu and opencl, without cuda. So I write this in the terminal: export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH as this is where my libaf*.dylib files are located. Still, when trying to import the module I get this message:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/ivangusachenko/anaconda/lib/python3.6/site-packages/arrayfire/__init__.py", line 56, in <module>
        from .library    import *
      File "/Users/ivangusachenko/anaconda/lib/python3.6/site-packages/arrayfire/library.py", line 600, in <module>
        backend = _clibrary()
      File "/Users/ivangusachenko/anaconda/lib/python3.6/site-packages/arrayfire/library.py", line 576, in __init__
        raise RuntimeError("Could not load any ArrayFire libraries.\n" + more_info_str)
    RuntimeError: Could not load any ArrayFire libraries.
    Please look at https://github.com/arrayfire/arrayfire-python/wiki for more information.
    
    opened by ivan-gusachenko 19
  • Combining arrayfire-python with cython

    Combining arrayfire-python with cython

    hello, we are currently working on a finite difference code using arrayfire. First benchmarks showed that for small systems the C/C++ versions seems to be significantly faster than the Python version. Therefor at least the core routines should be implemented in C/C++. On the other hand the final interface should be available in Python. We typically use Cython for that purpose and we already archive to pass arrays from C to Python and call some low-level routines using cython wrappers.

    Unfortunately we are not yet able to combine the cython interface with the ctypes wrappers. Finally we would like to be able to create an array from arrayfire-python. Somehow determine the address of the C/C++ array and pass this to our cython wrappers. We tried several methods to determine the address of the underlying array, and we are quite sure that one of these versions should give the correct address, but we still get the following error:

    terminate called after throwing an instance of 'af::exception'
      what():  ArrayFire Exception (Unknown error:208):
    In function const ArrayInfo& getInfo(af_array, bool, bool)
    In file src/api/c/array.cpp:30
    Input Array not created on current device
    
    In function void af::print(const char*, const af::array&)
    In file src/api/cpp/util.cpp:21
    Aborted
    

    It looks like that there are two "instances" of arrayfire which do not work together!? Does anybody have experience with arrayfire and cython? any ideas how to debug such a problem?

    thanks for any suggestion Florian

    opened by florian98765 19
  • Need explanation on when to to use af.eval() and af.sync()

    Need explanation on when to to use af.eval() and af.sync()

    I am using a function which uses af.broadcast inside it.

    When I use the program in windows PC, I do not see any slowdown of the processing using CPU. However, when I use my linux PC which has both CPU and AMD RX 480 GPU, I see the code slow down drastically.

    In Issue#123 @pavanky mentioned that to use af.eval and af.sync when using broadcast function.

    Can any one given me a simple explanation of this if possible.

    Thanks

    EDIT(June 30 2017): The problem was I did not update my arrayfire to newest version on linux.

    opened by itsnarsi 18
  • arrayfire-python could not find any ArrayFire libraries

    arrayfire-python could not find any ArrayFire libraries

    I built ArrayFire from source, and installed it in ${HOME}/arrayfire I am using anaconda3 on Linux Ubuntu 16.04 (64-bit). I installed arrayfire python bindings from pip : pip install arrayfire.

    I have followed the instructions mentioned in the arrayfire-python/wiki export LD_LIBRARY_PATH=${HOME}/arrayfire/lib:$LD_LIBRARY_PATH

    When I run python -m arrayfire.tests, I get

    Traceback (most recent call last):
      File "/home/gitansh95/anaconda3/lib/python3.6/runpy.py", line 183, in _run_module_as_main
        mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
      File "/home/gitansh95/anaconda3/lib/python3.6/runpy.py", line 109, in _get_module_details
        __import__(pkg_name)
      File "/home/gitansh95/anaconda3/lib/python3.6/site-packages/arrayfire/__init__.py", line 56, in <module>
        from .library    import *
      File "/home/gitansh95/anaconda3/lib/python3.6/site-packages/arrayfire/library.py", line 601, in <module>
        backend = _clibrary()
      File "/home/gitansh95/anaconda3/lib/python3.6/site-packages/arrayfire/library.py", line 577, in __init__
        raise RuntimeError("Could not load any ArrayFire libraries.\n" + more_info_str)
    RuntimeError: Could not load any ArrayFire libraries.
    Please look at https://github.com/arrayfire/arrayfire-python/wiki for more information.
    

    These are the libraries in ${HOME}/arrayfire/lib:

    [email protected]:~/arrayfire/lib$ ls -l
    total 113172
    lrwxrwxrwx 1 gitansh95 gitansh95       13 Aug  8 23:41 libafcpu.so -> libafcpu.so.3
    lrwxrwxrwx 1 gitansh95 gitansh95       17 Aug  8 23:41 libafcpu.so.3 -> libafcpu.so.3.6.0
    -rw-r--r-- 1 gitansh95 gitansh95 37576264 Aug  8 19:37 libafcpu.so.3.6.0
    lrwxrwxrwx 1 gitansh95 gitansh95       16 Aug  8 23:41 libafopencl.so -> libafopencl.so.3
    lrwxrwxrwx 1 gitansh95 gitansh95       20 Aug  8 23:41 libafopencl.so.3 -> libafopencl.so.3.6.0
    -rw-r--r-- 1 gitansh95 gitansh95 67891256 Aug  8 19:19 libafopencl.so.3.6.0
    lrwxrwxrwx 1 gitansh95 gitansh95       10 Aug  8 23:41 libaf.so -> libaf.so.3
    lrwxrwxrwx 1 gitansh95 gitansh95       14 Aug  8 23:41 libaf.so.3 -> libaf.so.3.6.0
    -rw-r--r-- 1 gitansh95 gitansh95  3576680 Aug  8 19:45 libaf.so.3.6.0
    lrwxrwxrwx 1 gitansh95 gitansh95       13 Aug  8 23:41 libforge.so -> libforge.so.1
    lrwxrwxrwx 1 gitansh95 gitansh95       17 Aug  8 23:41 libforge.so.1 -> libforge.so.1.0.2
    -rw-r--r-- 1 gitansh95 gitansh95  6834384 Aug  8 18:24 libforge.so.1.0.2
    

    I also tried export AF_PATH=${HOME}/arrayfire/lib Did not work. What am I missing? Please help.

    opened by gitansh95 15
  • wishlist

    wishlist

    • cast numpy scalars to af scalars, so that things like np.sin(scalar)+af_array=np_array don't happen. It's confusing and people are bound to use math. or cmath. functions. Pyopencl does the casting silently. funny: af_array+np.sin(scalar)=af_array
    • change array layout to row-major as in numpy and C/C++ so that arrays copied from the host and arrays created on the device match (or is there a reason for column-major arrays?))
    • make the api a little more like numpy (I know, afnumpy is there) e.g. implement more array methods (.abs(), .min(), .max(), .sum(), .imag, .real, .conj(), .transpose() and so on) and rename the array attributes (.elements() to .size, .dims() to .shape, af.moddims() to .reshape()...)
    opened by ZacDiggum 15
  • NumPy Array to AF Array in Windows + python2.7

    NumPy Array to AF Array in Windows + python2.7

    data=np.random.random(size=(100,100)) af.np_to_af_array(data)

    gets error: af.np_to_af_array(data) File "C:\Python27\lib\site-packages\arrayfire\interop.py", line 53, in np_to_af_array res = Array(in_ptr, shape, in_dtype) File "C:\Python27\lib\site-packages\arrayfire\array.py", line 428, in init raise TypeError("src is an object of unsupported class") TypeError: src is an object of unsupported class

    My Environment: Python27 64 bit Windows 7 64 AF version: 3.3.2 or sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0) CUDA kit 7.5

    More background: I just installed the package so likely a setup issue on my side... The examples work for me, both cpu & cuda.

    Any ideas?

    bug 
    opened by ghost 14
  • Interoperability with numpy

    Interoperability with numpy

    Would it be possible to support interoperability with numpy?

    import numpy as np
    import arrayfire as af
    
    A = np.zeros((2,3), dtype=np.complex64)
    Ad = af.array(A) # <-- load data from a numpy array
    af.display(Ad)
    print(Ad.elements(), Ad.type(), Ad.dims(), Ad.numdims())
    

    Currently:

    Using opencl backend
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-3-c8c7947108da> in <module>()
          3 
          4 A = np.zeros((2,3), dtype=np.complex64)
    ----> 5 Ad = af.array(A) # <-- load data from a numpy array
          6 af.display(Ad)
          7 print(Ad.elements(), Ad.type(), Ad.dims(), Ad.numdims())
    
    /Users/cmey/Code/GitHub/arrayfire-python/arrayfire/array.pyc in __init__(self, src, dims)
        133                 type_char = tmp.typecode
        134             else:
    --> 135                 raise TypeError("src is an object of unsupported class")
        136 
        137             elements = 1
    
    TypeError: src is an object of unsupported class
    
    opened by cmey 11
  • Doubt regarding use of interpolation function

    Doubt regarding use of interpolation function

    I'm a bit confused about the use of the interpolation function arrayfire.signal.approx1(signal, pos0). The documentation states that it accepts 2 arguments: the signal value, and the interpolation points. How can I specify the array which defines the points where the signal has been defined? I'll take an example using the numpy function np.interp:

    x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x)
    
    x_interp = np.linspace(0, 2*np.pi, 50)
    y_interp = np.interp(x_interp, x, y) # generates the values at the interpolated points
    

    How would I approach this using the arrayfire functions?

    opened by shyams2 10
  • Having trouble using on AWS

    Having trouble using on AWS

    I've installed the ArrayFire libraries, pip-installed the python wrapper, and followed the directions on the wiki, but I haven't been able to run any code yet.

    When I run af.info(), I get the following:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/site-packages/arrayfire/device.py", line 32, in info
        safe_call(backend.get().af_info())
      File "/usr/local/lib/python2.7/site-packages/arrayfire/util.py", line 75, in safe_call
        raise RuntimeError(to_str(err_str), af_error)
    RuntimeError: ('', 501)
    

    I'm on an AWS g2.2xlarge, with the NVIDIA/Amazon Linux image.

    Any debugging advice?

    opened by dela3499 10
  • Add measured locations as parameters for approx1 and approx2

    Add measured locations as parameters for approx1 and approx2

    I've implemented an interp1d and interp2d function similar to the one found in scipy. Rather than having the user manually transform the input points from [0, N-1] when using approx1 and approx2, this function takes care of the transformation by taking the input data points in addition to the interpolation points.

    However, there is one issue: I'm using sum to get a scalar value:

    dx   = sum(x_input[1, 0, 0, 0] - x_input[0, 0, 0, 0])
    pos0 = (x_interpolated - sum(x_input[0, 0, 0, 0]))/dx
    

    Do you recommend using something else?

    opened by shyams2 9
  • Backend choice reset inside of threads

    Backend choice reset inside of threads

    Inside a new thread, Arrayfire uses the default backend rather than the backend set by the parent thread:

    >>> import arrayfire as af
    >>> af.get_available_backends()
    ('cpu', 'cuda', 'opencl')
    >>> af.get_active_backend()
    'cuda'
    >>> af.set_backend('opencl')
    >>> af.get_active_backend()
    'opencl'
    >>> from threading import Thread
    >>> Thread(target=lambda: print(af.get_active_backend())).start()
    cuda
    

    Is this expected behavior and/or documented anywhere? I would think that the active backend should be process local rather than thread local.

    If it matters, here's my version info: OS: Ubuntu 20.04 arrayfire: 3.9.0 (commit 955152b6) arrayfire-python: 3.8.10

    cuda: 11.4.0-1 ocl-icd-libopencl1: 2.2.11-1 intel-mkl: 2020.0.166-1

    opened by hexane360 1
  • RuntimeError: In function void opencl::fft_inplace

    RuntimeError: In function void opencl::fft_inplace

    Using this arrayfire release (https://arrayfire.s3.amazonaws.com/3.8.0/ArrayFire-v3.8.0_Linux_x86_64.sh) on the opencl backend with the python api I get the following error.

    import arrayfire as af
    af.set_backend('opencl')
    random_signal = af.random.randn(100)
    test = af.signal.fft(random_signal)
    

    Error

    ---------------------------------------------------------------------------
    RuntimeError                              Traceback (most recent call last)
    <ipython-input-7-a744aa37e707> in <module>
    ----> 1 test = af.signal.fft(random_signal)
    
    ~/miniconda3/envs/af/lib/python3.7/site-packages/arrayfire/signal.py in fft(signal, dim0, scale)
        177 
        178     output = Array()
    --> 179     safe_call(backend.get().af_fft(c_pointer(output.arr), signal.arr, c_double_t(scale), c_dim_t(dim0)))
        180     return output
        181 
    
    ~/miniconda3/envs/af/lib/python3.7/site-packages/arrayfire/util.py in safe_call(af_error)
         77         err_len = c_dim_t(0)
         78         backend.get().af_get_last_error(c_pointer(err_str), c_pointer(err_len))
    ---> 79         raise RuntimeError(to_str(err_str))
         80 
         81 def get_version():
    
    RuntimeError: In function void opencl::fft_inplace(opencl::Array<T>&, int, bool) [with T = cl_float2]
    In file src/backend/opencl/fft.cpp:
    

    I'm running Ubuntu 20.04 with Nvidia OpenCL Drivers. I have arrayfire debugging enabled and got the following output when the error occurred.

                            BUILD LOG
    ************************************************
    <kernel>:19:10: error: expected expression
    (float2)(};
             ^
    <kernel>:891:1: error: expected '}'
    ^
    <kernel>:18:32: note: to match this '{'
    __constant float2 twiddles[] = {
                                   ^
    <kernel>:890:2: error: expected ';' after top level declarator
    }
     ^
     ;
    
    ************************************************
    FFTGeneratedStockhamAction::compileKernels failed
    
    
    opened by brianmcconnel 1
  • backends do not load in proper order

    backends do not load in proper order

    This line has a comment # Iterate in reverse order of preference. However, it loads them with some random order, because the object to iterate is a set, which doesn't keep the order. In my Linux computer, when I run import arrayfire as af, the function will be called and it loads "" first, and due to err!=0, it directly returns and not loads anything.

    By the way, I simply change {"cpu", "opencl", "cuda", ""} to ["cuda"] and I can import arrayfire with no error.

    opened by zzjjbb 1
  • Replace tests with pytest runner

    Replace tests with pytest runner

    • Remove custom test runner tool
    • Add pytest runner (there is no need to install it locally from requirements because it is used as setup test requirement) These tests are not checking the correctness of the executed method and they are nothing more than smoke tests. So, they are put in the appropriate tests subfolder.

    The tests can be run with the python setup.py test command.

    Minimal coverage was set to fit the current coverage value -- 70% (was 72.3%, actual 71.86% after removing some prints)

    opened by roaffix 0
  • Fix Enum classes and their inheritance

    Fix Enum classes and their inheritance

    • Remove the check for enum import. Motivation: check for enum's import error is unnecessary on modern python versions because its built-in library is available with a basic python build version. It is pointless to cover very-very-very situational python builds that could not contain enum in it.
    • Remove the C++ style formatting for constants declaration. Motivation: FYI, @syurkevi : https://www.python.org/dev/peps/pep-0008/#other-recommendations. Especially example before link that is under "More than one space around an assignment (or other) operator to align it with another" and highlighted "never use more than one space" :middle_finger: :sunglasses:
    • Remove wrap for Enum constants with _Enum_Type function. Motivation: There is no point to use such a method like _Enum_Type that returns the arg as it is passed into it.
    • to_str is moved to the "library" module to avoid circular import with the "util" module. Note: This change does not break the public API because it is still declared in __init__.
    opened by roaffix 0
  • RuntimeError: Could not load any ArrayFire libraries.

    RuntimeError: Could not load any ArrayFire libraries.

    Hi, I am using MACOS, I have 1. Download and install binaries 2. pip install arrayfire 3. export DYLD_LIBRARY_PATH=/opt/arrayfire/lib:$DYLD_LIBRARY_PATH

    It can be used with command line Screenshot 2020-10-15 at 08 29 41

    But when I use the same conda environment and python VeM.py which is a script containing import arrayfire, it shows

    Traceback (most recent call last):
      File "/Users/zetao/Documents/code/edu/python_code/first_try/VEM_deblur.py", line 3, in <module>
        import arrayfire as af 
      File "/Users/zetao/opt/anaconda3/lib/python3.7/site-packages/arrayfire/__init__.py", line 56, in <module>
        from .library    import *
      File "/Users/zetao/opt/anaconda3/lib/python3.7/site-packages/arrayfire/library.py", line 643, in <module>
        backend = _clibrary()
      File "/Users/zetao/opt/anaconda3/lib/python3.7/site-packages/arrayfire/library.py", line 619, in __init__
        raise RuntimeError("Could not load any ArrayFire libraries.\n" + more_info_str)
    RuntimeError: Could not load any ArrayFire libraries.
    

    Can anyone kindly explain why?

    opened by luckydog1996 3
Releases(3.8.0)
  • 3.8.0(Feb 22, 2022)

    New Features/Functions

    Breaking APIs

    Fixes

    • Fixed wrapper validations in create_sparse_from_host - #198
    • Added a workaround for bench_cg example on less capable GPUs - #200
    • Fixed missing info in Array.device_ptr function documentation - #210
    • Corrected invert operation to use non-in-place bit wise inversion - #228
    Source code(tar.gz)
    Source code(zip)
  • 3.6.20181017(Oct 18, 2018)

    • Feature parity with ArrayFire v3.6. Refer to the release notes for more information regarding upstream library improvements in v3.6.
      • anisotropic_diffusion(): Anisotropic diffusion filter.
      • topk(): Returns top-K elements given an array.
    • Bug fixes:
      • Fixed sift() and gloh(), which were improperly calling the library.
    • Enhancements:
      • Added len() method, which returns array.elements().
    • Documentation:
      • Documented statistics API.
      • Corrected sign() documentation.
      • Modified helloworld example to match C++ lib.
    Source code(tar.gz)
    Source code(zip)
  • 3.5.20170817(Aug 17, 2017)

  • 3.5.20170721(Jul 21, 2017)

  • 3.5.20170718(Jul 18, 2017)

    • Feature parity with ArrayFire 3.5.

      • canny: Canny Edge detector
      • Array.scalar: Return the first element of the array
      • dot: Now support option to return scalar
      • print_mem_info: Prints memory being used / locked by arrayfire memory manager.
      • Array.allocated: Returs the amount of memory allocated for the given buffer.
      • set_fft_plan_cache_size: Sets the size of the fft plan cache.
    • Bug Fixes:

      • sort_by_key had key and value flipped in documentation.
    • Improvements and bugfixes from upstream include:

      • CUDA backend uses nvrtc instead of nvvm
      • Performance improvements to arrayfire.reorder
      • Faster unified backend
      • You can find more information at arrayfire's release notes
    Source code(tar.gz)
    Source code(zip)
  • 3.4.20170222(Feb 22, 2017)

    • Bugfix: Fixes typo in approx1.
    • Bugfix: Fixes typo in hamming_matcher and nearest_neighbour.
    • Bugfix: Added necessary copy and lock mechanisms in interop.py.
    • Example / Benchmark: New conjugate gradient benchmark.
    • Feature: Added support to create arrayfire arrays from numba.
    • Behavior change: af.print() only prints full arrays for smaller sizes.
    Source code(tar.gz)
    Source code(zip)
  • 3.4.20161126(Nov 27, 2016)

  • 3.4.20160925(Sep 25, 2016)

    • Feature parity with ArrayFire 3.4 libs
    • Bug fixes
      • ArrayFire now has higher priority when numpy for mixed operations. 1 2
      • Numpy interoperability issues on Widnows. 1
      • Switch to a working backend by default. 1
      • Fixed incorrect behavior for Hermitian transpose and QR. 1
      • array[0:0] now returns empty arrays. 1
    • Further Improvements from upstream can be read in the arrayfire release notes.
    Source code(tar.gz)
    Source code(zip)
  • 3.3.20160624(Sep 16, 2016)

  • 3.3.20160516(May 16, 2016)

    v3.3.20160516

    • Bugfix: Increase arrayfire's priority over numpy for mixed operations
    • Added new library functions
      • get_backend returns backend name
    Source code(tar.gz)
    Source code(zip)
  • 3.3.20160510(May 16, 2016)

    • Bugfix to af.histogram
    • Added missing functions / methods
      • gaussian_kernel
    • Added new array properties
      • Array.T now returns transpose
      • Array.H now returns hermitian transpose
      • Array.shape now allows easier access individual dimensions
    Source code(tar.gz)
    Source code(zip)
  • 3.3.20160427(Apr 27, 2016)

  • 3.3.20160328(Mar 28, 2016)

  • 3.3.20160320(Mar 20, 2016)

    • Functions to interact with arryafire's internal data structures. - Array.offset - Array.strides - Array.is_owner - Array.is_linear - Array.raw_ptr
      • Array constructor now takes offset and strides as optional parameters.
      • New visualization functions: scatter and scatter3
      • OpenCL backend specific functions:
        • get_device_type
        • get_platform
        • add_device_context
        • delete_device_context
        • set_device_context
      • Functions to allocate and free memory on host and device
        • alloc_host and free_host
        • alloc_pinned and free_pinned
        • alloc_device and free_device
      • Function to query which device and backend an array was created on
        • get_device_id
        • get_backend_id
      • Miscellaneous functions
        • is_lapack_available
        • is_image_io_available
    • Interopability
      • Transfer PyCUDA GPUArrays using af.pycuda_to_af_array
      • Transfer PyOpenCL Arrays using af.pyopencl_to_af_array
      • New helper function af.to_array added to convert a different array to arrayfire Array.
        • This function can be used in place of af.xyz_to_af_array functions mentioned above.
    • Deprecated functions list
      • lock_device_ptr is deprecated. Use lock_array instead.
      • unlock_device_ptr is deprecated. Use unlock_array instead.
    • Bug Fixes:
    Source code(tar.gz)
    Source code(zip)
  • 3.2.20151224(Dec 25, 2015)

    • Bug fixes:
      • A default AF_PATH is set if none is found as an environment variable.
    • Examples:
      • Heston model example uses a smaller data set to help run on low end GPUs.
    Source code(tar.gz)
    Source code(zip)
  • 3.2.20151214(Dec 14, 2015)

    • Bug fixes:
      • get_version() now returns ints instead of c_int
      • Fixed bug in tests/simple/device.py
    • The module now looks at additional paths when loading ArrayFire libraries.
      • Link to the wiki is provided when ctypes.cdll.LoadLibrary fails.
    • New function:
      • info_str() returns information similar to info() as a string.
    • Updated README.md with latest instructions
    Source code(tar.gz)
    Source code(zip)
  • 3.2.20151211(Dec 13, 2015)

    • Feature parity with ArrayFire 3.2 libs
      • New computer vision functions: sift, gloh, homography
      • New graphics functions: plot3, surface
      • Functions to load and save native images: load_image_native, save_image_native
      • Use unified backend when possible
    • Added missing functions
      • eval, init, convolve2_separable, as_type method
      • cuda backend specific functions
      • opencl backend specific functions
      • timeit function to benchmark arrayfire functions
    • Added new examples
      • getting_started: intro, convolve
      • benchmarks: bench_blas, bench_fft
      • financial: monte_carlo_options, black_scholes, heston_model
      • graphics: fractal, histogram, plot3d, conway, surface
    • Bug fixes
      • Fixed bug when array types were being reported incorrectly
      • Fixed various bugs in graphics functions
    Source code(tar.gz)
    Source code(zip)
  • 3.1.20151111(Nov 11, 2015)

    • Feature parity with ArrayFire 3.1 libs
    • Ability to interop with other python libraries
    • Ability to extract raw device pointers
    • Save arrays to disk and read arrays from disk.
    • __repr__ support
    Source code(tar.gz)
    Source code(zip)
  • 3.0.20150914(Sep 14, 2015)

Free and Open Source Machine Translation API. 100% self-hosted, no limits, no ties to proprietary services. Built on top of Argos Translate.

LibreTranslate Try it online! | API Docs Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on pro

UAV4GEO 3.5k Jan 03, 2023
TeslaPy - A Python implementation based on unofficial documentation of the client side interface to the Tesla Motors Owner API

TeslaPy - A Python implementation based on unofficial documentation of the client side interface to the Tesla Motors Owner API, which provides functiona

Tim Dorssers 233 Dec 30, 2022
📦 Opensource Python wrapper for Hiven's REST and WebSocket API

hiven.py 📦 Opensource Python wrapper for Hiven's REST and WebSocket API Installation pip install -U hiven.py Usage hiven.py is currently under devel

Kevin Thomas 3 Sep 03, 2021
a discord bot for searching your movies, and bot return movie url for you :)

IMDb Discord Bot how to run this bot. the first step you must create prefixes.json file the second step you must create a virtualenv if you use window

Mehdi Radfar 6 Dec 20, 2022
Telegram 聊天機器人,追蹤momo降價、重新上架

簡介 price-tracker-bot is a telegram bot that can trace the price on momoshop. 功能 降價通知 上架通知 收藏商品 清空已收藏商品 顯示目前已收藏商品 Demo Bot Telegram bot search @momo_pr

92 Dec 28, 2022
Discord bot for user notes.

Noter A discord bot for handling notes for users. Want to keep track of things about your discord users? Then this bot is for you! Links DB Browser fo

Ori 2 Jun 05, 2022
Python Tool To Get The Date That Your Account Joined Instagram

Date-Joined-Insta Python Tool To Get The Date That Your Account Joined Instagram You Dont Need To Login Just Enter The UserName If Id Did Not Work Ins

A B D U L L A H . 1 Dec 21, 2021
A Discord bot to play bluffing games like Dobbins or Bobbins

Usage: pip install -r requirements.txt python3 bot.py DISCORD_BOT_TOKEN Gameplay: All commands are case-insensitive, with trailing punctuation and spa

4 May 27, 2022
Simple integration between FastAPI and cloud authentication services (AWS Cognito, Auth0, Firebase Authentication).

FastAPI Cloud Auth fastapi-cloudauth standardizes and simplifies the integration between FastAPI and cloud authentication services (AWS Cognito, Auth0

tokusumi 255 Jan 07, 2023
Automatically scrape all of your artifacts in Genshin Impact.

Genshin Artifact Scraper Automatically scrape all of your artifacts in Genshin Impact. Features: Simple recalibration (2 steps). GUI to select OCR reg

21 Dec 17, 2022
WebCash is an experimental new electronic cash ("e-cash") that enables decentralized and instant payments to anyone

Webcash WebCash is an experimental new electronic cash ("e-cash") that enables decentralized and instant payments to anyone, anywhere in the world. Us

Bryan Bishop 24 Dec 11, 2022
Programmeertheorie 2022 - Team Trainspotters - RailNL

Trainspotters Vak: Programmeertheorie 2022 Gekozen case: RailNL Teamnaam: Trainspotters Studenten: Mijntje Meijer, Sam Bijhouwer, Maik Larooij To-do's

Maik Larooij 1 Jan 25, 2022
A multi purpose discord bot for python

Sypher The best multi purpose discord bot. Add Sypher right now Invite Me | Join

Johan Naizu 1 Dec 15, 2022
Fetch tracking numbers of Amazon orders, for the ease of the logistics.

Amazon-Tracking-Number Fetch tracking numbers of Amazon orders, for the ease of the logistics. Read Me First (How to use this code): Get Amazon "Items

Tony Yao 1 Nov 02, 2021
A Telegram bot to download posts, videos, reels, IGTV and a user profile picture from Instagram!

Telegram Bot A telegram bot to download media from Instagram! No API Key or Login Needed! Requirements You must have python installed (of course) You

Simon Farah 2 Apr 10, 2022
The Github repository for the Amari API wrapper.

Amari.py Amari.py is an async, easy to use API wrapper for the AmariBot. Installation Enter any of these commands to install the library: pip install

TheF1ng3r 5 Dec 19, 2022
A multi-platform HTTP(S) Reverse Shell Server and Client in Python 3

Phantom - A multi-platform HTTP(S) Reverse Shell Server and Client Phantom is a multi-platform HTTP(S) Reverse Shell server and client in Python 3. Bi

85 Nov 18, 2022
Discord music bot using discord.py, slash commands, and yt-dlp.

bop Discord music bot using discord.py, slash commands, and yt-dlp. Features Play music from YouTube videos and playlists Queue system with shuffle Sk

Hizkia Felix 3 Aug 11, 2022
Auxiliator is telegram bot for basic web-application analysis

Auxiliator Auxiliator is telegram bot for basic web-application analysis What for? Sometimes there is no access to your main PC, where you can scan we

Revoltage 13 Dec 26, 2021
Telegram Group Calls Streaming bot with some useful features, written in Python with Pyrogram and Py-Tgcalls. Supporting platforms like Youtube, Spotify, Resso, AppleMusic, Soundcloud and M3u8 Links.

Yukki Music Bot Yukki Music Bot is a Powerful Telegram Music+Video Bot written in Python using Pyrogram and Py-Tgcalls by which you can stream songs,

Team Yukki 996 Dec 28, 2022