[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/feed.php on line 173: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/feed.php on line 174: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
Parallella Community Supercomputing for Everyone 2017-02-01T03:45:04+00:00 https://parallella.org/forums/feed.php?f=23&t=1936 2017-02-01T03:45:04+00:00 2017-02-01T03:45:04+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=18563#p18563 <![CDATA[Re: 2D DMA]]> Statistics: Posted by jar — Wed Feb 01, 2017 3:45 am


]]>
2017-02-01T02:59:33+00:00 2017-02-01T02:59:33+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=18562#p18562 <![CDATA[Re: 2D DMA]]>
I think I'll have to build a test case and see how it works.

I want to write another blog post so I'll try to cover the basics so that others don't have to nut it out from scratch.

nick

Statistics: Posted by nickoppen — Wed Feb 01, 2017 2:59 am


]]>
2017-01-31T17:46:19+00:00 2017-01-31T17:46:19+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=18561#p18561 <![CDATA[Re: 2D DMA]]>
2D DMAs are a challenge to comprehend and the API isn't obvious.

The 4s are there because that is the size of a word (4 bytes) in my example. An 8 byte double-word is the preferred transfer amount since the network is 64-bit. However, sometimes that wont work out as the size is data-dependent (alignment and sizes). Notzed's code assumes 4 bytes per word and aligned memory (he increments pointers to ints which implicitly add 4 bytes at a time). The outer stride is the big N (for the source) minus the little n (for the destination).

Most of the difficulty I had with understanding was the outer stride for the source and destination. The inner stride concept is easy. Because the inner stride of the destination was increasing by 4 and I wanted the block to copy to contiguous (linear) memory, the outer stride of the destination is also 4. This results in a dsta += 4 - 4 (nop) operation. Because the destination pointer was already incremented n times in the inner loop, we have to subtract that off: src += 4*(N-n+1) - 4.

I wanted to use this to simply copy rectangular (or square) blocks. But you could probably use this generic interface to copy "parallelogram shapes of data", transpose data using a combination of negative strides, or copy just even columns. I would have to think about those some more.

The "dma.inner_stride = 0x00010001 << shift;" is just for configuring the register that kicks off the DMA. 0x00010001 is byte alignment/transfers. 0x00080008 is double-word alignment/transfers. Using a shift operator makes this easy. You could also use other weird combinations like 0x00020004, but that gets harder to imagine.

Hope that helps.

Statistics: Posted by jar — Tue Jan 31, 2017 5:46 pm


]]>
2017-01-31T05:54:08+00:00 2017-01-31T05:54:08+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=18559#p18559 <![CDATA[Re: 2D DMA]]> Statistics: Posted by nickoppen — Tue Jan 31, 2017 5:54 am


]]>
2014-11-30T05:28:40+00:00 2014-11-30T05:28:40+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=11826#p11826 <![CDATA[Re: 2D DMA]]> Statistics: Posted by notzed — Sun Nov 30, 2014 5:28 am


]]>
2014-11-30T01:25:55+00:00 2014-11-30T01:25:55+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=11824#p11824 <![CDATA[Re: 2D DMA]]> Statistics: Posted by jar — Sun Nov 30, 2014 1:25 am


]]>
2014-11-29T05:57:02+00:00 2014-11-29T05:57:02+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=11810#p11810 <![CDATA[Re: 2D DMA]]> Statistics: Posted by notzed — Sat Nov 29, 2014 5:57 am


]]>
2014-11-28T18:54:47+00:00 2014-11-28T18:54:47+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=11806#p11806 <![CDATA[Re: 2D DMA]]> Statistics: Posted by jar — Fri Nov 28, 2014 6:54 pm


]]>
2014-11-27T02:43:05+00:00 2014-11-27T02:43:05+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=11780#p11780 <![CDATA[Re: 2D DMA]]> Statistics: Posted by notzed — Thu Nov 27, 2014 2:43 am


]]>
2014-11-26T16:16:16+00:00 2014-11-26T16:16:16+00:00 https://parallella.org/forums/viewtopic.php?t=1936&p=11769#p11769 <![CDATA[2D DMA]]> Statistics: Posted by jar — Wed Nov 26, 2014 4:16 pm


]]>