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)

Ap lokit lokit

🎵 FANDA MUSIC BOT Fanda Music adalah proyek bot telegram yang memungkinkan Anda memutar musik di obrolan suara grup telegram. a href="https://www.py

Fatur 2 Nov 18, 2021
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
Rhythm bot clone for discord written in Python and uses YouTube to get media files.

Tunebot About Rhythm bot clone for discord written in Python and uses YouTube to get media files. Usage You need a .env file within the same directory

1 Oct 21, 2021
A qq bot based on nonebot2 and go-cqhttp

Asoul-bot A qq bot based on nonebot and go-cqhttp 你可以将bot部署在本地,也可以加入bot测试群:784280070(全体禁言) 你可以通过临时会话的方式向bot发送指令,输入help获取帮助菜单 本地部署请参考:https://zhuanlan.

11 Sep 23, 2022
A bot that updates about the most subscribed artist' channels on YouTube

A bot that updates about the most subscribed artist' channels on YouTube. A weekly top chart report is provided every Monday. It posts updates on Twitter

Marco Fantauzzo 5 Dec 14, 2022
A small and fun Discord Bot that is written in Python and discord-interactions (with discord.py)

Articuno (discord-interactions) A small and fun Discord Bot that is written in Python and discord-interactions (with discord.py) Get started If you wa

Blue 8 Dec 26, 2022
A discord token nuker With loads of options that will screw an account up real bad

A discord token nuker With loads of options that will screw an account up real bad, also has inbuilt massreport, GroupChat Spammer and Token/Password/Creditcard grabber and so much more!

XPTGR 0 Aug 07, 2022
A Chip-8 emulator written using Python's default libraries

Chippure A Chip-8 emulator written using Python's default libraries. Instructions: Simply launch the .py file and type the name of the Chip8 ROM you w

5 Sep 27, 2022
Make low level API wrapper in fast, easy.

The lowrapper is a library for quickly and easily creating an environment for tapping the API without implementation.

tasuren 1 Oct 25, 2022
😈 Discord RAGE is a Python tool that allows you to automatically spam messages in Discord

😈 Discord RAGE Python tool that allows you to automatically spam messages in Discord 🏹 Setup Make sure you have Python installed and PIP is added to

Alphalius 4 Jun 12, 2022
Python wrapper for Stanford CoreNLP.

stanfordcorenlp stanfordcorenlp is a Python wrapper for Stanford CoreNLP. It provides a simple API for text processing tasks such as Tokenization, Par

884 Dec 25, 2022
A free, minimal, lightweight, cross-platform, easily expandable Twitch IRC/API bot.

parky's twitch bot A free, minimal, lightweight, cross-platform, easily expandable Twitch IRC/API bot. Features 🔌 Connect to Twitch IRC chat! 🔌 Conn

Andreas Schneider 10 Dec 30, 2022
A repo-watcher to watch for commits on a repo an trigger GitHub action by sending a `repository_dispatch` event to destinantion repo

repo-watcher-dispatch-sender This app is used to send a repository_dispatch event to the destination repo set in config.py or Environmental Variables

Divide Projects™ 2 Feb 06, 2022
Web3 Pancakeswap Sniper & honeypot detector Take Profit/StopLose bot written in python3, For ANDROID WIN MAC & LINUX

Web3 Pancakeswap Sniper & honeypot detector Take Profit/StopLose bot written in python3, For ANDROID WIN MAC & LINUX

HYDRA 3 Dec 27, 2021
Herramienta para transferir eventos de Sucuri WAF hacia Azure Blob Storage.

Transfiere eventos de Sucuri hacia Azure Blob Storage Script para transferir eventos del Sucuri Web Application Firewall (WAF) hacia Azure Blob Storag

CSIRT-RD 1 Dec 22, 2021
OpenSea-Python-Bot - OpenSea Python Bot can be used in 2 modes

OpenSea-Python-Bot OpenSea Python Bot can be used in 2 modes. When --nft paramet

49 Feb 10, 2022
Change the name and pfp of ur accounts, uses tokens.txt for ur tokens.

Change the name and pfp of ur accounts, uses tokens.txt for ur tokens. Also scrapes the pfps+names from a server chosen by you. For hq tokens go to discord.gg/tokenshop or t.me/praisetelegram

cChimney 36 Dec 09, 2022
A MassDM selfbot which is working in 2021

mass-dm-discord - Little preview of the Logger and the Spammer Features Logging User IDS Sending DMs to the logged IDs Blacklist IDs (add the ID of th

karma.meme 88 Dec 26, 2022
=>|<= the MsgRoom bot for Windows 96

=|= bot A MsgRoom bot in Python 3 for Windows96.net. The bot joins as =|=, if parameter name_lasts is not true and default_name is =|=. The full

Larry Holst 2 Jun 07, 2022
⚡ PoC: Hide a c&c botnet in the discord client. (Proof Of Concept)

👨‍💻 Discord Self Bot 👨‍💻 A Discord Self-Bot in Python by natrix Installation Run: selfbot.bat Python: version : 3.8 Modules

0хVιcнy#1337 37 Oct 21, 2022