Вы используете большой локальный массив.
__local short temp[24][1080]
2 байта * 24 * 1080 = 50,6 кБ. Некоторые настольные графические процессоры (и их аналоги для ноутбуков) имеют менее доступные ограничения локальной памяти. Например, GTX 1060 поддерживает значение CL_DEVICE_LOCAL_MEM_SIZE
49152 байта. Но adreno 620 либо игнорирует использование массива, либо поддерживает большие локальные массивы, потому что существует вероятность того, что локальные массивы эмулируются внутри глобальных массивов (ограниченных сотнями мегабайт) для этих чипов. Если они поддерживают быструю локальную память внутри чипа, тогда появляется больше возможностей «игнорировать» проблему, или они действительно удвоили пределы локальной памяти по сравнению с последним поколением Adrenos.
Даже когда графический процессор поддерживает точное значение, использование всего этого ограничит параллелизм на уровне потоков в каждом конвейере, что, как правило, значительно снижает потенциальный прирост производительности.
Если последнее поколение графических процессоров Adreno одинаковое,
на этой странице написано
CL_DEVICE_LOCAL_MEM_SIZE
32768
CL_DEVICE_LOCAL_MEM_TYPE
CL_LOCAL
, что это быстро, но это 32 КБ, поэтому игнорирует ошибку или вы пропустили добавление необходимой логики перехвата ошибок или того и другого.
Вы пытаетесь поместить столбец непосредственно в DataGrid
(поэтому это пытается поместить столбец в сетку Items
набор и это объясняют Вашу ошибку). Необходимо вставить его Columns
набор:
<toolkit:DataGrid x:Name="TheDataGrid"
CanUserAddRows="False"
AlternatingRowBackground="#ddd"
CanUserSortColumns="true"
PreviewKeyDown="TheDataGrid_PreviewKeyDown"
AutoGenerateColumns="False"
RowEditEnding="TheDataGrid_RowEditEnding">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn Header="Contact Name" Width="SizeToCells"
Binding="{Binding ContactName}"
IsReadOnly="False"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>