Jump to content

GPU acceleration in AutoIt with NVIDIA CUDA

Recommended Posts

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)


Edited by scintilla4evr

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

    • 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.
    • 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:
      #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.
  • Create New...