Jump to content
scintilla4evr

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)

CUDA UDF

Edited by scintilla4evr

Share this post


Link to post
Share on other sites

Don't know what I'm doing wrong, but I cant get it working,

I downloaded the CUDA Toolkit (latest v10.2, local version 2.6GB size) and chose custom install.

I didn't select Geforce Experience nor Drivers nor the last option (whatever that was), only the CUDA part. ( I just installed latest NV drivers yesterday and don't like Geforce Experience)

I don't have Visual Studio so it complained during installation about not being able to associate files with VS (or something like that).

When I attempt to run your Julia.au3 example the GUI opens but nothing happens, just a blank window.

With filter.au3 the GUI also open and it shows the lena.png pic, but it seems it hasn't done any filtering at all.

I'm getting no errors when running the examples, but again, nothing happens.

Do I need VS ? Does anything have to be compiled ?

I do obviously have a nvidia card, RTX 2060 Super with 2176 cuda cores.

What am I doing wrong or not doing at all ? Could you or someone else post a step by step explanation please ?

:)


Some guy's script + some other guy's script = my script!

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