cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

VST_RT
Journeyman III

VST-Plugin

Using ATI Stream with Brook+ for a VST-Plugin AND a general question!

Hi all,

 

iam trying to make a VST-Plugin which uses the GPU. I got a HD4670 AGP Card.

So i do my signal processing in the vst:rocessreplacing function, which gets called everytime a new input_vector is full. A blocksize of 1024 @ 44,1khz would mean, a call every ~20ms.

So iam calling for every channel! within the 20ms:

brook::Stream inputStream(rank, streamSize);

inputStream.read(inputBuffer);

memset(outputBuffer, 0, width * height * sizeof(float));

brook::Stream outputStream(rank, streamSize);
       
copy(inputStream, outputStream); //KERNEL

outputStream.write(outputBuffer);

 

Its works, but i get som VPU Recovery (because driver doenst respond) error, when i minimize/maximize some other windows.

do i just make to many kernel calls?

 

thank you very much.

MS

 

0 Likes
13 Replies
gaurav_garg
Adept I

Did you disable VPU recover/watchdog timer? Look at CAL FAQs for detailed info.

0 Likes

HI,

setting this registry entry seems to make no difference, still running into VPU recovrey.

disabling VPU recovry in the CCC, leads to a frozen system, because the graphic driver is stuck and noone is doing anything.

 

0 Likes

Which OS are you using Vista or XP?

0 Likes

Hey,

its a

Windows XP Prof 32bit with Service Pack3

 

tanks.

 

0 Likes

I'm experiencing similar symptoms on XP systems (both 32bit and 64bit). Sometimes the driver (apparently not something in the CAL library) simply crashes the whole system or gives a VPU recover (often the system stops responding even if VPU recover is enabled).

That behaviour started with Catalyst 9.3 (9.2 was stable at least on my systems). All of the following driver releases were simply unusable for GPGPU if one had more than just a few kernels calls (i.e. some thousand kernel calls over some minutes runtime). It improved a bit with Cat 9.8 and 9.9 but is still not back at the sturdiness of Catalyst 8.12 which was the most stable driver release for WinXP in my opinion (it simply runs, no problems whatsoever). The Vista drivers didn't suffer from the same problems.

0 Likes

so it would be worth a try to install die CATALYST 9.2 ?

at the moment i am running with:

Driver Packetversion 8.62-090505a-080607E-ati

Catalyst Verion 09.6

 

thank very much for the support!

just installed the Radeon 4000 AGP Hotfix:

DriverPacket: 8.65-090813a-087742E-ati

catalyst 09.9

but still not working. where can i fond those older drivers?

0 Likes

still its running very unstable. need some hint.

thanks

0 Likes

i got a general question about streams and kernels.

assuming:

->im calling a kernel and passing a stream.

->the instruction in the kernel is then aplied implicit to every elemt in the stream (parallel).

->so, the data in the stream has to be independend.

-> it is not possible to do something like thatata[(i+n2)][ix] = data[(i+n1-1)][ix]; Because of parallelity and indipendency.

->in other words: the MD in SIMD refers to one element in the stream.

so i think i am totaly confused.

thank you guys  A LOT.

 

0 Likes

hi, me again.

 

i tried several things:

Using older Drivers: not possible iam using a 4670 AGP, and there is only one functional driver.

Setting some mentioned system variables or editing registry.

Original code from simple_kernel changed:

main(int argc, char* argv[])
{
    for (int i =0; i<1024*100; i++){
        if(i % 1024 == 0){

...

}

}

 same thing. -> VPU recover.

 

then i tried orignal CAL code. in hellocal.cpp

int main(CALuint argc, CALchar** argv)
{
    for (int i =0; i<1024*100; i++){
        if(i % 1024 == 0){

...

}

}

 

TATAA. its working. so the question is, do i have to prog now in CAL?

thanks again!

0 Likes

ok, i deleted everything in the code except:

 // Create a 2D stream of specified size i.e. 64x64 floating-point values   
    brook::Stream<float> inputStream(rank, streamSize);

    // Copying data from input buffer to input stream
//    inputStream.read(inputBuffer);

works.

 

 // Create a 2D stream of specified size i.e. 64x64 floating-point values   
    brook::Stream<float> inputStream(rank, streamSize);

    // Copying data from input buffer to input stream
    inputStream.read(inputBuffer);

dies, that means it runs but you cant do anything else. in the very moment you move something on the screen it crashs-

 

 

0 Likes

could somebody please check this behavior?

 

it must be possible to run a brook application in a loop!? meaning re-run the kernel with new data.

0 Likes
Ceq
Journeyman III

Originally posted by: VST_RT ok, i deleted everything in...

...dies, that means it runs but you cant do anything else. in the very moment you move something on the screen it crashs-

 

Well, this isn't a surprise for me, I can't move anything while running my applications, for me it has been always this way. I just wait until the execution finishes to continue working.

0 Likes
VST_RT
Journeyman III

Originally posted by: Ceq


Well, this isn't a surprise for me, I can't move anything while running my applications, for me it has been always this way. I just wait until the execution finishes to continue working.




But my app will not "finish" its real time audio processing. 

...new data-> .read -> runKernel ->.write -> new data -> .read -> runKernel -> .write -> ....

and i have to be able to use my system/screen at the same time.

0 Likes