UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Contributor
Contributor
1,841 Views
Registered: ‎09-19-2017

Is sds_alloc() for big array size still limited?

Jump to solution

Hi guys, 

 

I'm new to sdsoc.

 

I found one year ago, sds_alloc has a limitation of can only allocating arrays that is less than 4M. Check the post link here:

https://forums.xilinx.com/t5/SDSoC-Environment-and-reVISION/sds-alloc-error-with-big-arrays/td-p/706581

 

Is it still a problem in recent version of sdsocs? I'm recently working on migrating our previous hls ips to sdsoc platform. The ip core uses m_axi to get access to a physical contiguous array that is prepared by the PS in the dram. As the array is pretty large (~54M), I'm not sure whether I can use sds_alloc to allocate the physical contiguous array for zero_copy access by the pl.

 

Thanks!

Reimond

Tags (1)
0 Kudos
1 Solution

Accepted Solutions
Explorer
Explorer
2,753 Views
Registered: ‎09-19-2017

Re: Is sds_alloc() for big array size still limited?

Jump to solution
Hi Reimond,

Should be fixed now (current version 2017.2). Post back if you're uncover problems.

Sam

View solution in original post

0 Kudos
6 Replies
Explorer
Explorer
2,754 Views
Registered: ‎09-19-2017

Re: Is sds_alloc() for big array size still limited?

Jump to solution
Hi Reimond,

Should be fixed now (current version 2017.2). Post back if you're uncover problems.

Sam

View solution in original post

0 Kudos
Contributor
Contributor
1,802 Views
Registered: ‎09-19-2017

Re: Is sds_alloc() for big array size still limited?

Jump to solution
Thanks for the prompt rely, Sam.

I just can't see my accelerator work yesterday. After rebooting the board, the accelerator and sds_alloc work correctly now.

Another thing I felt confusing is that our accelerator can achieve ~70ms for a function call on zynq7020 device running at 166MHz. The accelerator access ddr3 memory multiple times as it needs to save the partial results. On SDSoC platform of zcu102 board, the accelerator is running at 300MHz and with the upgrade of ddr4 memory, I found that the function call only reduced to ~48ms, which is not that significant as we expected. How do you think about it?

Reimond
0 Kudos
Explorer
Explorer
1,786 Views
Registered: ‎09-19-2017

Re: Is sds_alloc() for big array size still limited?

Jump to solution

Hi Reimond,

 

Consider enabling the Event Trace option and then run your application to collect the system level profile for both systems. There may be certain types of delays that are similar between the two architectures.

 

While the expectation is that applications ported from Zynq to ZynqMP are faster, I don't think there is a consensus on how much faster it should be. 

 

Sam

0 Kudos
Contributor
Contributor
1,741 Views
Registered: ‎09-19-2017

Re: Is sds_alloc() for big array size still limited?

Jump to solution
Thanks again Sam,

Do event tracing should be a good idea. It must be better than setting up timers for every function call, and the hardware could also be traced.

Here I have a different question... Our previous hls code access ps ddr via 64-bit m_axi master. The hls ip uses memcpy to make sure the data transfer is in burst mode on zynq. On zynq ultrascale, do you agree that extending the data port to 128-bit can significantly improve the performance?

Reimond
0 Kudos
Explorer
Explorer
1,672 Views
Registered: ‎09-19-2017

Re: Is sds_alloc() for big array size still limited?

Jump to solution
Hi Reimond,

The Xilinx AXI Interconnect IP is inserted between Masters/Slaves and has the capability to do buffering, protocol conversion (AXI Full ==> AXI Lite), and data width conversion. If you have a port with 128 bit data width on one side and a 64 bit data width on the other, the AXI IC will do the conversion, halving your bandwidth.

It should be beneficial to increase the data port width to 128 bits although I personally haven't build any designs like this (just for lack of time). It should work. Let us know what you find.

Sam
0 Kudos
Observer pmpakos
Observer
452 Views
Registered: ‎05-13-2018

Re: Is sds_alloc() for big array size still limited?

Jump to solution

Hello. 

 

I see that on previous builds there was a problem about how big an array using sds_alloc_non_cacheable can be. On zcu102, I cannot allocate a vector larger than 1024MB. Why is that? The RAM of zcu102 is 4096MB and using malloc, I could allocate a lot more than 1024MB of memory. 

Is there a problem about how much of RAM is addressable by the PL ?

0 Kudos