@group(0)
@binding(0)
var<storage, read_write> v_indices: array<u32>; // this is used as both input and output for convenience
fn x2(i: u32) -> u32 {
return i*2u;
}
@compute
@workgroup_size(1)
fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
var arr: array<u32, 1000>;
arr[0] = x2(0u);
arr[1] = x2(1u);
arr[2] = x2(2u);
arr[3] = x2(3u);
arr[4] = x2(4u);
arr[5] = x2(5u);
arr[6] = x2(6u);
arr[7] = x2(7u);
arr[8] = x2(8u);
arr[9] = x2(9u);
arr[10] = x2(10u);
arr[11] = x2(11u);
arr[12] = x2(12u);
arr[13] = x2(13u);
arr[14] = x2(14u);
arr[15] = x2(15u);
arr[16] = x2(16u);
arr[17] = x2(17u);
arr[18] = x2(18u);
arr[19] = x2(19u);
arr[20] = x2(20u);
arr[21] = x2(21u);
arr[22] = x2(22u);
arr[23] = x2(23u);
arr[24] = x2(24u);
arr[25] = x2(25u);
arr[26] = x2(26u);
arr[27] = x2(27u);
arr[28] = x2(28u);
arr[29] = x2(29u);
arr[30] = x2(30u);
arr[31] = x2(31u);
arr[32] = x2(32u);
arr[33] = x2(33u);
arr[34] = x2(34u);
arr[35] = x2(35u);
arr[36] = x2(36u);
arr[37] = x2(37u);
arr[38] = x2(38u);
arr[39] = x2(39u);
arr[40] = x2(40u);
arr[41] = x2(41u);
arr[42] = x2(42u);
arr[43] = x2(43u);
arr[44] = x2(44u);
arr[45] = x2(45u);
arr[46] = x2(46u);
arr[47] = x2(47u);
arr[48] = x2(48u);
arr[49] = x2(49u);
arr[50] = x2(50u);
arr[51] = x2(51u);
arr[52] = x2(52u);
arr[53] = x2(53u);
arr[54] = x2(54u);
arr[55] = x2(55u);
arr[56] = x2(56u);
arr[57] = x2(57u);
arr[58] = x2(58u);
arr[59] = x2(59u);
arr[60] = x2(60u);
arr[61] = x2(61u);
arr[62] = x2(62u);
arr[63] = x2(63u);
arr[64] = x2(64u);
arr[65] = x2(65u);
arr[66] = x2(66u);
arr[67] = x2(67u);
arr[68] = x2(68u);
arr[69] = x2(69u);
arr[70] = x2(70u);
arr[71] = x2(71u);
arr[72] = x2(72u);
arr[73] = x2(73u);
arr[74] = x2(74u);
arr[75] = x2(75u);
arr[76] = x2(76u);
arr[77] = x2(77u);
arr[78] = x2(78u);
arr[79] = x2(79u);
arr[80] = x2(80u);
arr[81] = x2(81u);
arr[82] = x2(82u);
arr[83] = x2(83u);
arr[84] = x2(84u);
arr[85] = x2(85u);
arr[86] = x2(86u);
arr[87] = x2(87u);
arr[88] = x2(88u);
arr[89] = x2(89u);
arr[90] = x2(90u);
arr[91] = x2(91u);
arr[92] = x2(92u);
arr[93] = x2(93u);
arr[94] = x2(94u);
arr[95] = x2(95u);
arr[96] = x2(96u);
arr[97] = x2(97u);
arr[98] = x2(98u);
arr[99] = x2(99u);
arr[100] = x2(100u);
arr[101] = x2(101u);
arr[102] = x2(102u);
arr[103] = x2(103u);
arr[104] = x2(104u);
arr[105] = x2(105u);
arr[106] = x2(106u);
arr[107] = x2(107u);
arr[108] = x2(108u);
arr[109] = x2(109u);
arr[110] = x2(110u);
arr[111] = x2(111u);
arr[112] = x2(112u);
arr[113] = x2(113u);
arr[114] = x2(114u);
arr[115] = x2(115u);
arr[116] = x2(116u);
arr[117] = x2(117u);
arr[118] = x2(118u);
arr[119] = x2(119u);
arr[120] = x2(120u);
arr[121] = x2(121u);
arr[122] = x2(122u);
arr[123] = x2(123u);
arr[124] = x2(124u);
arr[125] = x2(125u);
arr[126] = x2(126u);
arr[127] = x2(127u);
arr[128] = x2(128u);
arr[129] = x2(129u);
arr[130] = x2(130u);
arr[131] = x2(131u);
arr[132] = x2(132u);
arr[133] = x2(133u);
arr[134] = x2(134u);
arr[135] = x2(135u);
arr[136] = x2(136u);
arr[137] = x2(137u);
arr[138] = x2(138u);
arr[139] = x2(139u);
arr[140] = x2(140u);
arr[141] = x2(141u);
arr[142] = x2(142u);
arr[143] = x2(143u);
arr[144] = x2(144u);
arr[145] = x2(145u);
arr[146] = x2(146u);
arr[147] = x2(147u);
arr[148] = x2(148u);
arr[149] = x2(149u);
arr[150] = x2(150u);
arr[151] = x2(151u);
arr[152] = x2(152u);
arr[153] = x2(153u);
arr[154] = x2(154u);
arr[155] = x2(155u);
arr[156] = x2(156u);
arr[157] = x2(157u);
arr[158] = x2(158u);
arr[159] = x2(159u);
arr[160] = x2(160u);
arr[161] = x2(161u);
arr[162] = x2(162u);
arr[163] = x2(163u);
arr[164] = x2(164u);
arr[165] = x2(165u);
arr[166] = x2(166u);
arr[167] = x2(167u);
arr[168] = x2(168u);
arr[169] = x2(169u);
arr[170] = x2(170u);
arr[171] = x2(171u);
arr[172] = x2(172u);
arr[173] = x2(173u);
arr[174] = x2(174u);
arr[175] = x2(175u);
arr[176] = x2(176u);
arr[177] = x2(177u);
arr[178] = x2(178u);
arr[179] = x2(179u);
arr[180] = x2(180u);
arr[181] = x2(181u);
arr[182] = x2(182u);
arr[183] = x2(183u);
arr[184] = x2(184u);
arr[185] = x2(185u);
arr[186] = x2(186u);
arr[187] = x2(187u);
arr[188] = x2(188u);
arr[189] = x2(189u);
arr[190] = x2(190u);
arr[191] = x2(191u);
arr[192] = x2(192u);
arr[193] = x2(193u);
arr[194] = x2(194u);
arr[195] = x2(195u);
arr[196] = x2(196u);
arr[197] = x2(197u);
arr[198] = x2(198u);
arr[199] = x2(199u);
arr[200] = x2(200u);
arr[201] = x2(201u);
arr[202] = x2(202u);
arr[203] = x2(203u);
arr[204] = x2(204u);
arr[205] = x2(205u);
arr[206] = x2(206u);
arr[207] = x2(207u);
arr[208] = x2(208u);
arr[209] = x2(209u);
arr[210] = x2(210u);
arr[211] = x2(211u);
arr[212] = x2(212u);
arr[213] = x2(213u);
arr[214] = x2(214u);
arr[215] = x2(215u);
arr[216] = x2(216u);
arr[217] = x2(217u);
arr[218] = x2(218u);
arr[219] = x2(219u);
arr[220] = x2(220u);
arr[221] = x2(221u);
arr[222] = x2(222u);
arr[223] = x2(223u);
arr[224] = x2(224u);
arr[225] = x2(225u);
arr[226] = x2(226u);
arr[227] = x2(227u);
arr[228] = x2(228u);
arr[229] = x2(229u);
arr[230] = x2(230u);
arr[231] = x2(231u);
arr[232] = x2(232u);
arr[233] = x2(233u);
arr[234] = x2(234u);
arr[235] = x2(235u);
arr[236] = x2(236u);
arr[237] = x2(237u);
arr[238] = x2(238u);
arr[239] = x2(239u);
arr[240] = x2(240u);
arr[241] = x2(241u);
arr[242] = x2(242u);
arr[243] = x2(243u);
arr[244] = x2(244u);
arr[245] = x2(245u);
arr[246] = x2(246u);
arr[247] = x2(247u);
arr[248] = x2(248u);
arr[249] = x2(249u);
arr[250] = x2(250u);
arr[251] = x2(251u);
arr[252] = x2(252u);
arr[253] = x2(253u);
arr[254] = x2(254u);
arr[255] = x2(255u);
arr[256] = x2(256u);
arr[257] = x2(257u);
arr[258] = x2(258u);
arr[259] = x2(259u);
arr[260] = x2(260u);
arr[261] = x2(261u);
arr[262] = x2(262u);
arr[263] = x2(263u);
arr[264] = x2(264u);
arr[265] = x2(265u);
arr[266] = x2(266u);
arr[267] = x2(267u);
arr[268] = x2(268u);
arr[269] = x2(269u);
arr[270] = x2(270u);
arr[271] = x2(271u);
arr[272] = x2(272u);
arr[273] = x2(273u);
arr[274] = x2(274u);
arr[275] = x2(275u);
arr[276] = x2(276u);
arr[277] = x2(277u);
arr[278] = x2(278u);
arr[279] = x2(279u);
arr[280] = x2(280u);
arr[281] = x2(281u);
arr[282] = x2(282u);
arr[283] = x2(283u);
arr[284] = x2(284u);
arr[285] = x2(285u);
arr[286] = x2(286u);
arr[287] = x2(287u);
arr[288] = x2(288u);
arr[289] = x2(289u);
arr[290] = x2(290u);
arr[291] = x2(291u);
arr[292] = x2(292u);
arr[293] = x2(293u);
arr[294] = x2(294u);
arr[295] = x2(295u);
arr[296] = x2(296u);
arr[297] = x2(297u);
arr[298] = x2(298u);
arr[299] = x2(299u);
arr[300] = x2(300u);
arr[301] = x2(301u);
arr[302] = x2(302u);
arr[303] = x2(303u);
arr[304] = x2(304u);
arr[305] = x2(305u);
arr[306] = x2(306u);
arr[307] = x2(307u);
arr[308] = x2(308u);
arr[309] = x2(309u);
arr[310] = x2(310u);
arr[311] = x2(311u);
arr[312] = x2(312u);
arr[313] = x2(313u);
arr[314] = x2(314u);
arr[315] = x2(315u);
arr[316] = x2(316u);
arr[317] = x2(317u);
arr[318] = x2(318u);
arr[319] = x2(319u);
arr[320] = x2(320u);
arr[321] = x2(321u);
arr[322] = x2(322u);
arr[323] = x2(323u);
arr[324] = x2(324u);
arr[325] = x2(325u);
arr[326] = x2(326u);
arr[327] = x2(327u);
arr[328] = x2(328u);
arr[329] = x2(329u);
arr[330] = x2(330u);
arr[331] = x2(331u);
arr[332] = x2(332u);
arr[333] = x2(333u);
arr[334] = x2(334u);
arr[335] = x2(335u);
arr[336] = x2(336u);
arr[337] = x2(337u);
arr[338] = x2(338u);
arr[339] = x2(339u);
arr[340] = x2(340u);
arr[341] = x2(341u);
arr[342] = x2(342u);
arr[343] = x2(343u);
arr[344] = x2(344u);
arr[345] = x2(345u);
arr[346] = x2(346u);
arr[347] = x2(347u);
arr[348] = x2(348u);
arr[349] = x2(349u);
arr[350] = x2(350u);
arr[351] = x2(351u);
arr[352] = x2(352u);
arr[353] = x2(353u);
arr[354] = x2(354u);
arr[355] = x2(355u);
arr[356] = x2(356u);
arr[357] = x2(357u);
arr[358] = x2(358u);
arr[359] = x2(359u);
arr[360] = x2(360u);
arr[361] = x2(361u);
arr[362] = x2(362u);
arr[363] = x2(363u);
arr[364] = x2(364u);
arr[365] = x2(365u);
arr[366] = x2(366u);
arr[367] = x2(367u);
arr[368] = x2(368u);
arr[369] = x2(369u);
arr[370] = x2(370u);
arr[371] = x2(371u);
arr[372] = x2(372u);
arr[373] = x2(373u);
arr[374] = x2(374u);
arr[375] = x2(375u);
arr[376] = x2(376u);
arr[377] = x2(377u);
arr[378] = x2(378u);
arr[379] = x2(379u);
arr[380] = x2(380u);
arr[381] = x2(381u);
arr[382] = x2(382u);
arr[383] = x2(383u);
arr[384] = x2(384u);
arr[385] = x2(385u);
arr[386] = x2(386u);
arr[387] = x2(387u);
arr[388] = x2(388u);
arr[389] = x2(389u);
arr[390] = x2(390u);
arr[391] = x2(391u);
arr[392] = x2(392u);
arr[393] = x2(393u);
arr[394] = x2(394u);
arr[395] = x2(395u);
arr[396] = x2(396u);
arr[397] = x2(397u);
arr[398] = x2(398u);
arr[399] = x2(399u);
arr[400] = x2(400u);
arr[401] = x2(401u);
arr[402] = x2(402u);
arr[403] = x2(403u);
arr[404] = x2(404u);
arr[405] = x2(405u);
arr[406] = x2(406u);
arr[407] = x2(407u);
arr[408] = x2(408u);
arr[409] = x2(409u);
arr[410] = x2(410u);
arr[411] = x2(411u);
arr[412] = x2(412u);
arr[413] = x2(413u);
arr[414] = x2(414u);
arr[415] = x2(415u);
arr[416] = x2(416u);
arr[417] = x2(417u);
arr[418] = x2(418u);
arr[419] = x2(419u);
arr[420] = x2(420u);
arr[421] = x2(421u);
arr[422] = x2(422u);
arr[423] = x2(423u);
arr[424] = x2(424u);
arr[425] = x2(425u);
arr[426] = x2(426u);
arr[427] = x2(427u);
arr[428] = x2(428u);
arr[429] = x2(429u);
arr[430] = x2(430u);
arr[431] = x2(431u);
arr[432] = x2(432u);
arr[433] = x2(433u);
arr[434] = x2(434u);
arr[435] = x2(435u);
arr[436] = x2(436u);
arr[437] = x2(437u);
arr[438] = x2(438u);
arr[439] = x2(439u);
arr[440] = x2(440u);
arr[441] = x2(441u);
arr[442] = x2(442u);
arr[443] = x2(443u);
arr[444] = x2(444u);
arr[445] = x2(445u);
arr[446] = x2(446u);
arr[447] = x2(447u);
arr[448] = x2(448u);
arr[449] = x2(449u);
arr[450] = x2(450u);
arr[451] = x2(451u);
arr[452] = x2(452u);
arr[453] = x2(453u);
arr[454] = x2(454u);
arr[455] = x2(455u);
arr[456] = x2(456u);
arr[457] = x2(457u);
arr[458] = x2(458u);
arr[459] = x2(459u);
arr[460] = x2(460u);
arr[461] = x2(461u);
arr[462] = x2(462u);
arr[463] = x2(463u);
arr[464] = x2(464u);
arr[465] = x2(465u);
arr[466] = x2(466u);
arr[467] = x2(467u);
arr[468] = x2(468u);
arr[469] = x2(469u);
arr[470] = x2(470u);
arr[471] = x2(471u);
arr[472] = x2(472u);
arr[473] = x2(473u);
arr[474] = x2(474u);
arr[475] = x2(475u);
arr[476] = x2(476u);
arr[477] = x2(477u);
arr[478] = x2(478u);
arr[479] = x2(479u);
arr[480] = x2(480u);
arr[481] = x2(481u);
arr[482] = x2(482u);
arr[483] = x2(483u);
arr[484] = x2(484u);
arr[485] = x2(485u);
arr[486] = x2(486u);
arr[487] = x2(487u);
arr[488] = x2(488u);
arr[489] = x2(489u);
arr[490] = x2(490u);
arr[491] = x2(491u);
arr[492] = x2(492u);
arr[493] = x2(493u);
arr[494] = x2(494u);
arr[495] = x2(495u);
arr[496] = x2(496u);
arr[497] = x2(497u);
arr[498] = x2(498u);
arr[499] = x2(499u);
arr[500] = x2(500u);
arr[501] = x2(501u);
arr[502] = x2(502u);
arr[503] = x2(503u);
arr[504] = x2(504u);
arr[505] = x2(505u);
arr[506] = x2(506u);
arr[507] = x2(507u);
arr[508] = x2(508u);
arr[509] = x2(509u);
arr[510] = x2(510u);
arr[511] = x2(511u);
arr[512] = x2(512u);
arr[513] = x2(513u);
arr[514] = x2(514u);
arr[515] = x2(515u);
arr[516] = x2(516u);
arr[517] = x2(517u);
arr[518] = x2(518u);
arr[519] = x2(519u);
arr[520] = x2(520u);
arr[521] = x2(521u);
arr[522] = x2(522u);
arr[523] = x2(523u);
arr[524] = x2(524u);
arr[525] = x2(525u);
arr[526] = x2(526u);
arr[527] = x2(527u);
arr[528] = x2(528u);
arr[529] = x2(529u);
arr[530] = x2(530u);
arr[531] = x2(531u);
arr[532] = x2(532u);
arr[533] = x2(533u);
arr[534] = x2(534u);
arr[535] = x2(535u);
arr[536] = x2(536u);
arr[537] = x2(537u);
arr[538] = x2(538u);
arr[539] = x2(539u);
arr[540] = x2(540u);
arr[541] = x2(541u);
arr[542] = x2(542u);
arr[543] = x2(543u);
arr[544] = x2(544u);
arr[545] = x2(545u);
arr[546] = x2(546u);
arr[547] = x2(547u);
arr[548] = x2(548u);
arr[549] = x2(549u);
arr[550] = x2(550u);
arr[551] = x2(551u);
arr[552] = x2(552u);
arr[553] = x2(553u);
arr[554] = x2(554u);
arr[555] = x2(555u);
arr[556] = x2(556u);
arr[557] = x2(557u);
arr[558] = x2(558u);
arr[559] = x2(559u);
arr[560] = x2(560u);
arr[561] = x2(561u);
arr[562] = x2(562u);
arr[563] = x2(563u);
arr[564] = x2(564u);
arr[565] = x2(565u);
arr[566] = x2(566u);
arr[567] = x2(567u);
arr[568] = x2(568u);
arr[569] = x2(569u);
arr[570] = x2(570u);
arr[571] = x2(571u);
arr[572] = x2(572u);
arr[573] = x2(573u);
arr[574] = x2(574u);
arr[575] = x2(575u);
arr[576] = x2(576u);
arr[577] = x2(577u);
arr[578] = x2(578u);
arr[579] = x2(579u);
arr[580] = x2(580u);
arr[581] = x2(581u);
arr[582] = x2(582u);
arr[583] = x2(583u);
arr[584] = x2(584u);
arr[585] = x2(585u);
arr[586] = x2(586u);
arr[587] = x2(587u);
arr[588] = x2(588u);
arr[589] = x2(589u);
arr[590] = x2(590u);
arr[591] = x2(591u);
arr[592] = x2(592u);
arr[593] = x2(593u);
arr[594] = x2(594u);
arr[595] = x2(595u);
arr[596] = x2(596u);
arr[597] = x2(597u);
arr[598] = x2(598u);
arr[599] = x2(599u);
arr[600] = x2(600u);
arr[601] = x2(601u);
arr[602] = x2(602u);
arr[603] = x2(603u);
arr[604] = x2(604u);
arr[605] = x2(605u);
arr[606] = x2(606u);
arr[607] = x2(607u);
arr[608] = x2(608u);
arr[609] = x2(609u);
arr[610] = x2(610u);
arr[611] = x2(611u);
arr[612] = x2(612u);
arr[613] = x2(613u);
arr[614] = x2(614u);
arr[615] = x2(615u);
arr[616] = x2(616u);
arr[617] = x2(617u);
arr[618] = x2(618u);
arr[619] = x2(619u);
arr[620] = x2(620u);
arr[621] = x2(621u);
arr[622] = x2(622u);
arr[623] = x2(623u);
arr[624] = x2(624u);
arr[625] = x2(625u);
arr[626] = x2(626u);
arr[627] = x2(627u);
arr[628] = x2(628u);
arr[629] = x2(629u);
arr[630] = x2(630u);
arr[631] = x2(631u);
arr[632] = x2(632u);
arr[633] = x2(633u);
arr[634] = x2(634u);
arr[635] = x2(635u);
arr[636] = x2(636u);
arr[637] = x2(637u);
arr[638] = x2(638u);
arr[639] = x2(639u);
arr[640] = x2(640u);
arr[641] = x2(641u);
arr[642] = x2(642u);
arr[643] = x2(643u);
arr[644] = x2(644u);
arr[645] = x2(645u);
arr[646] = x2(646u);
arr[647] = x2(647u);
arr[648] = x2(648u);
arr[649] = x2(649u);
arr[650] = x2(650u);
arr[651] = x2(651u);
arr[652] = x2(652u);
arr[653] = x2(653u);
arr[654] = x2(654u);
arr[655] = x2(655u);
arr[656] = x2(656u);
arr[657] = x2(657u);
arr[658] = x2(658u);
arr[659] = x2(659u);
arr[660] = x2(660u);
arr[661] = x2(661u);
arr[662] = x2(662u);
arr[663] = x2(663u);
arr[664] = x2(664u);
arr[665] = x2(665u);
arr[666] = x2(666u);
arr[667] = x2(667u);
arr[668] = x2(668u);
arr[669] = x2(669u);
arr[670] = x2(670u);
arr[671] = x2(671u);
arr[672] = x2(672u);
arr[673] = x2(673u);
arr[674] = x2(674u);
arr[675] = x2(675u);
arr[676] = x2(676u);
arr[677] = x2(677u);
arr[678] = x2(678u);
arr[679] = x2(679u);
arr[680] = x2(680u);
arr[681] = x2(681u);
arr[682] = x2(682u);
arr[683] = x2(683u);
arr[684] = x2(684u);
arr[685] = x2(685u);
arr[686] = x2(686u);
arr[687] = x2(687u);
arr[688] = x2(688u);
arr[689] = x2(689u);
arr[690] = x2(690u);
arr[691] = x2(691u);
arr[692] = x2(692u);
arr[693] = x2(693u);
arr[694] = x2(694u);
arr[695] = x2(695u);
arr[696] = x2(696u);
arr[697] = x2(697u);
arr[698] = x2(698u);
arr[699] = x2(699u);
arr[700] = x2(700u);
arr[701] = x2(701u);
arr[702] = x2(702u);
arr[703] = x2(703u);
arr[704] = x2(704u);
arr[705] = x2(705u);
arr[706] = x2(706u);
arr[707] = x2(707u);
arr[708] = x2(708u);
arr[709] = x2(709u);
arr[710] = x2(710u);
arr[711] = x2(711u);
arr[712] = x2(712u);
arr[713] = x2(713u);
arr[714] = x2(714u);
arr[715] = x2(715u);
arr[716] = x2(716u);
arr[717] = x2(717u);
arr[718] = x2(718u);
arr[719] = x2(719u);
arr[720] = x2(720u);
arr[721] = x2(721u);
arr[722] = x2(722u);
arr[723] = x2(723u);
arr[724] = x2(724u);
arr[725] = x2(725u);
arr[726] = x2(726u);
arr[727] = x2(727u);
arr[728] = x2(728u);
arr[729] = x2(729u);
arr[730] = x2(730u);
arr[731] = x2(731u);
arr[732] = x2(732u);
arr[733] = x2(733u);
arr[734] = x2(734u);
arr[735] = x2(735u);
arr[736] = x2(736u);
arr[737] = x2(737u);
arr[738] = x2(738u);
arr[739] = x2(739u);
arr[740] = x2(740u);
arr[741] = x2(741u);
arr[742] = x2(742u);
arr[743] = x2(743u);
arr[744] = x2(744u);
arr[745] = x2(745u);
arr[746] = x2(746u);
arr[747] = x2(747u);
arr[748] = x2(748u);
arr[749] = x2(749u);
arr[750] = x2(750u);
arr[751] = x2(751u);
arr[752] = x2(752u);
arr[753] = x2(753u);
arr[754] = x2(754u);
arr[755] = x2(755u);
arr[756] = x2(756u);
arr[757] = x2(757u);
arr[758] = x2(758u);
arr[759] = x2(759u);
arr[760] = x2(760u);
arr[761] = x2(761u);
arr[762] = x2(762u);
arr[763] = x2(763u);
arr[764] = x2(764u);
arr[765] = x2(765u);
arr[766] = x2(766u);
arr[767] = x2(767u);
arr[768] = x2(768u);
arr[769] = x2(769u);
arr[770] = x2(770u);
arr[771] = x2(771u);
arr[772] = x2(772u);
arr[773] = x2(773u);
arr[774] = x2(774u);
arr[775] = x2(775u);
arr[776] = x2(776u);
arr[777] = x2(777u);
arr[778] = x2(778u);
arr[779] = x2(779u);
arr[780] = x2(780u);
arr[781] = x2(781u);
arr[782] = x2(782u);
arr[783] = x2(783u);
arr[784] = x2(784u);
arr[785] = x2(785u);
arr[786] = x2(786u);
arr[787] = x2(787u);
arr[788] = x2(788u);
arr[789] = x2(789u);
arr[790] = x2(790u);
arr[791] = x2(791u);
arr[792] = x2(792u);
arr[793] = x2(793u);
arr[794] = x2(794u);
arr[795] = x2(795u);
arr[796] = x2(796u);
arr[797] = x2(797u);
arr[798] = x2(798u);
arr[799] = x2(799u);
arr[800] = x2(800u);
arr[801] = x2(801u);
arr[802] = x2(802u);
arr[803] = x2(803u);
arr[804] = x2(804u);
arr[805] = x2(805u);
arr[806] = x2(806u);
arr[807] = x2(807u);
arr[808] = x2(808u);
arr[809] = x2(809u);
arr[810] = x2(810u);
arr[811] = x2(811u);
arr[812] = x2(812u);
arr[813] = x2(813u);
arr[814] = x2(814u);
arr[815] = x2(815u);
arr[816] = x2(816u);
arr[817] = x2(817u);
arr[818] = x2(818u);
arr[819] = x2(819u);
arr[820] = x2(820u);
arr[821] = x2(821u);
arr[822] = x2(822u);
arr[823] = x2(823u);
arr[824] = x2(824u);
arr[825] = x2(825u);
arr[826] = x2(826u);
arr[827] = x2(827u);
arr[828] = x2(828u);
arr[829] = x2(829u);
arr[830] = x2(830u);
arr[831] = x2(831u);
arr[832] = x2(832u);
arr[833] = x2(833u);
arr[834] = x2(834u);
arr[835] = x2(835u);
arr[836] = x2(836u);
arr[837] = x2(837u);
arr[838] = x2(838u);
arr[839] = x2(839u);
arr[840] = x2(840u);
arr[841] = x2(841u);
arr[842] = x2(842u);
arr[843] = x2(843u);
arr[844] = x2(844u);
arr[845] = x2(845u);
arr[846] = x2(846u);
arr[847] = x2(847u);
arr[848] = x2(848u);
arr[849] = x2(849u);
arr[850] = x2(850u);
arr[851] = x2(851u);
arr[852] = x2(852u);
arr[853] = x2(853u);
arr[854] = x2(854u);
arr[855] = x2(855u);
arr[856] = x2(856u);
arr[857] = x2(857u);
arr[858] = x2(858u);
arr[859] = x2(859u);
arr[860] = x2(860u);
arr[861] = x2(861u);
arr[862] = x2(862u);
arr[863] = x2(863u);
arr[864] = x2(864u);
arr[865] = x2(865u);
arr[866] = x2(866u);
arr[867] = x2(867u);
arr[868] = x2(868u);
arr[869] = x2(869u);
arr[870] = x2(870u);
arr[871] = x2(871u);
arr[872] = x2(872u);
arr[873] = x2(873u);
arr[874] = x2(874u);
arr[875] = x2(875u);
arr[876] = x2(876u);
arr[877] = x2(877u);
arr[878] = x2(878u);
arr[879] = x2(879u);
arr[880] = x2(880u);
arr[881] = x2(881u);
arr[882] = x2(882u);
arr[883] = x2(883u);
arr[884] = x2(884u);
arr[885] = x2(885u);
arr[886] = x2(886u);
arr[887] = x2(887u);
arr[888] = x2(888u);
arr[889] = x2(889u);
arr[890] = x2(890u);
arr[891] = x2(891u);
arr[892] = x2(892u);
arr[893] = x2(893u);
arr[894] = x2(894u);
arr[895] = x2(895u);
arr[896] = x2(896u);
arr[897] = x2(897u);
arr[898] = x2(898u);
arr[899] = x2(899u);
arr[900] = x2(900u);
arr[901] = x2(901u);
arr[902] = x2(902u);
arr[903] = x2(903u);
arr[904] = x2(904u);
arr[905] = x2(905u);
arr[906] = x2(906u);
arr[907] = x2(907u);
arr[908] = x2(908u);
arr[909] = x2(909u);
arr[910] = x2(910u);
arr[911] = x2(911u);
arr[912] = x2(912u);
arr[913] = x2(913u);
arr[914] = x2(914u);
arr[915] = x2(915u);
arr[916] = x2(916u);
arr[917] = x2(917u);
arr[918] = x2(918u);
arr[919] = x2(919u);
arr[920] = x2(920u);
arr[921] = x2(921u);
arr[922] = x2(922u);
arr[923] = x2(923u);
arr[924] = x2(924u);
arr[925] = x2(925u);
arr[926] = x2(926u);
arr[927] = x2(927u);
arr[928] = x2(928u);
arr[929] = x2(929u);
arr[930] = x2(930u);
arr[931] = x2(931u);
arr[932] = x2(932u);
arr[933] = x2(933u);
arr[934] = x2(934u);
arr[935] = x2(935u);
arr[936] = x2(936u);
arr[937] = x2(937u);
arr[938] = x2(938u);
arr[939] = x2(939u);
arr[940] = x2(940u);
arr[941] = x2(941u);
arr[942] = x2(942u);
arr[943] = x2(943u);
arr[944] = x2(944u);
arr[945] = x2(945u);
arr[946] = x2(946u);
arr[947] = x2(947u);
arr[948] = x2(948u);
arr[949] = x2(949u);
arr[950] = x2(950u);
arr[951] = x2(951u);
arr[952] = x2(952u);
arr[953] = x2(953u);
arr[954] = x2(954u);
arr[955] = x2(955u);
arr[956] = x2(956u);
arr[957] = x2(957u);
arr[958] = x2(958u);
arr[959] = x2(959u);
arr[960] = x2(960u);
arr[961] = x2(961u);
arr[962] = x2(962u);
arr[963] = x2(963u);
arr[964] = x2(964u);
arr[965] = x2(965u);
arr[966] = x2(966u);
arr[967] = x2(967u);
arr[968] = x2(968u);
arr[969] = x2(969u);
arr[970] = x2(970u);
arr[971] = x2(971u);
arr[972] = x2(972u);
arr[973] = x2(973u);
arr[974] = x2(974u);
arr[975] = x2(975u);
arr[976] = x2(976u);
arr[977] = x2(977u);
arr[978] = x2(978u);
arr[979] = x2(979u);
arr[980] = x2(980u);
arr[981] = x2(981u);
arr[982] = x2(982u);
arr[983] = x2(983u);
arr[984] = x2(984u);
arr[985] = x2(985u);
arr[986] = x2(986u);
arr[987] = x2(987u);
arr[988] = x2(988u);
arr[989] = x2(989u);
arr[990] = x2(990u);
arr[991] = x2(991u);
arr[992] = x2(992u);
arr[993] = x2(993u);
arr[994] = x2(994u);
arr[995] = x2(995u);
arr[996] = x2(996u);
arr[997] = x2(997u);
arr[998] = x2(998u);
arr[999] = x2(999u);
v_indices[0] = arr[0];
v_indices[1] = arr[1];
v_indices[2] = arr[2];
v_indices[3] = arr[3];
v_indices[4] = arr[4];
v_indices[5] = arr[5];
v_indices[6] = arr[6];
v_indices[7] = arr[7];
v_indices[8] = arr[8];
v_indices[9] = arr[9];
v_indices[10] = arr[10];
v_indices[11] = arr[11];
v_indices[12] = arr[12];
v_indices[13] = arr[13];
v_indices[14] = arr[14];
v_indices[15] = arr[15];
v_indices[16] = arr[16];
v_indices[17] = arr[17];
v_indices[18] = arr[18];
v_indices[19] = arr[19];
v_indices[20] = arr[20];
v_indices[21] = arr[21];
v_indices[22] = arr[22];
v_indices[23] = arr[23];
v_indices[24] = arr[24];
v_indices[25] = arr[25];
v_indices[26] = arr[26];
v_indices[27] = arr[27];
v_indices[28] = arr[28];
v_indices[29] = arr[29];
v_indices[30] = arr[30];
v_indices[31] = arr[31];
v_indices[32] = arr[32];
v_indices[33] = arr[33];
v_indices[34] = arr[34];
v_indices[35] = arr[35];
v_indices[36] = arr[36];
v_indices[37] = arr[37];
v_indices[38] = arr[38];
v_indices[39] = arr[39];
v_indices[40] = arr[40];
v_indices[41] = arr[41];
v_indices[42] = arr[42];
v_indices[43] = arr[43];
v_indices[44] = arr[44];
v_indices[45] = arr[45];
v_indices[46] = arr[46];
v_indices[47] = arr[47];
v_indices[48] = arr[48];
v_indices[49] = arr[49];
v_indices[50] = arr[50];
v_indices[51] = arr[51];
v_indices[52] = arr[52];
v_indices[53] = arr[53];
v_indices[54] = arr[54];
v_indices[55] = arr[55];
v_indices[56] = arr[56];
v_indices[57] = arr[57];
v_indices[58] = arr[58];
v_indices[59] = arr[59];
v_indices[60] = arr[60];
v_indices[61] = arr[61];
v_indices[62] = arr[62];
v_indices[63] = arr[63];
v_indices[64] = arr[64];
v_indices[65] = arr[65];
v_indices[66] = arr[66];
v_indices[67] = arr[67];
v_indices[68] = arr[68];
v_indices[69] = arr[69];
v_indices[70] = arr[70];
v_indices[71] = arr[71];
v_indices[72] = arr[72];
v_indices[73] = arr[73];
v_indices[74] = arr[74];
v_indices[75] = arr[75];
v_indices[76] = arr[76];
v_indices[77] = arr[77];
v_indices[78] = arr[78];
v_indices[79] = arr[79];
v_indices[80] = arr[80];
v_indices[81] = arr[81];
v_indices[82] = arr[82];
v_indices[83] = arr[83];
v_indices[84] = arr[84];
v_indices[85] = arr[85];
v_indices[86] = arr[86];
v_indices[87] = arr[87];
v_indices[88] = arr[88];
v_indices[89] = arr[89];
v_indices[90] = arr[90];
v_indices[91] = arr[91];
v_indices[92] = arr[92];
v_indices[93] = arr[93];
v_indices[94] = arr[94];
v_indices[95] = arr[95];
v_indices[96] = arr[96];
v_indices[97] = arr[97];
v_indices[98] = arr[98];
v_indices[99] = arr[99];
v_indices[100] = arr[100];
v_indices[101] = arr[101];
v_indices[102] = arr[102];
v_indices[103] = arr[103];
v_indices[104] = arr[104];
v_indices[105] = arr[105];
v_indices[106] = arr[106];
v_indices[107] = arr[107];
v_indices[108] = arr[108];
v_indices[109] = arr[109];
v_indices[110] = arr[110];
v_indices[111] = arr[111];
v_indices[112] = arr[112];
v_indices[113] = arr[113];
v_indices[114] = arr[114];
v_indices[115] = arr[115];
v_indices[116] = arr[116];
v_indices[117] = arr[117];
v_indices[118] = arr[118];
v_indices[119] = arr[119];
v_indices[120] = arr[120];
v_indices[121] = arr[121];
v_indices[122] = arr[122];
v_indices[123] = arr[123];
v_indices[124] = arr[124];
v_indices[125] = arr[125];
v_indices[126] = arr[126];
v_indices[127] = arr[127];
v_indices[128] = arr[128];
v_indices[129] = arr[129];
v_indices[130] = arr[130];
v_indices[131] = arr[131];
v_indices[132] = arr[132];
v_indices[133] = arr[133];
v_indices[134] = arr[134];
v_indices[135] = arr[135];
v_indices[136] = arr[136];
v_indices[137] = arr[137];
v_indices[138] = arr[138];
v_indices[139] = arr[139];
v_indices[140] = arr[140];
v_indices[141] = arr[141];
v_indices[142] = arr[142];
v_indices[143] = arr[143];
v_indices[144] = arr[144];
v_indices[145] = arr[145];
v_indices[146] = arr[146];
v_indices[147] = arr[147];
v_indices[148] = arr[148];
v_indices[149] = arr[149];
v_indices[150] = arr[150];
v_indices[151] = arr[151];
v_indices[152] = arr[152];
v_indices[153] = arr[153];
v_indices[154] = arr[154];
v_indices[155] = arr[155];
v_indices[156] = arr[156];
v_indices[157] = arr[157];
v_indices[158] = arr[158];
v_indices[159] = arr[159];
v_indices[160] = arr[160];
v_indices[161] = arr[161];
v_indices[162] = arr[162];
v_indices[163] = arr[163];
v_indices[164] = arr[164];
v_indices[165] = arr[165];
v_indices[166] = arr[166];
v_indices[167] = arr[167];
v_indices[168] = arr[168];
v_indices[169] = arr[169];
v_indices[170] = arr[170];
v_indices[171] = arr[171];
v_indices[172] = arr[172];
v_indices[173] = arr[173];
v_indices[174] = arr[174];
v_indices[175] = arr[175];
v_indices[176] = arr[176];
v_indices[177] = arr[177];
v_indices[178] = arr[178];
v_indices[179] = arr[179];
v_indices[180] = arr[180];
v_indices[181] = arr[181];
v_indices[182] = arr[182];
v_indices[183] = arr[183];
v_indices[184] = arr[184];
v_indices[185] = arr[185];
v_indices[186] = arr[186];
v_indices[187] = arr[187];
v_indices[188] = arr[188];
v_indices[189] = arr[189];
v_indices[190] = arr[190];
v_indices[191] = arr[191];
v_indices[192] = arr[192];
v_indices[193] = arr[193];
v_indices[194] = arr[194];
v_indices[195] = arr[195];
v_indices[196] = arr[196];
v_indices[197] = arr[197];
v_indices[198] = arr[198];
v_indices[199] = arr[199];
v_indices[200] = arr[200];
v_indices[201] = arr[201];
v_indices[202] = arr[202];
v_indices[203] = arr[203];
v_indices[204] = arr[204];
v_indices[205] = arr[205];
v_indices[206] = arr[206];
v_indices[207] = arr[207];
v_indices[208] = arr[208];
v_indices[209] = arr[209];
v_indices[210] = arr[210];
v_indices[211] = arr[211];
v_indices[212] = arr[212];
v_indices[213] = arr[213];
v_indices[214] = arr[214];
v_indices[215] = arr[215];
v_indices[216] = arr[216];
v_indices[217] = arr[217];
v_indices[218] = arr[218];
v_indices[219] = arr[219];
v_indices[220] = arr[220];
v_indices[221] = arr[221];
v_indices[222] = arr[222];
v_indices[223] = arr[223];
v_indices[224] = arr[224];
v_indices[225] = arr[225];
v_indices[226] = arr[226];
v_indices[227] = arr[227];
v_indices[228] = arr[228];
v_indices[229] = arr[229];
v_indices[230] = arr[230];
v_indices[231] = arr[231];
v_indices[232] = arr[232];
v_indices[233] = arr[233];
v_indices[234] = arr[234];
v_indices[235] = arr[235];
v_indices[236] = arr[236];
v_indices[237] = arr[237];
v_indices[238] = arr[238];
v_indices[239] = arr[239];
v_indices[240] = arr[240];
v_indices[241] = arr[241];
v_indices[242] = arr[242];
v_indices[243] = arr[243];
v_indices[244] = arr[244];
v_indices[245] = arr[245];
v_indices[246] = arr[246];
v_indices[247] = arr[247];
v_indices[248] = arr[248];
v_indices[249] = arr[249];
v_indices[250] = arr[250];
v_indices[251] = arr[251];
v_indices[252] = arr[252];
v_indices[253] = arr[253];
v_indices[254] = arr[254];
v_indices[255] = arr[255];
v_indices[256] = arr[256];
v_indices[257] = arr[257];
v_indices[258] = arr[258];
v_indices[259] = arr[259];
v_indices[260] = arr[260];
v_indices[261] = arr[261];
v_indices[262] = arr[262];
v_indices[263] = arr[263];
v_indices[264] = arr[264];
v_indices[265] = arr[265];
v_indices[266] = arr[266];
v_indices[267] = arr[267];
v_indices[268] = arr[268];
v_indices[269] = arr[269];
v_indices[270] = arr[270];
v_indices[271] = arr[271];
v_indices[272] = arr[272];
v_indices[273] = arr[273];
v_indices[274] = arr[274];
v_indices[275] = arr[275];
v_indices[276] = arr[276];
v_indices[277] = arr[277];
v_indices[278] = arr[278];
v_indices[279] = arr[279];
v_indices[280] = arr[280];
v_indices[281] = arr[281];
v_indices[282] = arr[282];
v_indices[283] = arr[283];
v_indices[284] = arr[284];
v_indices[285] = arr[285];
v_indices[286] = arr[286];
v_indices[287] = arr[287];
v_indices[288] = arr[288];
v_indices[289] = arr[289];
v_indices[290] = arr[290];
v_indices[291] = arr[291];
v_indices[292] = arr[292];
v_indices[293] = arr[293];
v_indices[294] = arr[294];
v_indices[295] = arr[295];
v_indices[296] = arr[296];
v_indices[297] = arr[297];
v_indices[298] = arr[298];
v_indices[299] = arr[299];
v_indices[300] = arr[300];
v_indices[301] = arr[301];
v_indices[302] = arr[302];
v_indices[303] = arr[303];
v_indices[304] = arr[304];
v_indices[305] = arr[305];
v_indices[306] = arr[306];
v_indices[307] = arr[307];
v_indices[308] = arr[308];
v_indices[309] = arr[309];
v_indices[310] = arr[310];
v_indices[311] = arr[311];
v_indices[312] = arr[312];
v_indices[313] = arr[313];
v_indices[314] = arr[314];
v_indices[315] = arr[315];
v_indices[316] = arr[316];
v_indices[317] = arr[317];
v_indices[318] = arr[318];
v_indices[319] = arr[319];
v_indices[320] = arr[320];
v_indices[321] = arr[321];
v_indices[322] = arr[322];
v_indices[323] = arr[323];
v_indices[324] = arr[324];
v_indices[325] = arr[325];
v_indices[326] = arr[326];
v_indices[327] = arr[327];
v_indices[328] = arr[328];
v_indices[329] = arr[329];
v_indices[330] = arr[330];
v_indices[331] = arr[331];
v_indices[332] = arr[332];
v_indices[333] = arr[333];
v_indices[334] = arr[334];
v_indices[335] = arr[335];
v_indices[336] = arr[336];
v_indices[337] = arr[337];
v_indices[338] = arr[338];
v_indices[339] = arr[339];
v_indices[340] = arr[340];
v_indices[341] = arr[341];
v_indices[342] = arr[342];
v_indices[343] = arr[343];
v_indices[344] = arr[344];
v_indices[345] = arr[345];
v_indices[346] = arr[346];
v_indices[347] = arr[347];
v_indices[348] = arr[348];
v_indices[349] = arr[349];
v_indices[350] = arr[350];
v_indices[351] = arr[351];
v_indices[352] = arr[352];
v_indices[353] = arr[353];
v_indices[354] = arr[354];
v_indices[355] = arr[355];
v_indices[356] = arr[356];
v_indices[357] = arr[357];
v_indices[358] = arr[358];
v_indices[359] = arr[359];
v_indices[360] = arr[360];
v_indices[361] = arr[361];
v_indices[362] = arr[362];
v_indices[363] = arr[363];
v_indices[364] = arr[364];
v_indices[365] = arr[365];
v_indices[366] = arr[366];
v_indices[367] = arr[367];
v_indices[368] = arr[368];
v_indices[369] = arr[369];
v_indices[370] = arr[370];
v_indices[371] = arr[371];
v_indices[372] = arr[372];
v_indices[373] = arr[373];
v_indices[374] = arr[374];
v_indices[375] = arr[375];
v_indices[376] = arr[376];
v_indices[377] = arr[377];
v_indices[378] = arr[378];
v_indices[379] = arr[379];
v_indices[380] = arr[380];
v_indices[381] = arr[381];
v_indices[382] = arr[382];
v_indices[383] = arr[383];
v_indices[384] = arr[384];
v_indices[385] = arr[385];
v_indices[386] = arr[386];
v_indices[387] = arr[387];
v_indices[388] = arr[388];
v_indices[389] = arr[389];
v_indices[390] = arr[390];
v_indices[391] = arr[391];
v_indices[392] = arr[392];
v_indices[393] = arr[393];
v_indices[394] = arr[394];
v_indices[395] = arr[395];
v_indices[396] = arr[396];
v_indices[397] = arr[397];
v_indices[398] = arr[398];
v_indices[399] = arr[399];
v_indices[400] = arr[400];
v_indices[401] = arr[401];
v_indices[402] = arr[402];
v_indices[403] = arr[403];
v_indices[404] = arr[404];
v_indices[405] = arr[405];
v_indices[406] = arr[406];
v_indices[407] = arr[407];
v_indices[408] = arr[408];
v_indices[409] = arr[409];
v_indices[410] = arr[410];
v_indices[411] = arr[411];
v_indices[412] = arr[412];
v_indices[413] = arr[413];
v_indices[414] = arr[414];
v_indices[415] = arr[415];
v_indices[416] = arr[416];
v_indices[417] = arr[417];
v_indices[418] = arr[418];
v_indices[419] = arr[419];
v_indices[420] = arr[420];
v_indices[421] = arr[421];
v_indices[422] = arr[422];
v_indices[423] = arr[423];
v_indices[424] = arr[424];
v_indices[425] = arr[425];
v_indices[426] = arr[426];
v_indices[427] = arr[427];
v_indices[428] = arr[428];
v_indices[429] = arr[429];
v_indices[430] = arr[430];
v_indices[431] = arr[431];
v_indices[432] = arr[432];
v_indices[433] = arr[433];
v_indices[434] = arr[434];
v_indices[435] = arr[435];
v_indices[436] = arr[436];
v_indices[437] = arr[437];
v_indices[438] = arr[438];
v_indices[439] = arr[439];
v_indices[440] = arr[440];
v_indices[441] = arr[441];
v_indices[442] = arr[442];
v_indices[443] = arr[443];
v_indices[444] = arr[444];
v_indices[445] = arr[445];
v_indices[446] = arr[446];
v_indices[447] = arr[447];
v_indices[448] = arr[448];
v_indices[449] = arr[449];
v_indices[450] = arr[450];
v_indices[451] = arr[451];
v_indices[452] = arr[452];
v_indices[453] = arr[453];
v_indices[454] = arr[454];
v_indices[455] = arr[455];
v_indices[456] = arr[456];
v_indices[457] = arr[457];
v_indices[458] = arr[458];
v_indices[459] = arr[459];
v_indices[460] = arr[460];
v_indices[461] = arr[461];
v_indices[462] = arr[462];
v_indices[463] = arr[463];
v_indices[464] = arr[464];
v_indices[465] = arr[465];
v_indices[466] = arr[466];
v_indices[467] = arr[467];
v_indices[468] = arr[468];
v_indices[469] = arr[469];
v_indices[470] = arr[470];
v_indices[471] = arr[471];
v_indices[472] = arr[472];
v_indices[473] = arr[473];
v_indices[474] = arr[474];
v_indices[475] = arr[475];
v_indices[476] = arr[476];
v_indices[477] = arr[477];
v_indices[478] = arr[478];
v_indices[479] = arr[479];
v_indices[480] = arr[480];
v_indices[481] = arr[481];
v_indices[482] = arr[482];
v_indices[483] = arr[483];
v_indices[484] = arr[484];
v_indices[485] = arr[485];
v_indices[486] = arr[486];
v_indices[487] = arr[487];
v_indices[488] = arr[488];
v_indices[489] = arr[489];
v_indices[490] = arr[490];
v_indices[491] = arr[491];
v_indices[492] = arr[492];
v_indices[493] = arr[493];
v_indices[494] = arr[494];
v_indices[495] = arr[495];
v_indices[496] = arr[496];
v_indices[497] = arr[497];
v_indices[498] = arr[498];
v_indices[499] = arr[499];
v_indices[500] = arr[500];
v_indices[501] = arr[501];
v_indices[502] = arr[502];
v_indices[503] = arr[503];
v_indices[504] = arr[504];
v_indices[505] = arr[505];
v_indices[506] = arr[506];
v_indices[507] = arr[507];
v_indices[508] = arr[508];
v_indices[509] = arr[509];
v_indices[510] = arr[510];
v_indices[511] = arr[511];
v_indices[512] = arr[512];
v_indices[513] = arr[513];
v_indices[514] = arr[514];
v_indices[515] = arr[515];
v_indices[516] = arr[516];
v_indices[517] = arr[517];
v_indices[518] = arr[518];
v_indices[519] = arr[519];
v_indices[520] = arr[520];
v_indices[521] = arr[521];
v_indices[522] = arr[522];
v_indices[523] = arr[523];
v_indices[524] = arr[524];
v_indices[525] = arr[525];
v_indices[526] = arr[526];
v_indices[527] = arr[527];
v_indices[528] = arr[528];
v_indices[529] = arr[529];
v_indices[530] = arr[530];
v_indices[531] = arr[531];
v_indices[532] = arr[532];
v_indices[533] = arr[533];
v_indices[534] = arr[534];
v_indices[535] = arr[535];
v_indices[536] = arr[536];
v_indices[537] = arr[537];
v_indices[538] = arr[538];
v_indices[539] = arr[539];
v_indices[540] = arr[540];
v_indices[541] = arr[541];
v_indices[542] = arr[542];
v_indices[543] = arr[543];
v_indices[544] = arr[544];
v_indices[545] = arr[545];
v_indices[546] = arr[546];
v_indices[547] = arr[547];
v_indices[548] = arr[548];
v_indices[549] = arr[549];
v_indices[550] = arr[550];
v_indices[551] = arr[551];
v_indices[552] = arr[552];
v_indices[553] = arr[553];
v_indices[554] = arr[554];
v_indices[555] = arr[555];
v_indices[556] = arr[556];
v_indices[557] = arr[557];
v_indices[558] = arr[558];
v_indices[559] = arr[559];
v_indices[560] = arr[560];
v_indices[561] = arr[561];
v_indices[562] = arr[562];
v_indices[563] = arr[563];
v_indices[564] = arr[564];
v_indices[565] = arr[565];
v_indices[566] = arr[566];
v_indices[567] = arr[567];
v_indices[568] = arr[568];
v_indices[569] = arr[569];
v_indices[570] = arr[570];
v_indices[571] = arr[571];
v_indices[572] = arr[572];
v_indices[573] = arr[573];
v_indices[574] = arr[574];
v_indices[575] = arr[575];
v_indices[576] = arr[576];
v_indices[577] = arr[577];
v_indices[578] = arr[578];
v_indices[579] = arr[579];
v_indices[580] = arr[580];
v_indices[581] = arr[581];
v_indices[582] = arr[582];
v_indices[583] = arr[583];
v_indices[584] = arr[584];
v_indices[585] = arr[585];
v_indices[586] = arr[586];
v_indices[587] = arr[587];
v_indices[588] = arr[588];
v_indices[589] = arr[589];
v_indices[590] = arr[590];
v_indices[591] = arr[591];
v_indices[592] = arr[592];
v_indices[593] = arr[593];
v_indices[594] = arr[594];
v_indices[595] = arr[595];
v_indices[596] = arr[596];
v_indices[597] = arr[597];
v_indices[598] = arr[598];
v_indices[599] = arr[599];
v_indices[600] = arr[600];
v_indices[601] = arr[601];
v_indices[602] = arr[602];
v_indices[603] = arr[603];
v_indices[604] = arr[604];
v_indices[605] = arr[605];
v_indices[606] = arr[606];
v_indices[607] = arr[607];
v_indices[608] = arr[608];
v_indices[609] = arr[609];
v_indices[610] = arr[610];
v_indices[611] = arr[611];
v_indices[612] = arr[612];
v_indices[613] = arr[613];
v_indices[614] = arr[614];
v_indices[615] = arr[615];
v_indices[616] = arr[616];
v_indices[617] = arr[617];
v_indices[618] = arr[618];
v_indices[619] = arr[619];
v_indices[620] = arr[620];
v_indices[621] = arr[621];
v_indices[622] = arr[622];
v_indices[623] = arr[623];
v_indices[624] = arr[624];
v_indices[625] = arr[625];
v_indices[626] = arr[626];
v_indices[627] = arr[627];
v_indices[628] = arr[628];
v_indices[629] = arr[629];
v_indices[630] = arr[630];
v_indices[631] = arr[631];
v_indices[632] = arr[632];
v_indices[633] = arr[633];
v_indices[634] = arr[634];
v_indices[635] = arr[635];
v_indices[636] = arr[636];
v_indices[637] = arr[637];
v_indices[638] = arr[638];
v_indices[639] = arr[639];
v_indices[640] = arr[640];
v_indices[641] = arr[641];
v_indices[642] = arr[642];
v_indices[643] = arr[643];
v_indices[644] = arr[644];
v_indices[645] = arr[645];
v_indices[646] = arr[646];
v_indices[647] = arr[647];
v_indices[648] = arr[648];
v_indices[649] = arr[649];
v_indices[650] = arr[650];
v_indices[651] = arr[651];
v_indices[652] = arr[652];
v_indices[653] = arr[653];
v_indices[654] = arr[654];
v_indices[655] = arr[655];
v_indices[656] = arr[656];
v_indices[657] = arr[657];
v_indices[658] = arr[658];
v_indices[659] = arr[659];
v_indices[660] = arr[660];
v_indices[661] = arr[661];
v_indices[662] = arr[662];
v_indices[663] = arr[663];
v_indices[664] = arr[664];
v_indices[665] = arr[665];
v_indices[666] = arr[666];
v_indices[667] = arr[667];
v_indices[668] = arr[668];
v_indices[669] = arr[669];
v_indices[670] = arr[670];
v_indices[671] = arr[671];
v_indices[672] = arr[672];
v_indices[673] = arr[673];
v_indices[674] = arr[674];
v_indices[675] = arr[675];
v_indices[676] = arr[676];
v_indices[677] = arr[677];
v_indices[678] = arr[678];
v_indices[679] = arr[679];
v_indices[680] = arr[680];
v_indices[681] = arr[681];
v_indices[682] = arr[682];
v_indices[683] = arr[683];
v_indices[684] = arr[684];
v_indices[685] = arr[685];
v_indices[686] = arr[686];
v_indices[687] = arr[687];
v_indices[688] = arr[688];
v_indices[689] = arr[689];
v_indices[690] = arr[690];
v_indices[691] = arr[691];
v_indices[692] = arr[692];
v_indices[693] = arr[693];
v_indices[694] = arr[694];
v_indices[695] = arr[695];
v_indices[696] = arr[696];
v_indices[697] = arr[697];
v_indices[698] = arr[698];
v_indices[699] = arr[699];
v_indices[700] = arr[700];
v_indices[701] = arr[701];
v_indices[702] = arr[702];
v_indices[703] = arr[703];
v_indices[704] = arr[704];
v_indices[705] = arr[705];
v_indices[706] = arr[706];
v_indices[707] = arr[707];
v_indices[708] = arr[708];
v_indices[709] = arr[709];
v_indices[710] = arr[710];
v_indices[711] = arr[711];
v_indices[712] = arr[712];
v_indices[713] = arr[713];
v_indices[714] = arr[714];
v_indices[715] = arr[715];
v_indices[716] = arr[716];
v_indices[717] = arr[717];
v_indices[718] = arr[718];
v_indices[719] = arr[719];
v_indices[720] = arr[720];
v_indices[721] = arr[721];
v_indices[722] = arr[722];
v_indices[723] = arr[723];
v_indices[724] = arr[724];
v_indices[725] = arr[725];
v_indices[726] = arr[726];
v_indices[727] = arr[727];
v_indices[728] = arr[728];
v_indices[729] = arr[729];
v_indices[730] = arr[730];
v_indices[731] = arr[731];
v_indices[732] = arr[732];
v_indices[733] = arr[733];
v_indices[734] = arr[734];
v_indices[735] = arr[735];
v_indices[736] = arr[736];
v_indices[737] = arr[737];
v_indices[738] = arr[738];
v_indices[739] = arr[739];
v_indices[740] = arr[740];
v_indices[741] = arr[741];
v_indices[742] = arr[742];
v_indices[743] = arr[743];
v_indices[744] = arr[744];
v_indices[745] = arr[745];
v_indices[746] = arr[746];
v_indices[747] = arr[747];
v_indices[748] = arr[748];
v_indices[749] = arr[749];
v_indices[750] = arr[750];
v_indices[751] = arr[751];
v_indices[752] = arr[752];
v_indices[753] = arr[753];
v_indices[754] = arr[754];
v_indices[755] = arr[755];
v_indices[756] = arr[756];
v_indices[757] = arr[757];
v_indices[758] = arr[758];
v_indices[759] = arr[759];
v_indices[760] = arr[760];
v_indices[761] = arr[761];
v_indices[762] = arr[762];
v_indices[763] = arr[763];
v_indices[764] = arr[764];
v_indices[765] = arr[765];
v_indices[766] = arr[766];
v_indices[767] = arr[767];
v_indices[768] = arr[768];
v_indices[769] = arr[769];
v_indices[770] = arr[770];
v_indices[771] = arr[771];
v_indices[772] = arr[772];
v_indices[773] = arr[773];
v_indices[774] = arr[774];
v_indices[775] = arr[775];
v_indices[776] = arr[776];
v_indices[777] = arr[777];
v_indices[778] = arr[778];
v_indices[779] = arr[779];
v_indices[780] = arr[780];
v_indices[781] = arr[781];
v_indices[782] = arr[782];
v_indices[783] = arr[783];
v_indices[784] = arr[784];
v_indices[785] = arr[785];
v_indices[786] = arr[786];
v_indices[787] = arr[787];
v_indices[788] = arr[788];
v_indices[789] = arr[789];
v_indices[790] = arr[790];
v_indices[791] = arr[791];
v_indices[792] = arr[792];
v_indices[793] = arr[793];
v_indices[794] = arr[794];
v_indices[795] = arr[795];
v_indices[796] = arr[796];
v_indices[797] = arr[797];
v_indices[798] = arr[798];
v_indices[799] = arr[799];
v_indices[800] = arr[800];
v_indices[801] = arr[801];
v_indices[802] = arr[802];
v_indices[803] = arr[803];
v_indices[804] = arr[804];
v_indices[805] = arr[805];
v_indices[806] = arr[806];
v_indices[807] = arr[807];
v_indices[808] = arr[808];
v_indices[809] = arr[809];
v_indices[810] = arr[810];
v_indices[811] = arr[811];
v_indices[812] = arr[812];
v_indices[813] = arr[813];
v_indices[814] = arr[814];
v_indices[815] = arr[815];
v_indices[816] = arr[816];
v_indices[817] = arr[817];
v_indices[818] = arr[818];
v_indices[819] = arr[819];
v_indices[820] = arr[820];
v_indices[821] = arr[821];
v_indices[822] = arr[822];
v_indices[823] = arr[823];
v_indices[824] = arr[824];
v_indices[825] = arr[825];
v_indices[826] = arr[826];
v_indices[827] = arr[827];
v_indices[828] = arr[828];
v_indices[829] = arr[829];
v_indices[830] = arr[830];
v_indices[831] = arr[831];
v_indices[832] = arr[832];
v_indices[833] = arr[833];
v_indices[834] = arr[834];
v_indices[835] = arr[835];
v_indices[836] = arr[836];
v_indices[837] = arr[837];
v_indices[838] = arr[838];
v_indices[839] = arr[839];
v_indices[840] = arr[840];
v_indices[841] = arr[841];
v_indices[842] = arr[842];
v_indices[843] = arr[843];
v_indices[844] = arr[844];
v_indices[845] = arr[845];
v_indices[846] = arr[846];
v_indices[847] = arr[847];
v_indices[848] = arr[848];
v_indices[849] = arr[849];
v_indices[850] = arr[850];
v_indices[851] = arr[851];
v_indices[852] = arr[852];
v_indices[853] = arr[853];
v_indices[854] = arr[854];
v_indices[855] = arr[855];
v_indices[856] = arr[856];
v_indices[857] = arr[857];
v_indices[858] = arr[858];
v_indices[859] = arr[859];
v_indices[860] = arr[860];
v_indices[861] = arr[861];
v_indices[862] = arr[862];
v_indices[863] = arr[863];
v_indices[864] = arr[864];
v_indices[865] = arr[865];
v_indices[866] = arr[866];
v_indices[867] = arr[867];
v_indices[868] = arr[868];
v_indices[869] = arr[869];
v_indices[870] = arr[870];
v_indices[871] = arr[871];
v_indices[872] = arr[872];
v_indices[873] = arr[873];
v_indices[874] = arr[874];
v_indices[875] = arr[875];
v_indices[876] = arr[876];
v_indices[877] = arr[877];
v_indices[878] = arr[878];
v_indices[879] = arr[879];
v_indices[880] = arr[880];
v_indices[881] = arr[881];
v_indices[882] = arr[882];
v_indices[883] = arr[883];
v_indices[884] = arr[884];
v_indices[885] = arr[885];
v_indices[886] = arr[886];
v_indices[887] = arr[887];
v_indices[888] = arr[888];
v_indices[889] = arr[889];
v_indices[890] = arr[890];
v_indices[891] = arr[891];
v_indices[892] = arr[892];
v_indices[893] = arr[893];
v_indices[894] = arr[894];
v_indices[895] = arr[895];
v_indices[896] = arr[896];
v_indices[897] = arr[897];
v_indices[898] = arr[898];
v_indices[899] = arr[899];
v_indices[900] = arr[900];
v_indices[901] = arr[901];
v_indices[902] = arr[902];
v_indices[903] = arr[903];
v_indices[904] = arr[904];
v_indices[905] = arr[905];
v_indices[906] = arr[906];
v_indices[907] = arr[907];
v_indices[908] = arr[908];
v_indices[909] = arr[909];
v_indices[910] = arr[910];
v_indices[911] = arr[911];
v_indices[912] = arr[912];
v_indices[913] = arr[913];
v_indices[914] = arr[914];
v_indices[915] = arr[915];
v_indices[916] = arr[916];
v_indices[917] = arr[917];
v_indices[918] = arr[918];
v_indices[919] = arr[919];
v_indices[920] = arr[920];
v_indices[921] = arr[921];
v_indices[922] = arr[922];
v_indices[923] = arr[923];
v_indices[924] = arr[924];
v_indices[925] = arr[925];
v_indices[926] = arr[926];
v_indices[927] = arr[927];
v_indices[928] = arr[928];
v_indices[929] = arr[929];
v_indices[930] = arr[930];
v_indices[931] = arr[931];
v_indices[932] = arr[932];
v_indices[933] = arr[933];
v_indices[934] = arr[934];
v_indices[935] = arr[935];
v_indices[936] = arr[936];
v_indices[937] = arr[937];
v_indices[938] = arr[938];
v_indices[939] = arr[939];
v_indices[940] = arr[940];
v_indices[941] = arr[941];
v_indices[942] = arr[942];
v_indices[943] = arr[943];
v_indices[944] = arr[944];
v_indices[945] = arr[945];
v_indices[946] = arr[946];
v_indices[947] = arr[947];
v_indices[948] = arr[948];
v_indices[949] = arr[949];
v_indices[950] = arr[950];
v_indices[951] = arr[951];
v_indices[952] = arr[952];
v_indices[953] = arr[953];
v_indices[954] = arr[954];
v_indices[955] = arr[955];
v_indices[956] = arr[956];
v_indices[957] = arr[957];
v_indices[958] = arr[958];
v_indices[959] = arr[959];
v_indices[960] = arr[960];
v_indices[961] = arr[961];
v_indices[962] = arr[962];
v_indices[963] = arr[963];
v_indices[964] = arr[964];
v_indices[965] = arr[965];
v_indices[966] = arr[966];
v_indices[967] = arr[967];
v_indices[968] = arr[968];
v_indices[969] = arr[969];
v_indices[970] = arr[970];
v_indices[971] = arr[971];
v_indices[972] = arr[972];
v_indices[973] = arr[973];
v_indices[974] = arr[974];
v_indices[975] = arr[975];
v_indices[976] = arr[976];
v_indices[977] = arr[977];
v_indices[978] = arr[978];
v_indices[979] = arr[979];
v_indices[980] = arr[980];
v_indices[981] = arr[981];
v_indices[982] = arr[982];
v_indices[983] = arr[983];
v_indices[984] = arr[984];
v_indices[985] = arr[985];
v_indices[986] = arr[986];
v_indices[987] = arr[987];
v_indices[988] = arr[988];
v_indices[989] = arr[989];
v_indices[990] = arr[990];
v_indices[991] = arr[991];
v_indices[992] = arr[992];
v_indices[993] = arr[993];
v_indices[994] = arr[994];
v_indices[995] = arr[995];
v_indices[996] = arr[996];
v_indices[997] = arr[997];
v_indices[998] = arr[998];
v_indices[999] = arr[999];
}
あれ
goから越境してrustやるの嫌じゃな~~~。
そもそも、wgpuのレポジトリ見てても動かし方がよくわからん。
なんとなくIssueをcompute shader
で検索して眺めてみる。すでにIssueが出てれば幸甚。
なかったわ。一般的には巨大シェーダーを動かす動機がないらしい。
wgpuのレポジトリにExampleを発見したので動かしてみる。
wgpuでboidsが動いた。やったねたえちゃん!
巨大シェーダー実証の元としてhello-computeが良さそう。コードが簡単。見覚えもある。
サクッとシェーダーを書き換えてみたら動いた。いいぞ。
条件分岐が1万行の巨大シェーダーを試してみた結果、wgpuにおいてはそんなに時間がかからない。500msとかそんなもん。じゃあRustでwgpu使って遺伝的プログラミングすればええやんという判断が浮かび上がってくるが、Rust難しすぎてあれなのであれ。覚悟を決めるのに1週間ぐらいかかるやつ。
とはいえ現状は wgpu → wgpu-native → go-webgpu という依存をしており、wgpuを直接ぶったたくよりも隔靴搔痒となる。依存しているコードがどこでどう変わるかもわからない。wgpuはブラウザでも使われているらしいので、多分大丈夫だろう。
本丸の遺伝的プログラミングのコードは2000行程度なので、1週間もあれば行ける気がする。Rustを理解できれば。
その前にgo-webgpuをアップデートすべく、go get -u
を叩く。よし、最新版でも直ってない。wgpuに乗り換えだ。
遺伝的プログラミングのコード全部を書き換えるのは骨が折れる。泣く。なので、wgpuを叩く部分だけRustで書けばええんちゃうんかという判断が生えてくる。『wgpu-go』や。
念のためにgoでもrustで動かしたのとまったく同じシェーダーを実行してみる。いや、普通に動く。先生……!これは……!条件分岐の数がCreateComputePipelineの処理時間に影響していると思われていたが、実はそうではなかった可能性が高い。Rustのwgpuで行った検証も不十分だった可能性が高い。
配列アクセスが悪いのではないかと思い至り、配列利用型巨大WGSLシェーダーを動かしてみたが普通に動く。機序がわからん。キショい。
関数実行が悪いのではないかと思い至り、配列及関数利用型巨大WGSLシェーダーを動かしてみたが普通に動く。静的だと最適化してないかこいつ。
関数がインライン展開されている気がしてきた。多分。わからんけど。そう考えると、関数の再起呼び出しができないのも、配列の添え字に変数が使えないのもしっくりくる。
「気晴らしにcompute.toysとか言うので遊んでみるかぁ」つって、何気なく配列の添え字に変数を入れてみたところ、なんと動いた。はぁ?じゃあっつって、最新版のgo-webgpuだとどうなんのよって試したら配列の添え字に変数を入れても動く。CreatePipelineも300ms以内に終わる。はぁ???今までの苦労は何だったんだ。3日返してほしい。
なお、最新版が出てきたのは5 days agoである。タイムリー。