13 Replies Latest reply on Oct 5, 2009 8:25 AM by VST_RT

    VST-Plugin

    VST_RT
      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

       

        • VST-Plugin
          gaurav.garg

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

            • VST-Plugin
              VST_RT

              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.

               

                • VST-Plugin
                  gaurav.garg

                  Which OS are you using Vista or XP?

                    • VST-Plugin
                      VST_RT

                      Hey,

                      its a

                      Windows XP Prof 32bit with Service Pack3

                       

                      tanks.

                       

                        • VST-Plugin
                          Gipsel

                          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.

                            • VST-Plugin
                              VST_RT

                              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?

                                • VST-Plugin
                                  VST_RT

                                  still its running very unstable. need some hint.

                                  thanks

                                    • VST-Plugin
                                      VST_RT

                                      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.

                                       

                                        • VST-Plugin
                                          VST_RT

                                          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!

                                            • VST-Plugin
                                              VST_RT

                                              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-

                                               

                                               

                                                • VST-Plugin
                                                  VST_RT

                                                  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.

                                                  • VST-Plugin
                                                    Ceq

                                                     

                                                    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.

                                                      • VST-Plugin
                                                        VST_RT

                                                         

                                                        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.