1414 </ script >
1515
1616 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
17- < title > dpnp.dpnp_array — Data Parallel Extension for NumPy 0.20.0dev2+17.g665bbc7b684 documentation</ title >
17+ < title > dpnp.dpnp_array — Data Parallel Extension for NumPy 0.20.0dev2+19.gd68603fccb7 documentation</ title >
1818 < link rel ="stylesheet " type ="text/css " href ="../../_static/pygments.css?v=03e43079 " />
1919 < link rel ="stylesheet " type ="text/css " href ="../../_static/css/theme.css?v=9edc463e " />
2020
2121
2222 < script src ="../../_static/jquery.js?v=5d32c60e "> </ script >
2323 < script src ="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c "> </ script >
24- < script src ="../../_static/documentation_options.js?v=4a91de6c "> </ script >
24+ < script src ="../../_static/documentation_options.js?v=0e011d4e "> </ script >
2525 < script src ="../../_static/doctools.js?v=9bcbadda "> </ script >
2626 < script src ="../../_static/sphinx_highlight.js?v=dc90522c "> </ script >
2727 < script src ="../../_static/js/theme.js "> </ script >
@@ -192,6 +192,16 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre>
192192 < span class ="k "> else</ span > < span class ="p "> :</ span >
193193 < span class ="n "> buffer</ span > < span class ="o "> =</ span > < span class ="n "> usm_type</ span >
194194
195+ < span class ="k "> if</ span > < span class ="n "> strides</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
196+ < span class ="c1 "> # dpctl expects strides as elements displacement in memory,</ span >
197+ < span class ="c1 "> # while dpnp (and numpy as well) relies on bytes displacement</ span >
198+ < span class ="k "> if</ span > < span class ="n "> dtype</ span > < span class ="ow "> is</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
199+ < span class ="n "> dtype</ span > < span class ="o "> =</ span > < span class ="n "> dpnp</ span > < span class ="o "> .</ span > < span class ="n "> default_float_type</ span > < span class ="p "> (</ span >
200+ < span class ="n "> device</ span > < span class ="o "> =</ span > < span class ="n "> device</ span > < span class ="p "> ,</ span > < span class ="n "> sycl_queue</ span > < span class ="o "> =</ span > < span class ="n "> sycl_queue</ span >
201+ < span class ="p "> )</ span >
202+ < span class ="n "> it_sz</ span > < span class ="o "> =</ span > < span class ="n "> dpnp</ span > < span class ="o "> .</ span > < span class ="n "> dtype</ span > < span class ="p "> (</ span > < span class ="n "> dtype</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> itemsize</ span >
203+ < span class ="n "> strides</ span > < span class ="o "> =</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span > < span class ="n "> el</ span > < span class ="o "> //</ span > < span class ="n "> it_sz</ span > < span class ="k "> for</ span > < span class ="n "> el</ span > < span class ="ow "> in</ span > < span class ="n "> strides</ span > < span class ="p "> )</ span >
204+
195205 < span class ="n "> sycl_queue_normalized</ span > < span class ="o "> =</ span > < span class ="n "> dpnp</ span > < span class ="o "> .</ span > < span class ="n "> get_normalized_queue_device</ span > < span class ="p "> (</ span >
196206 < span class ="n "> device</ span > < span class ="o "> =</ span > < span class ="n "> device</ span > < span class ="p "> ,</ span > < span class ="n "> sycl_queue</ span > < span class ="o "> =</ span > < span class ="n "> sycl_queue</ span >
197207 < span class ="p "> )</ span >
@@ -2050,16 +2060,53 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre>
20502060 < span class ="nd "> @property</ span >
20512061 < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> strides</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
20522062< span class ="w "> </ span > < span class ="sd "> """</ span >
2053- < span class ="sd "> Return memory displacement in array elements, upon unit</ span >
2054- < span class ="sd "> change of respective index.</ span >
2063+ < span class ="sd "> Tuple of bytes to step in each dimension when traversing an array.</ span >
20552064
2056- < span class ="sd "> For example, for strides ``(s1, s2, s3)`` and multi-index</ span >
2057- < span class ="sd "> ``(i1, i2, i3)`` position of the respective element relative</ span >
2058- < span class ="sd "> to zero multi-index element is ``s1*s1 + s2*i2 + s3*i3``.</ span >
2065+ < span class ="sd "> The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`</ span >
2066+ < span class ="sd "> is::</ span >
20592067
2060- < span class ="sd "> """ </ span >
2068+ < span class ="sd "> offset = sum(dpnp.array(i) * a.strides) </ span >
20612069
2062- < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _array_obj</ span > < span class ="o "> .</ span > < span class ="n "> strides</ span >
2070+ < span class ="sd "> For full documentation refer to :obj:`numpy.ndarray.strides`.</ span >
2071+
2072+ < span class ="sd "> See Also</ span >
2073+ < span class ="sd "> --------</ span >
2074+ < span class ="sd "> :obj:`dpnp.lib.stride_tricks.as_strided` : Return a view into the array</ span >
2075+ < span class ="sd "> with given shape and strides.</ span >
2076+
2077+ < span class ="sd "> Examples</ span >
2078+ < span class ="sd "> --------</ span >
2079+ < span class ="sd "> >>> import dpnp as np</ span >
2080+ < span class ="sd "> >>> y = np.reshape(np.arange(2 * 3 * 4, dtype=np.int32), (2, 3, 4))</ span >
2081+ < span class ="sd "> >>> y</ span >
2082+ < span class ="sd "> array([[[ 0, 1, 2, 3],</ span >
2083+ < span class ="sd "> [ 4, 5, 6, 7],</ span >
2084+ < span class ="sd "> [ 8, 9, 10, 11]],</ span >
2085+ < span class ="sd "> [[12, 13, 14, 15],</ span >
2086+ < span class ="sd "> [16, 17, 18, 19],</ span >
2087+ < span class ="sd "> [20, 21, 22, 23]]], dtype=np.int32)</ span >
2088+ < span class ="sd "> >>> y.strides</ span >
2089+ < span class ="sd "> (48, 16, 4)</ span >
2090+ < span class ="sd "> >>> y[1, 1, 1]</ span >
2091+ < span class ="sd "> array(17, dtype=int32)</ span >
2092+ < span class ="sd "> >>> offset = sum(i * s for i, s in zip((1, 1, 1), y.strides))</ span >
2093+ < span class ="sd "> >>> offset // y.itemsize</ span >
2094+ < span class ="sd "> 17</ span >
2095+
2096+ < span class ="sd "> >>> x = np.reshape(np.arange(5*6*7*8, dtype=np.int32), (5, 6, 7, 8))</ span >
2097+ < span class ="sd "> >>> x = x.transpose(2, 3, 1, 0)</ span >
2098+ < span class ="sd "> >>> x.strides</ span >
2099+ < span class ="sd "> (32, 4, 224, 1344)</ span >
2100+ < span class ="sd "> >>> offset = sum(i * s for i, s in zip((3, 5, 2, 2), x.strides))</ span >
2101+ < span class ="sd "> >>> x[3, 5, 2, 2]</ span >
2102+ < span class ="sd "> array(813, dtype=int32)</ span >
2103+ < span class ="sd "> >>> offset // x.itemsize</ span >
2104+ < span class ="sd "> 813</ span >
2105+
2106+ < span class ="sd "> """</ span >
2107+
2108+ < span class ="n "> it_sz</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> itemsize</ span >
2109+ < span class ="k "> return</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span > < span class ="n "> el</ span > < span class ="o "> *</ span > < span class ="n "> it_sz</ span > < span class ="k "> for</ span > < span class ="n "> el</ span > < span class ="ow "> in</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _array_obj</ span > < span class ="o "> .</ span > < span class ="n "> strides</ span > < span class ="p "> )</ span >
20632110
20642111< div class ="viewcode-block " id ="dpnp_array.sum ">
20652112< a class ="viewcode-back " href ="../../reference/generated/dpnp.dpnp_array.dpnp_array.sum.html#dpnp.dpnp_array.dpnp_array.sum "> [docs]</ a >
@@ -2562,23 +2609,20 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre>
25622609
25632610 < span class ="c1 "> # resize on last axis only</ span >
25642611 < span class ="n "> axis</ span > < span class ="o "> =</ span > < span class ="n "> ndim</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span >
2565- < span class ="k "> if</ span > < span class ="n "> old_sh</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> !=</ span > < span class ="mi "> 1</ span > < span class ="ow "> and</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> size</ span > < span class ="o "> !=</ span > < span class ="mi "> 0</ span > < span class ="ow "> and</ span > < span class ="n "> old_strides</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> !=</ span > < span class ="mi "> 1</ span > < span class ="p "> :</ span >
2612+ < span class ="k "> if</ span > < span class ="p "> (</ span >
2613+ < span class ="n "> old_sh</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> !=</ span > < span class ="mi "> 1</ span >
2614+ < span class ="ow "> and</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> size</ span > < span class ="o "> !=</ span > < span class ="mi "> 0</ span >
2615+ < span class ="ow "> and</ span > < span class ="n "> old_strides</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> !=</ span > < span class ="n "> old_itemsz</ span >
2616+ < span class ="p "> ):</ span >
25662617 < span class ="k "> raise</ span > < span class ="ne "> ValueError</ span > < span class ="p "> (</ span >
25672618 < span class ="s2 "> "To change to a dtype of a different size, "</ span >
25682619 < span class ="s2 "> "the last axis must be contiguous"</ span >
25692620 < span class ="p "> )</ span >
25702621
25712622 < span class ="c1 "> # normalize strides whenever itemsize changes</ span >
2572- < span class ="k "> if</ span > < span class ="n "> old_itemsz</ span > < span class ="o "> ></ span > < span class ="n "> new_itemsz</ span > < span class ="p "> :</ span >
2573- < span class ="n "> new_strides</ span > < span class ="o "> =</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span >
2574- < span class ="n "> el</ span > < span class ="o "> *</ span > < span class ="p "> (</ span > < span class ="n "> old_itemsz</ span > < span class ="o "> //</ span > < span class ="n "> new_itemsz</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> el</ span > < span class ="ow "> in</ span > < span class ="n "> old_strides</ span >
2575- < span class ="p "> )</ span >
2576- < span class ="k "> else</ span > < span class ="p "> :</ span >
2577- < span class ="n "> new_strides</ span > < span class ="o "> =</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span >
2578- < span class ="n "> el</ span > < span class ="o "> //</ span > < span class ="p "> (</ span > < span class ="n "> new_itemsz</ span > < span class ="o "> //</ span > < span class ="n "> old_itemsz</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> el</ span > < span class ="ow "> in</ span > < span class ="n "> old_strides</ span >
2579- < span class ="p "> )</ span >
2580- < span class ="n "> new_strides</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span >
2581- < span class ="n "> new_strides</ span > < span class ="o "> =</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span > < span class ="n "> new_strides</ span > < span class ="p "> )</ span >
2623+ < span class ="n "> new_strides</ span > < span class ="o "> =</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span >
2624+ < span class ="n "> old_strides</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ]</ span > < span class ="k "> if</ span > < span class ="n "> i</ span > < span class ="o "> !=</ span > < span class ="n "> axis</ span > < span class ="k "> else</ span > < span class ="n "> new_itemsz</ span > < span class ="k "> for</ span > < span class ="n "> i</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="n "> ndim</ span > < span class ="p "> )</ span >
2625+ < span class ="p "> )</ span >
25822626
25832627 < span class ="n "> new_dim</ span > < span class ="o "> =</ span > < span class ="n "> old_sh</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> *</ span > < span class ="n "> old_itemsz</ span >
25842628 < span class ="k "> if</ span > < span class ="n "> new_dim</ span > < span class ="o "> %</ span > < span class ="n "> new_itemsz</ span > < span class ="o "> !=</ span > < span class ="mi "> 0</ span > < span class ="p "> :</ span >
@@ -2588,9 +2632,10 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre>
25882632 < span class ="p "> )</ span >
25892633
25902634 < span class ="c1 "> # normalize shape whenever itemsize changes</ span >
2591- < span class ="n "> new_sh</ span > < span class ="o "> =</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span > < span class ="n "> old_sh</ span > < span class ="p "> )</ span >
2592- < span class ="n "> new_sh</ span > < span class ="p "> [</ span > < span class ="n "> axis</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> new_dim</ span > < span class ="o "> //</ span > < span class ="n "> new_itemsz</ span >
2593- < span class ="n "> new_sh</ span > < span class ="o "> =</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span > < span class ="n "> new_sh</ span > < span class ="p "> )</ span >
2635+ < span class ="n "> new_sh</ span > < span class ="o "> =</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span >
2636+ < span class ="n "> old_sh</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ]</ span > < span class ="k "> if</ span > < span class ="n "> i</ span > < span class ="o "> !=</ span > < span class ="n "> axis</ span > < span class ="k "> else</ span > < span class ="n "> new_dim</ span > < span class ="o "> //</ span > < span class ="n "> new_itemsz</ span >
2637+ < span class ="k "> for</ span > < span class ="n "> i</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="n "> ndim</ span > < span class ="p "> )</ span >
2638+ < span class ="p "> )</ span >
25942639
25952640 < span class ="k "> return</ span > < span class ="n "> dpnp_array</ span > < span class ="p "> (</ span >
25962641 < span class ="n "> new_sh</ span > < span class ="p "> ,</ span >
0 commit comments