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/arrayfire-python.git@devel

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:

    gitansh95@computer:~/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)

Python bindings for BigML.io

BigML Python Bindings BigML makes machine learning easy by taking care of the details required to add data-driven decisions and predictive power to yo

BigML Inc, Machine Learning made easy 271 Dec 27, 2022
Disqus API bindings for Python

disqus-python Let's start with installing the API: pip install disqus-python Use the API by instantiating it, and then calling the method through dott

DISQUS 163 Oct 14, 2022
Python bindings to the Syncthing REST interface.

python-syncthing Python bindings to the Syncthing REST interface. Python API Documentation Syncthing Syncthing REST Documentation Syncthing Forums $ p

Blake VandeMerwe 64 Aug 13, 2022
Python bindings for LibreTranslate

Python bindings for LibreTranslate

Argos Open Tech 42 Jan 3, 2023
pylunasvg - Python bindings for lunasvg

pylunasvg - Python bindings for lunasvg Pylunasvg is a simple wrapper around lunasvg that uses pybind11 to create python bindings. All public API of t

Eren 6 Jan 5, 2023
Python bindings for swm-core client REST API

Python bindings for swm-core client REST API Description Sky Port is an universal bus between user software and compute resources. It can also be cons

Sky Workflows 1 Jan 1, 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
An all-purpose Discord bot written in Python featuring a diverse collection of practical utilities.

GlazeGlopBot Table of Contents About Setup Usage Commands Command Errors Cog Management Local Sound Files Cogs Mod QR RNG VC Weather Proposed Features

Edison Ye 0 May 12, 2022
Discord ToolBox is a discord bot developed by DJD320 created for the purpose of having some convenient tools in the form of a single bot.

Discord ToolBox Discord ToolBox is a discord bot developed by DJD320 created for the purpose of having some convenient tools in the form of a single b

null 3 Aug 7, 2021
nuub-bot is a multi-purpose designed and developed in python3

nuub-bot About Nuub-Bot is an open source, fully customizable Discord bot that is constantly growing. You can invite it to your Discord server using t

Baneet Parmar 8 Jun 28, 2022
A collection of scripts to steal BTC from Lightning Network enabled custodial services. Only for educational purpose! Share your findings only when design flaws are fixed.

Lightning Network Fee Siphoning Attack LN-fee-siphoning is a collection of scripts to subtract BTC from Lightning Network enabled custodial services b

Reckless_Satoshi 14 Oct 15, 2022
A collection of scripts to steal BTC from Lightning Network enabled custodial services. Only for educational purpose! Share your findings only when design flaws are fixed.

Lightning Network Fee Siphoning Attack LN-fee-siphoning is a collection of scripts to subtract BTC from Lightning Network enabled custodial services b

Reckless_Satoshi 14 Oct 15, 2022
Purpose To make a cloudflare challenge pass successfully, Can be use cf_clearance bypassed by cloudflare

Purpose To make a cloudflare challenge pass successfully, Can be use cf_clearance bypassed by cloudflare, However, with the cf_clearance, make sure you use the same IP and UA as when you got it.

vvanglro 129 Jan 9, 2023
Multi-purpose bot made with discord.py

PizzaHat Discord Bot A multi-purpose bot for your server! ℹ️ • Info PizzaHat is a multi-purpose bot, made to satisfy your needs, as well as your serve

DTS 28 Dec 16, 2022
A pyrogram simple bot for Educational purpose.

A pyrogram simple bot for Educational purpose. To Learn More check at @PyrogramBot or on Documentation Mandatory variables API_ID - Get It From my.tel

SpamShield 10 Dec 6, 2022
multi-purpose discord bot

virus multi-purpose discord bot ⚠️ WARNING This project is incomplete and may not work as expected. Download & Run Install Python >=3.10 Clone the sou

miten 2 Jan 17, 2022
The purpose of this bot is to take soundcloud track requests, that are posted in the stream-requests channel, and add them to a playlist, to make the process of scrolling through the requests easier for Root

Discord Song Collector Dont know if anyone is actually going to read this, but the purpose of this bot is to check every message in the stream-request

null 2 Mar 1, 2022
Huggingface inference with GPU Docker on AWS

This repository contains code to containerize and deploy a GPU docker on AWS for summarization task. Find a detailed blogpost here Youtube Video Versi

Ramsri Goutham Golla 21 Dec 30, 2022
⚡️ Get notified as soon as your next CPU, GPU, or game console is in stock

Inventory Hunter This bot helped me snag an RTX 3070... hopefully it will help you get your hands on your next CPU, GPU, or game console. Requirements

Eric Marti 1.1k Dec 26, 2022