This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5749: SSD multibox example

Part Number: AM5749

Hi,

when I run the example of ssd_multibox of Processor SDK Linux 06_00_00_07 in 5749.In the example,there is only one network,and the executors are created once,but I want to run one network on eve1 and dsp1,then Simultaneously run a different network on eve2 and dsp2,should I create another group of executors?like this,

there the c1 an c2 are two different network,but when I do like this ,I receive a mistake.

Please give me some suggestion.

Bill

  • Hi Bill,

    What's the value of num_eves, num_dsps, num_eves2_num_dsp2 you are using? Please also share the error that you see.

    Regards,

    Manisha

  • HI Manisha,

    I receive the error is   

    ERROR:  CL_INVALID_KERNEL_ARGS 

    the value of num_eves=1,num_dsps=1,num_eves2=2,num_dsps2=2,and then I modify the function of CreateExecutor like this



    So,I want to allocate different DeviceId for different executor,for DeviceId ,like this


    Would I try another way to run different network on different cores?

    Bill
  • Hi Bill,

        CreateExecutor() and the rest of the code is only provided as an example to run a single network.  You are welcome to modify for your own situation.  For the case you described, you need to create separate Executors for c1 and c2, and separate pipelines for c1 and c2, just make sure you set things up correctly.  Something like the following:

        DeviceIds ids_0;
        DeviceIds ids_1;
        ids_0.insert(static_cast<DeviceId>(0));
        ids_1.insert(static_cast<DeviceId>(1));
    
        Executor* e_eve_0 = new Executor(DeviceType::EVE, ids_0, c, 1);
        Executor* e_dsp_0 = new Executor(DeviceType::DSP, ids_0, c, 2);
        vector<ExecutionObjectPipeline *> eops_0;
        eops_0.push_back(new ExecutionObjectPipeline({(*e_eve_0)[0], (*e_dsp_0)[0]});
    
        Executor* e_eve_1 = new Executor(DeviceType::EVE, ids_1, c2, 1);
        Executor* e_dsp_1 = new Executor(DeviceType::DSP, ids_1, c2, 2);
        vector<ExecutionObjectPipeline *> eops_1;
        eops_1.push_back(new ExecutionObjectPipeline({(*e_eve_1)[0], (*e_dsp_1)[0]});
    
        // now eops_0 can be used to run inference on network config "c"
        // now eops_1 can be used to run inference on network config "c2"
    

    Hope this helps.

    - Yuan

  • HI Yuan,

    Thanks for your reply,it do work.

    I did the same way like your reply in last week,but it did't work, 

    may I make some logical error.

    Thanks a lot.

    BIll