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.

Programming parallel FFT using openMP on C6678 device

Other Parts Discussed in Thread: SYSBIOS

Hi Guys,

I want to parallelize a FFT using openMP , but programming DSP is new for me . This is my approach :

  1. In Configuration File :
  • define a Shared Memory for all Cores to put Input Data
  • define a private Data Memory for each Cores
  • use Timer module to retrieve the fft execution Time

to realize this first Step , I use the config File from openMP Example Hello Word , and modified 3 Entry (see. red line):  This is the configuration File :

var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');

// Configure HeapOMP for the shared memory heap

// HeapOMP created in ti/omp/common.cfg.xs

var HeapOMP = xdc.useModule('ti.omp.utils.HeapOMP');

var Timestamp = xdc.useModule('xdc.runtime.Timestamp');

HeapOMP.sharedRegionId = 2;

HeapOMP.localHeapSize  = 0x20000;

HeapOMP.sharedHeapSize = 0x1000000;

// Specify the Shared Region

SharedRegion.setEntryMeta( HeapOMP.sharedRegionId,

                            {   base: 0x90000000,

                                len:  HeapOMP.sharedHeapSize,

                                ownerProcId: 0,

                                cacheEnable: true,

                                createHeap: true,

                                isValid: true,

                                name: "heapomp",

                            }

);

/* load the common configuration file */

xdc.loadCapsule('ti/omp/common.cfg.xs');

var System   = xdc.useModule('xdc.runtime.System');

System.extendedFormats = "%$S";

var OpenMP = xdc.useModule('ti.omp.utils.OpenMP');

OpenMP.setNumProcessors(4);

Program.sectMap["InputBuffer"] = new Program.SectionSpec();           

Program.sectMap["InputBuffer"].loadSegment = "DDR3";

Program.sectMap[".threadprivateBuffer"] = new Program.SectionSpec();  

Program.sectMap[".threadprivateBuffer"].loadSegment = "L2SRAM";

// Enable Cache Write-back for HEAPOMP

var Cache        = xdc.useModule('ti.sysbios.family.c66.Cache');

Cache.setMarMeta(0x80000000, 0x20000000, Cache.PC | Cache.WTE)

 2. In C Programm

  • Init the Input data  ( how I can store this Input data in my InputBuffer defined section )?
  • read a part for Input data  and store in threadprivateBuffer for each Core
  • start parallel region (openMP)
  • compute FFT
  • End parallel region

can somebody please help me to resolve this problem ?

Thank you for reply

Lopez