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)

Desafio de projeto sobre Git/Github

Maçã ou Laranja? 🤔 Desafio Projeto Dio para Git/Github 🔶 Para esse primeiro repositório, decidir adicionar o primeiro algoritmo de inteligência arti

José Filipe 2 Oct 23, 2022
Simple web-based hcaptcha bypass

Hcaptcha-Bypass !!! If you found this useful, please click the STAR button !!! Simple web-based hcaptcha bypass Just a demonstration right now, and yo

Kieronia 4 Oct 06, 2021
ignorant allows you to check if a phone number is used on different sites like snapchat, instagram.

Ignorant For BTC Donations : 1FHDM49QfZX6pJmhjLE5tB2K6CaTLMZpXZ ignorant does not alert the target phone number ignorant allows you to check if a phon

Palenath 513 Dec 31, 2022
A python script to send sms anonymously with SMS Gateway API. Works on command line terminal.

incognito-sms-sender A python script to send sms anonymously with SMS Gateway API. Works on command line terminal. Download and run script Go to API S

ʀᴇxɪɴᴀᴢᴏʀ 1 Oct 25, 2021
Basic Python3 request wrapper for the PancakeSwap API

🐍 Python Pancakes 🥞 A simple request wrapper for the Pancake-Swap API. Installation Install package # Using pip $ pip install pythonpancakes # Or f

Scott Burlovich 30 Nov 20, 2022
A repo containing toolings and software useful for a DevOps Engineer

DevOps-Tooling A repo containing toolings and software useful for a DevOps Engineer (or if you're setting up your Mac from the beginning) Currently se

Mohamed Abukar 45 Dec 12, 2022
Social Framework

Social Int Framework Social Int Framework its a Selenium script that scrape the IG photos and do a Reverse search on google and yandex for finding ano

29 Dec 06, 2022
We propose the adversarial blur attack (ABA) against visual object tracking.

ABA We propose the adversarial blur attack (ABA) against visual object tracking. The ICCV link: https://arxiv.org/abs/2107.12085 and, https://openacce

Qing Guo 13 Dec 01, 2022
A secure and customizable bot for controlling cross-server announcements and interactions within Discord

DiscordBot A secure and customizable bot for controlling cross-server announcements and interactions within Discord. Within the code of the bot, you c

Jacob Dorfmeister 1 Jan 22, 2022
Revolt account generator. Bypassing Hcaptcha using AI solver.

RevoltGenerator Revolt account generator. Bypassing Hcaptcha using AI solver. Config settings in config.json then put your usernames / proxies. If you

&! Ѵιchy.#0110 27 Nov 01, 2022
An API or getting Optifine VersionsList/Version/Download-URL.

Optifine-API An API for getting Optifine VersionsList/Versions/Download-URL. Table of contents Get Versions List Get Specify Versions Download Optifin

2 Dec 04, 2022
Estimate the total emissions for popular CryptoArt platforms.

cryptoart-footprint Estimate the total CO2 footprint for popular CryptoArt platforms. The goal is to accurately quantify the ecological damage of Ethe

Kyle McDonald 182 Oct 12, 2022
Add members to unlimited telegram channels and groups

Program Features 📌 Coded with Python version 10. 📌 without the need for a proxy. 📌 without the need for a Telegram ID. 📌 Ability to add infinite p

hack4lx 10 Nov 25, 2022
szrose is an all in one group management bot made for managing your group effectively with some advance security tools & Suit For All Your Needs ❤️

szrose is an all in one group management bot made for managing your group effectively with some advance security tools & Suit For All Your Needs ❤️

szsupunma 93 Jan 07, 2023
Your custom slash commands Discord bot!

Slashy - Your custom slash-commands bot Hey, I'm Slashy - your friendly neighborhood custom-command bot! The code for this bot exists because I'm like

Omar Zunic 8 Dec 20, 2022
Boto is a Python package that provides interfaces to Amazon Web Services.

Boto is a Python package that provides interfaces to Amazon Web Services.

the boto project 6.5k Jan 01, 2023
ETL python utilizando API do Spotify

Processo de ETL com Python e Airflow usando API do Spotify Sobre Projeto de ETL(Extract, Transform e Load) utilizando Python com API do Spotify e Airf

Leonardo 10 Mar 16, 2022
Migrate BiliBili watched anime to Bangumi

说明 之前为了将B站看过的动画迁移到bangumi写的, 本来只是自己用, 但公开可能对其他人会有帮助. 仓库最近无法维护, 程序有很多缺点, 欢迎 PR 和 Contributors 使用说明 Python版本要求:Python 3.8+ 使用前安装依赖包: pip install -r requ

51 Sep 08, 2022
Simple software that can send WhatsApp message to a single or multiple users (including unsaved number**)

wp-automation Info: this is a simple automation software that sends WhatsApp message to single or multiple users. Key feature: -Sends message to multi

3 Jan 31, 2022
The Official Dropbox API V2 SDK for Python

The offical Dropbox SDK for Python. Documentation can be found on Read The Docs. Installation Create an app via the Developer Console. Install via pip

Dropbox 828 Jan 05, 2023