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)

PunkScape Discord bot to lookup rarities, create diptychs and more.

PunkScape Discord Bot A Discord bot created for the Discord server of PunkScapes, a banner NFT project. It was intially created to lookup rarities of

Akuti 4 Jun 24, 2022
Robot Swerve Test Public With Python

Robot-Swerve-Test-Public The codebase for our swerve drivetrain prototype robot.

1 Jan 09, 2022
A simple telegram bot that resolves video urls using yt-dlp

URL to Video Telegram Bot A simple telegram bot that resolves video urls using yt-dlp Copyright (C) 2021 Vítor Vasconcellos This program is free softw

Vítor 1 Nov 18, 2021
just a program i made cuz a friend got tokenlogged and spammed me with these scam/phishing links so i made a programm to spam these websides with fake logins

scam-webside-spammer just a program i made cuz a friend got tokenlogged and spammed me with these scam/phishing links so i made a programm to spam the

TerrificTable 3 Sep 23, 2022
thumbor is an open-source photo thumbnail service by globo.com

Survey If you use thumbor, please take 1 minute and answer this survey? It's only 2 questions and one is multiple choice!!! thumbor is a smart imaging

Thumbor (by @globocom) 9.3k Dec 31, 2022
A Python bot that uses the Reddit API to send users inspiring messages.

AnonBot By Edric Antoine A Python bot that uses the Reddit API to send users inspiring messages. When a message includes 'What would Anon do?', the bo

1 Jan 05, 2022
🤟The VC Music Source code of @DaisyXBot ❤️ v3 Out now

DAISYXMUSIC V3 🎵 A bot that can play music on telegram group's voice call Available on telegram as @DaisyXbot Whats new 🔥 Thumbnail Support Playlist

TeamDaisyX 207 Dec 05, 2022
An automated tool that fetches information about your crypto stake and generates historical data in time.

Introduction Yield explorer is a WIP! I needed a tool that would show me historical data and performance of my staked crypto but was unable to find a

Sedat Can Yalçın 42 Nov 26, 2022
A Discord token stealer app written in Python 3.

Discord Token Stealer A Discord token stealer app written in Python 3. This version of the grabber only supports Windows. Features No local caching Tr

cankat 45 Jan 03, 2023
Instagram bot that upload images for you which scrape posts from 9gag meme website or other Instagram users , which is 24/7 Automated Runnable.

Autonicgram Automates your Instagram posts by taking images from sites like 9gag or other Instagram accounts and posting it onto your page. Features A

Mastermind 20 Sep 17, 2022
Get random jokes bapack2 on telegram

Jokes Bapack2 Telegram Bot Get random jokes bapack2 from jokes-bapack2-api on telegram bot Screenshot Requirements python pip pipenv python-telegram-b

Miftah Afina 2 Nov 17, 2021
汪汪Bot是一个Telegram Bot,用于帮助你管理一台服务器上的Docker

WangWangBot 汪汪Bot是一个Telegram Bot,用于帮助你管理一台服务器上的Docker运行的Bot。这是使用视频: 部署说明 安装运行 准备 local.env 普通版本 BOT_TOKEN=你的BOT_TOKEN ADMINS=使用,分隔的管理员ID列表 如果你使用doppl

老房东的代码练习册 56 Aug 23, 2022
This is a free python bot program that crosses you to farm with auto click in space crypto NFT game, having fun :) Creator: Marlon Zanardi

🚀 Space Crypto auto click bot ready-to-use 🚀 This is a free python bot program that crosses you to farm with auto click in space crypto NFT game, ha

170 Dec 20, 2022
A website application running in Google app engine, deliver rss news to your kindle. generate mobi using python, multilanguages supported.

Readme of english version refers to Readme_EN.md 简介 这是一个运行在Google App Engine(GAE)上的Kindle个人推送服务应用,生成排版精美的杂志模式mobi/epub格式自动每天推送至您的Kindle或其他邮箱。 此应用目前的主要

2.6k Jan 06, 2023
✨ 🐍 Python SDK for StarkNet.

✨ 🐍 starknet.py StarkNet SDK for Python 📘 Documentation Installation Quickstart Guide API Installation To install this package run pip install stark

Software Mansion 158 Jan 04, 2023
Ts-matterbridge - Integrate TeamSpeak Chat with MatterBridge

TeamSpeak-MatterBridge Bot You can use this bot to integrate TeamSpeak Chat with

4 Sep 25, 2022
Code for generating Tiktok X-Gorgon, X-Khronos and etc. parameters

TikTok-Algorithm I found this python file from a source which was later deleted. Although the test api functions no longer seem to work, surprisingly

0 Dec 09, 2021
Instagram bot for promoting ROKA trainee soldier(just like me)'s consolation letters.

Instagram_bot (필자를 포함한) 모든 대한민국 훈련병들을 위한 인스타그램 인편지기입니다. Instagram bot for promoting ROKA trainee soldier(just like me)'s consolation letters. 들어가기 (Ge

Lee, Jongjun 2 Nov 21, 2021
The worst but simplest webhook bot for GitHub and Matrix.

gh-bot gh-bot is maybe the worst (but simplest) Matrix webhook bot for Github. Example of commits: Example of workflow finished: Setting up Server You

Jae Lo Presti 4 Aug 18, 2022