scintilla4evr

GPU acceleration in AutoIt with NVIDIA CUDA

1 post in this topic

#1 ·  Posted (edited)

First, let me shock you. AutoIt is SLOW. I know, right!
But really, it may seem fast enough for "regular" automation and stuff, but when it comes to processing large datasets (image processing for example), it's horrendously slow.

There are 2 solutions to this problem:

  1. Write the processing code in, for example C or C++ and compile it to a DLL, and then use it in AutoIt
  2. Ditch the CPU and let GPU do the processing.

You see, CPU is not suited for processing large data in parallel. While it may have some extra cores, but it still not enough.
That's where the GPU comes in. CPU with its 8 or more cores is nowhere close the amount of those on GPU - reaching thousands (2560 CUDA cores in GeForce GTX 1080, for example).

With this potential, NVIDIA decided to create CUDA - a feature available in all current NVIDIA GPU's allowing developers to harness their computing potential.

After this not so short introduction to GPU computing, here is the CUDA UDF. Features include:

  • Running precompiled programs (use NVCC from CUDA Toolkit, available here)
  • Transferring data into and out of the GPU to the "host" (main RAM)

CUDA UDF

Edited by scintilla4evr
2 people like this

Share this post


Link to post
Share on other sites



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • scintilla4evr
      By scintilla4evr
      This is a small wrapper UDF for NVIDIA CUDA Driver API. It enables AutoIt scripts to execute pre-compiled .cubin programs on NVIDIA GPU's and receive data from them.
    • Andreik
      By Andreik
      Does anyone tried with success to compile a dll with a function that use CUDA and then to call the function from AutoIt? Actually the compilation seems to be easy but it might be a little hard to call the function. Here is what I have:
      cuda.cu
      #include <cuda.h> #include <cuda_runtime.h> #include <device_launch_parameters.h> __global__ void cuda__add(int *a, int *b, int *c) { *c = *a + *b; } extern "C" __declspec(dllexport) int Add(int a, int b) { int c; int *dev_a,*dev_b,*dev_c; int size = sizeof(int); cudaMalloc((void**)&dev_a, size); cudaMalloc((void**)&dev_b, size); cudaMalloc((void**)&dev_c, size); cudaMemcpy(dev_a, &a,sizeof(int), cudaMemcpyHostToDevice); cudaMemcpy(dev_b, &b,sizeof(int), cudaMemcpyHostToDevice); cuda__add<<< 1,1 >>>(dev_a,dev_b,dev_c); cudaMemcpy(&c, dev_c,size, cudaMemcpyDeviceToHost); cudaFree(&dev_a); cudaFree(&dev_b); cudaFree(&dev_c); return c; } I am able to open the dll but the function is not visible somehow and I get error 3 when I call it from AutoIt.