diff --git a/examples/kernels b/examples/kernels index e72996fd08a40e994249df2a2595b170cb44bfe3..1f341d04899cd66f60e1f147a1d07f710d355644 100644 --- a/examples/kernels +++ b/examples/kernels @@ -1,846 +1,846 @@ digraph AST { node [color=lightblue2 style=filled] size="6,6" - n140496472691768 [label=Block] - n140496472273248 [label=KernelBlock] - n140496472691768 -> n140496472273248 - n140496472402632 [label=KernelBlock] - n140496472691768 -> n140496472402632 - n140496472273248 [label=KernelBlock] - n140496472273024 [label=Block] - n140496472273248 -> n140496472273024 - n140496472273024 [label=Block] - n140496472694064 [label=ParticleFor] - n140496472273024 -> n140496472694064 - n140496472694064 [label=ParticleFor] - n140496472273080 [label="Iter(0)"] - n140496472694064 -> n140496472273080 - n140496472273192 [label=Block] - n140496472694064 -> n140496472273192 - n140496473762056 [label=0] - n140496472694064 -> n140496473762056 - n140496472273136 [label=0] - n140496472694064 -> n140496472273136 - n140496472273080 [label="Iter(0)"] - n140496472273192 [label=Block] - n140496472273360 [label=For] - n140496472273192 -> n140496472273360 - n140496472273640 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472273640 -> n140496472273080 - n140496472737104 [label=neighborlist_capacity] - n140496472273640 -> n140496472737104 - n140496472737104 [label=neighborlist_capacity] - n140496472273864 [label=PropertyAccess] - n140496472693336 [label=position] - n140496472273864 -> n140496472693336 - n140496472273080 [label="Iter(0)"] - n140496472273864 -> n140496472273080 - n140496472434000 [label="*"] - n140496472273864 -> n140496472434000 - n140496472435736 [label="+"] - n140496472273864 -> n140496472435736 - n140496472470136 [label="+"] - n140496472273864 -> n140496472470136 - n140496472693336 [label=position] - n140496472434000 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472434000 -> n140496472273080 - n140496472434056 [label=3] - n140496472434000 -> n140496472434056 - n140496472434056 [label=3] - n140496472435736 [label="+"] - n140496472435568 [label="*"] - n140496472435736 -> n140496472435568 - n140496472435792 [label=1] - n140496472435736 -> n140496472435792 - n140496472435568 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472435568 -> n140496472273080 - n140496472435624 [label=3] - n140496472435568 -> n140496472435624 - n140496472435624 [label=3] - n140496472435792 [label=1] - n140496472470136 [label="+"] - n140496472469968 [label="*"] - n140496472470136 -> n140496472469968 - n140496472470192 [label=2] - n140496472470136 -> n140496472470192 - n140496472469968 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472469968 -> n140496472273080 - n140496472470024 [label=3] - n140496472469968 -> n140496472470024 - n140496472470024 [label=3] - n140496472470192 [label=2] - n140496472274256 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472274256 -> n140496472273080 - n140496472274312 [label=3] - n140496472274256 -> n140496472274312 - n140496472274312 [label=3] - n140496472274984 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472274984 -> n140496472273080 - n140496472275040 [label=3] - n140496472274984 -> n140496472275040 - n140496472275040 [label=3] - n140496472275880 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472275880 -> n140496472273080 - n140496472275936 [label=3] - n140496472275880 -> n140496472275936 - n140496472275936 [label=3] - n140496472276048 [label="+"] - n140496472275880 [label="*"] - n140496472276048 -> n140496472275880 - n140496472276104 [label=1] - n140496472276048 -> n140496472276104 - n140496472276104 [label=1] - n140496472276664 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472276664 -> n140496472273080 - n140496472276720 [label=3] - n140496472276664 -> n140496472276720 - n140496472276720 [label=3] - n140496472276832 [label="+"] - n140496472276664 [label="*"] - n140496472276832 -> n140496472276664 - n140496472276888 [label=1] - n140496472276832 -> n140496472276888 - n140496472276888 [label=1] - n140496472400616 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472400616 -> n140496472273080 - n140496472400672 [label=3] - n140496472400616 -> n140496472400672 - n140496472400672 [label=3] - n140496472400784 [label="+"] - n140496472400616 [label="*"] - n140496472400784 -> n140496472400616 - n140496472400840 [label=2] - n140496472400784 -> n140496472400840 - n140496472400840 [label=2] - n140496472401400 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472401400 -> n140496472273080 - n140496472401456 [label=3] - n140496472401400 -> n140496472401456 - n140496472401456 [label=3] - n140496472401568 [label="+"] - n140496472401400 [label="*"] - n140496472401568 -> n140496472401400 - n140496472401624 [label=2] - n140496472401568 -> n140496472401624 - n140496472401624 [label=2] - n140496472433328 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472433328 -> n140496472273080 - n140496472433384 [label=3] - n140496472433328 -> n140496472433384 - n140496472433384 [label=3] - n140496472433720 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472433720 -> n140496472273080 - n140496472433776 [label=3] - n140496472433720 -> n140496472433776 - n140496472433776 [label=3] - n140496472434896 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472434896 -> n140496472273080 - n140496472434952 [label=3] - n140496472434896 -> n140496472434952 - n140496472434952 [label=3] - n140496472435064 [label="+"] - n140496472434896 [label="*"] - n140496472435064 -> n140496472434896 - n140496472435120 [label=1] - n140496472435064 -> n140496472435120 - n140496472435120 [label=1] - n140496472435288 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472435288 -> n140496472273080 - n140496472435344 [label=3] - n140496472435288 -> n140496472435344 - n140496472435344 [label=3] - n140496472435456 [label="+"] - n140496472435288 [label="*"] - n140496472435456 -> n140496472435288 - n140496472435512 [label=1] - n140496472435456 -> n140496472435512 - n140496472435512 [label=1] - n140496472436464 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472436464 -> n140496472273080 - n140496472436520 [label=3] - n140496472436464 -> n140496472436520 - n140496472436520 [label=3] - n140496472436632 [label="+"] - n140496472436464 [label="*"] - n140496472436632 -> n140496472436464 - n140496472436688 [label=2] - n140496472436632 -> n140496472436688 - n140496472436688 [label=2] - n140496472469688 [label="*"] - n140496472273080 [label="Iter(0)"] - n140496472469688 -> n140496472273080 - n140496472469744 [label=3] - n140496472469688 -> n140496472469744 - n140496472469744 [label=3] - n140496472469856 [label="+"] - n140496472469688 [label="*"] - n140496472469856 -> n140496472469688 - n140496472469912 [label=2] - n140496472469856 -> n140496472469912 - n140496472469912 [label=2] - n140496472273360 [label=For] - n140496472273416 [label="Iter(1)"] - n140496472273360 -> n140496472273416 - n140496472273528 [label=Block] - n140496472273360 -> n140496472273528 - n140496472273472 [label=0] - n140496472273360 -> n140496472273472 - n140496472273304 [label=ArrayAccess] - n140496472273360 -> n140496472273304 - n140496472273416 [label="Iter(1)"] - n140496472273528 [label=Block] - n140496472402520 [label=Filter] - n140496472273528 -> n140496472402520 - n140496472273752 [label="+"] - n140496472273640 [label="*"] - n140496472273752 -> n140496472273640 - n140496472273416 [label="Iter(1)"] - n140496472273752 -> n140496472273416 - n140496472273976 [label=PropertyAccess] - n140496472693336 [label=position] - n140496472273976 -> n140496472693336 - n140496472273584 [label=ArrayAccess] - n140496472273976 -> n140496472273584 - n140496472434336 [label="*"] - n140496472273976 -> n140496472434336 - n140496472436072 [label="+"] - n140496472273976 -> n140496472436072 - n140496472470472 [label="+"] - n140496472273976 -> n140496472470472 - n140496472273584 [label=ArrayAccess] - n140496472737160 [label=neighborlists] - n140496472273584 -> n140496472737160 - n140496472273752 [label="+"] - n140496472273584 -> n140496472273752 - n140496472737160 [label=neighborlists] - n140496472434336 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472434336 -> n140496472273584 - n140496472434392 [label=3] - n140496472434336 -> n140496472434392 - n140496472434392 [label=3] - n140496472436072 [label="+"] - n140496472435904 [label="*"] - n140496472436072 -> n140496472435904 - n140496472436128 [label=1] - n140496472436072 -> n140496472436128 - n140496472435904 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472435904 -> n140496472273584 - n140496472435960 [label=3] - n140496472435904 -> n140496472435960 - n140496472435960 [label=3] - n140496472436128 [label=1] - n140496472470472 [label="+"] - n140496472470304 [label="*"] - n140496472470472 -> n140496472470304 - n140496472470528 [label=2] - n140496472470472 -> n140496472470528 - n140496472470304 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472470304 -> n140496472273584 - n140496472470360 [label=3] - n140496472470304 -> n140496472470360 - n140496472470360 [label=3] - n140496472470528 [label=2] - n140496472274088 [label="-"] - n140496472273864 [label=PropertyAccess] - n140496472274088 -> n140496472273864 - n140496472273976 [label=PropertyAccess] - n140496472274088 -> n140496472273976 - n140496473762448 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496473762448 -> n140496472273584 - n140496472274592 [label=3] - n140496473762448 -> n140496472274592 - n140496472274592 [label=3] - n140496472275320 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472275320 -> n140496472273584 - n140496472275376 [label=3] - n140496472275320 -> n140496472275376 - n140496472275376 [label=3] - n140496472275712 [label="*"] - n140496472274872 [label=VectorAccess] - n140496472275712 -> n140496472274872 - n140496472275656 [label=VectorAccess] - n140496472275712 -> n140496472275656 - n140496472274872 [label=VectorAccess] - n140496472274088 [label="-"] - n140496472274872 -> n140496472274088 - n140496472275656 [label=VectorAccess] - n140496472274088 [label="-"] - n140496472275656 -> n140496472274088 - n140496472276216 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472276216 -> n140496472273584 - n140496472276272 [label=3] - n140496472276216 -> n140496472276272 - n140496472276272 [label=3] - n140496472276384 [label="+"] - n140496472276216 [label="*"] - n140496472276384 -> n140496472276216 - n140496472276440 [label=1] - n140496472276384 -> n140496472276440 - n140496472276440 [label=1] - n140496472399944 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472399944 -> n140496472273584 - n140496472400000 [label=3] - n140496472399944 -> n140496472400000 - n140496472400000 [label=3] - n140496472400112 [label="+"] - n140496472399944 [label="*"] - n140496472400112 -> n140496472399944 - n140496472400168 [label=1] - n140496472400112 -> n140496472400168 - n140496472400168 [label=1] - n140496472400336 [label="*"] - n140496472276552 [label=VectorAccess] - n140496472400336 -> n140496472276552 - n140496472400280 [label=VectorAccess] - n140496472400336 -> n140496472400280 - n140496472276552 [label=VectorAccess] - n140496472274088 [label="-"] - n140496472276552 -> n140496472274088 - n140496472400280 [label=VectorAccess] - n140496472274088 [label="-"] - n140496472400280 -> n140496472274088 - n140496472400448 [label="+"] - n140496472275712 [label="*"] - n140496472400448 -> n140496472275712 - n140496472400336 [label="*"] - n140496472400448 -> n140496472400336 - n140496472400952 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472400952 -> n140496472273584 - n140496472401008 [label=3] - n140496472400952 -> n140496472401008 - n140496472401008 [label=3] - n140496472401120 [label="+"] - n140496472400952 [label="*"] - n140496472401120 -> n140496472400952 - n140496472401176 [label=2] - n140496472401120 -> n140496472401176 - n140496472401176 [label=2] - n140496472401736 [label="*"] - n140496472273584 [label=ArrayAccess] - n140496472401736 -> n140496472273584 - n140496472401792 [label=3] - n140496472401736 -> n140496472401792 - n140496472401792 [label=3] - n140496472401904 [label="+"] - n140496472401736 [label="*"] - n140496472401904 -> n140496472401736 - n140496472401960 [label=2] - n140496472401904 -> n140496472401960 - n140496472401960 [label=2] - n140496472402128 [label="*"] - n140496472401288 [label=VectorAccess] - n140496472402128 -> n140496472401288 - n140496472402072 [label=VectorAccess] - n140496472402128 -> n140496472402072 - n140496472401288 [label=VectorAccess] - n140496472274088 [label="-"] - n140496472401288 -> n140496472274088 - n140496472402072 [label=VectorAccess] - n140496472274088 [label="-"] - n140496472402072 -> n140496472274088 - n140496472402240 [label="+"] - n140496472400448 [label="+"] - n140496472402240 -> n140496472400448 - n140496472402128 [label="*"] - n140496472402240 -> n140496472402128 - n140496472402352 [label="<"] - n140496472402240 [label="+"] - n140496472402352 -> n140496472402240 - n140496472402408 [label=2.5] - n140496472402352 -> n140496472402408 - n140496472402408 [label=2.5] - n140496472402520 [label=Filter] - n140496472402352 [label="<"] - n140496472402520 -> n140496472402352 - n140496472402576 [label=Block] - n140496472402520 -> n140496472402576 - n140496472402576 [label=Block] - n140496472433216 [label=Assign] - n140496472402576 -> n140496472433216 - n140496472402912 [label="/"] - n140496472402968 [label=1.0] - n140496472402912 -> n140496472402968 - n140496472402240 [label="+"] - n140496472402912 -> n140496472402240 - n140496472402968 [label=1.0] - n140496472403080 [label="*"] - n140496472402912 [label="/"] - n140496472403080 -> n140496472402912 - n140496472402912 [label="/"] - n140496472403080 -> n140496472402912 - n140496472403192 [label="*"] - n140496472403080 [label="*"] - n140496472403192 -> n140496472403080 - n140496472402912 [label="/"] - n140496472403192 -> n140496472402912 - n140496472402856 [label=PropertyAccess] - n140496472693448 [label=force] - n140496472402856 -> n140496472693448 - n140496472273080 [label="Iter(0)"] - n140496472402856 -> n140496472273080 - n140496472433720 [label="*"] - n140496472402856 -> n140496472433720 - n140496472435456 [label="+"] - n140496472402856 -> n140496472435456 - n140496472469856 [label="+"] - n140496472402856 -> n140496472469856 - n140496472693448 [label=force] - n140496472403528 [label="*"] - n140496472274088 [label="-"] - n140496472403528 -> n140496472274088 - n140496472403584 [label=48.0] - n140496472403528 -> n140496472403584 - n140496472403584 [label=48.0] - n140496472403696 [label="*"] - n140496472274088 [label="-"] - n140496472403696 -> n140496472274088 - n140496471697896 [label="*"] - n140496472403696 -> n140496471697896 - n140496471697896 [label="*"] - n140496472403584 [label=48.0] - n140496471697896 -> n140496472403584 - n140496472403192 [label="*"] - n140496471697896 -> n140496472403192 - n140496472403808 [label="-"] - n140496472403192 [label="*"] - n140496472403808 -> n140496472403192 - n140496472403864 [label=0.5] - n140496472403808 -> n140496472403864 - n140496472403864 [label=0.5] - n140496472432712 [label="*"] - n140496472274088 [label="-"] - n140496472432712 -> n140496472274088 - n140496471698008 [label="*"] - n140496472432712 -> n140496471698008 - n140496471698008 [label="*"] - n140496471697896 [label="*"] - n140496471698008 -> n140496471697896 - n140496472403808 [label="-"] - n140496471698008 -> n140496472403808 - n140496472432824 [label="*"] - n140496472274088 [label="-"] - n140496472432824 -> n140496472274088 - n140496471698120 [label="*"] - n140496472432824 -> n140496471698120 - n140496471698120 [label="*"] - n140496471698008 [label="*"] - n140496471698120 -> n140496471698008 - n140496472402912 [label="/"] - n140496471698120 -> n140496472402912 - n140496472432936 [label="*"] - n140496472274088 [label="-"] - n140496472432936 -> n140496472274088 - n140496471698120 [label="*"] - n140496472432936 -> n140496471698120 - n140496472433104 [label="+"] - n140496472402856 [label=PropertyAccess] - n140496472433104 -> n140496472402856 - n140496472432936 [label="*"] - n140496472433104 -> n140496472432936 - n140496472433216 [label=Assign] - n140496472434784 [label=VectorAccess] - n140496472433216 -> n140496472434784 - n140496472433664 [label=VectorAccess] - n140496472433216 -> n140496472433664 - n140496472436352 [label=VectorAccess] - n140496472433216 -> n140496472436352 - n140496472435232 [label=VectorAccess] - n140496472433216 -> n140496472435232 - n140496472470752 [label=VectorAccess] - n140496472433216 -> n140496472470752 - n140496472469632 [label=VectorAccess] - n140496472433216 -> n140496472469632 - n140496472434784 [label=VectorAccess] - n140496472402856 [label=PropertyAccess] - n140496472434784 -> n140496472402856 - n140496472433664 [label=VectorAccess] - n140496472433104 [label="+"] - n140496472433664 -> n140496472433104 - n140496472436352 [label=VectorAccess] - n140496472402856 [label=PropertyAccess] - n140496472436352 -> n140496472402856 - n140496472435232 [label=VectorAccess] - n140496472433104 [label="+"] - n140496472435232 -> n140496472433104 - n140496472470752 [label=VectorAccess] - n140496472402856 [label=PropertyAccess] - n140496472470752 -> n140496472402856 - n140496472469632 [label=VectorAccess] - n140496472433104 [label="+"] - n140496472469632 -> n140496472433104 - n140496472273472 [label=0] - n140496472273304 [label=ArrayAccess] - n140496472737216 [label=numneighs] - n140496472273304 -> n140496472737216 - n140496472273080 [label="Iter(0)"] - n140496472273304 -> n140496472273080 - n140496472737216 [label=numneighs] - n140496473762056 [label=0] - n140496472273136 [label=0] - n140496472402632 [label=KernelBlock] - n140496472738952 [label=Block] - n140496472402632 -> n140496472738952 - n140496472738952 [label=Block] - n140496472739008 [label=ParticleFor] - n140496472738952 -> n140496472739008 - n140496472739008 [label=ParticleFor] - n140496472738896 [label="Iter(2)"] - n140496472739008 -> n140496472738896 - n140496472737664 [label=Block] - n140496472739008 -> n140496472737664 - n140496472738616 [label=0] - n140496472739008 -> n140496472738616 - n140496472737888 [label=0] - n140496472739008 -> n140496472737888 - n140496472738896 [label="Iter(2)"] - n140496472737664 [label=Block] - n140496472471536 [label=Assign] - n140496472737664 -> n140496472471536 - n140496472500432 [label=Assign] - n140496472737664 -> n140496472500432 - n140496472470808 [label=PropertyAccess] - n140496472693392 [label=velocity] - n140496472470808 -> n140496472693392 - n140496472738896 [label="Iter(2)"] - n140496472470808 -> n140496472738896 - n140496472472040 [label="*"] - n140496472470808 -> n140496472472040 - n140496472498416 [label="+"] - n140496472470808 -> n140496472498416 - n140496472499648 [label="+"] - n140496472470808 -> n140496472499648 - n140496472693392 [label=velocity] - n140496472472040 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472472040 -> n140496472738896 - n140496472472432 [label=3] - n140496472472040 -> n140496472472432 - n140496472472432 [label=3] - n140496472498416 [label="+"] - n140496472473272 [label="*"] - n140496472498416 -> n140496472473272 - n140496472498472 [label=1] - n140496472498416 -> n140496472498472 - n140496472473272 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472473272 -> n140496472738896 - n140496472498304 [label=3] - n140496472473272 -> n140496472498304 - n140496472498304 [label=3] - n140496472498472 [label=1] - n140496472499648 [label="+"] - n140496472499144 [label="*"] - n140496472499648 -> n140496472499144 - n140496472499704 [label=2] - n140496472499648 -> n140496472499704 - n140496472499144 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472499144 -> n140496472738896 - n140496472499536 [label=3] - n140496472499144 -> n140496472499536 - n140496472499536 [label=3] - n140496472499704 [label=2] - n140496472470920 [label=PropertyAccess] - n140496472693448 [label=force] - n140496472470920 -> n140496472693448 - n140496472738896 [label="Iter(2)"] - n140496472470920 -> n140496472738896 - n140496472472096 [label="*"] - n140496472470920 -> n140496472472096 - n140496472473496 [label="+"] - n140496472470920 -> n140496472473496 - n140496472499368 [label="+"] - n140496472470920 -> n140496472499368 - n140496472472096 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472472096 -> n140496472738896 - n140496472472152 [label=3] - n140496472472096 -> n140496472472152 - n140496472472152 [label=3] - n140496472473496 [label="+"] - n140496472473328 [label="*"] - n140496472473496 -> n140496472473328 - n140496472473552 [label=1] - n140496472473496 -> n140496472473552 - n140496472473328 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472473328 -> n140496472738896 - n140496472473384 [label=3] - n140496472473328 -> n140496472473384 - n140496472473384 [label=3] - n140496472473552 [label=1] - n140496472499368 [label="+"] - n140496472499200 [label="*"] - n140496472499368 -> n140496472499200 - n140496472499424 [label=2] - n140496472499368 -> n140496472499424 - n140496472499200 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472499200 -> n140496472738896 - n140496472499256 [label=3] - n140496472499200 -> n140496472499256 - n140496472499256 [label=3] - n140496472499424 [label=2] - n140496472471032 [label="*"] - n140496472471088 [label=0.005] - n140496472471032 -> n140496472471088 - n140496472470920 [label=PropertyAccess] - n140496472471032 -> n140496472470920 - n140496472471088 [label=0.005] - n140496472471200 [label=PropertyAccess] - n140496472693280 [label=mass] - n140496472471200 -> n140496472693280 - n140496472738896 [label="Iter(2)"] - n140496472471200 -> n140496472738896 - n140496472693280 [label=mass] - n140496472471312 [label="/"] - n140496472471032 [label="*"] - n140496472471312 -> n140496472471032 - n140496472471200 [label=PropertyAccess] - n140496472471312 -> n140496472471200 - n140496472471424 [label="+"] - n140496472470808 [label=PropertyAccess] - n140496472471424 -> n140496472470808 - n140496472471312 [label="/"] - n140496472471424 -> n140496472471312 - n140496472471648 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472471648 -> n140496472738896 - n140496472471704 [label=3] - n140496472471648 -> n140496472471704 - n140496472471704 [label=3] - n140496472472880 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472472880 -> n140496472738896 - n140496472472936 [label=3] - n140496472472880 -> n140496472472936 - n140496472472936 [label=3] - n140496472473048 [label="+"] - n140496472472880 [label="*"] - n140496472473048 -> n140496472472880 - n140496472473104 [label=1] - n140496472473048 -> n140496472473104 - n140496472473104 [label=1] - n140496472498752 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472498752 -> n140496472738896 - n140496472498808 [label=3] - n140496472498752 -> n140496472498808 - n140496472498808 [label=3] - n140496472498920 [label="+"] - n140496472498752 [label="*"] - n140496472498920 -> n140496472498752 - n140496472498976 [label=2] - n140496472498920 -> n140496472498976 - n140496472498976 [label=2] - n140496472471536 [label=Assign] - n140496472472768 [label=VectorAccess] - n140496472471536 -> n140496472472768 - n140496472471984 [label=VectorAccess] - n140496472471536 -> n140496472471984 - n140496472498640 [label=VectorAccess] - n140496472471536 -> n140496472498640 - n140496472473216 [label=VectorAccess] - n140496472471536 -> n140496472473216 - n140496472499872 [label=VectorAccess] - n140496472471536 -> n140496472499872 - n140496472499088 [label=VectorAccess] - n140496472471536 -> n140496472499088 - n140496472472768 [label=VectorAccess] - n140496472470808 [label=PropertyAccess] - n140496472472768 -> n140496472470808 - n140496472471984 [label=VectorAccess] - n140496472471424 [label="+"] - n140496472471984 -> n140496472471424 - n140496472498640 [label=VectorAccess] - n140496472470808 [label=PropertyAccess] - n140496472498640 -> n140496472470808 - n140496472473216 [label=VectorAccess] - n140496472471424 [label="+"] - n140496472473216 -> n140496472471424 - n140496472499872 [label=VectorAccess] - n140496472470808 [label=PropertyAccess] - n140496472499872 -> n140496472470808 - n140496472499088 [label=VectorAccess] - n140496472471424 [label="+"] - n140496472499088 -> n140496472471424 - n140496472499928 [label=PropertyAccess] - n140496472693336 [label=position] - n140496472499928 -> n140496472693336 - n140496472738896 [label="Iter(2)"] - n140496472499928 -> n140496472738896 - n140496472501272 [label="*"] - n140496472499928 -> n140496472501272 - n140496472007120 [label="+"] - n140496472499928 -> n140496472007120 - n140496472008352 [label="+"] - n140496472499928 -> n140496472008352 - n140496472501272 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472501272 -> n140496472738896 - n140496472501328 [label=3] - n140496472501272 -> n140496472501328 - n140496472501328 [label=3] - n140496472007120 [label="+"] - n140496472006952 [label="*"] - n140496472007120 -> n140496472006952 - n140496472007176 [label=1] - n140496472007120 -> n140496472007176 - n140496472006952 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472006952 -> n140496472738896 - n140496472007008 [label=3] - n140496472006952 -> n140496472007008 - n140496472007008 [label=3] - n140496472007176 [label=1] - n140496472008352 [label="+"] - n140496472008184 [label="*"] - n140496472008352 -> n140496472008184 - n140496472008408 [label=2] - n140496472008352 -> n140496472008408 - n140496472008184 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472008184 -> n140496472738896 - n140496472008240 [label=3] - n140496472008184 -> n140496472008240 - n140496472008240 [label=3] - n140496472008408 [label=2] - n140496472500040 [label=PropertyAccess] - n140496472693392 [label=velocity] - n140496472500040 -> n140496472693392 - n140496472738896 [label="Iter(2)"] - n140496472500040 -> n140496472738896 - n140496472500936 [label="*"] - n140496472500040 -> n140496472500936 - n140496472006784 [label="+"] - n140496472500040 -> n140496472006784 - n140496472008016 [label="+"] - n140496472500040 -> n140496472008016 - n140496472500936 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472500936 -> n140496472738896 - n140496472500992 [label=3] - n140496472500936 -> n140496472500992 - n140496472500992 [label=3] - n140496472006784 [label="+"] - n140496472502168 [label="*"] - n140496472006784 -> n140496472502168 - n140496472006840 [label=1] - n140496472006784 -> n140496472006840 - n140496472502168 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472502168 -> n140496472738896 - n140496472502224 [label=3] - n140496472502168 -> n140496472502224 - n140496472502224 [label=3] - n140496472006840 [label=1] - n140496472008016 [label="+"] - n140496472007848 [label="*"] - n140496472008016 -> n140496472007848 - n140496472008072 [label=2] - n140496472008016 -> n140496472008072 - n140496472007848 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472007848 -> n140496472738896 - n140496472007904 [label=3] - n140496472007848 -> n140496472007904 - n140496472007904 [label=3] - n140496472008072 [label=2] - n140496472500152 [label="*"] - n140496472500208 [label=0.005] - n140496472500152 -> n140496472500208 - n140496472500040 [label=PropertyAccess] - n140496472500152 -> n140496472500040 - n140496472500208 [label=0.005] - n140496472500320 [label="+"] - n140496472499928 [label=PropertyAccess] - n140496472500320 -> n140496472499928 - n140496472500152 [label="*"] - n140496472500320 -> n140496472500152 - n140496472500544 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472500544 -> n140496472738896 - n140496472500600 [label=3] - n140496472500544 -> n140496472500600 - n140496472500600 [label=3] - n140496472501776 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472501776 -> n140496472738896 - n140496472501832 [label=3] - n140496472501776 -> n140496472501832 - n140496472501832 [label=3] - n140496472501944 [label="+"] - n140496472501776 [label="*"] - n140496472501944 -> n140496472501776 - n140496472502000 [label=1] - n140496472501944 -> n140496472502000 - n140496472502000 [label=1] - n140496472007456 [label="*"] - n140496472738896 [label="Iter(2)"] - n140496472007456 -> n140496472738896 - n140496472007512 [label=3] - n140496472007456 -> n140496472007512 - n140496472007512 [label=3] - n140496472007624 [label="+"] - n140496472007456 [label="*"] - n140496472007624 -> n140496472007456 - n140496472007680 [label=2] - n140496472007624 -> n140496472007680 - n140496472007680 [label=2] - n140496472500432 [label=Assign] - n140496472501664 [label=VectorAccess] - n140496472500432 -> n140496472501664 - n140496472500880 [label=VectorAccess] - n140496472500432 -> n140496472500880 - n140496472007344 [label=VectorAccess] - n140496472500432 -> n140496472007344 - n140496472502112 [label=VectorAccess] - n140496472500432 -> n140496472502112 - n140496472008576 [label=VectorAccess] - n140496472500432 -> n140496472008576 - n140496472007792 [label=VectorAccess] - n140496472500432 -> n140496472007792 - n140496472501664 [label=VectorAccess] - n140496472499928 [label=PropertyAccess] - n140496472501664 -> n140496472499928 - n140496472500880 [label=VectorAccess] - n140496472500320 [label="+"] - n140496472500880 -> n140496472500320 - n140496472007344 [label=VectorAccess] - n140496472499928 [label=PropertyAccess] - n140496472007344 -> n140496472499928 - n140496472502112 [label=VectorAccess] - n140496472500320 [label="+"] - n140496472502112 -> n140496472500320 - n140496472008576 [label=VectorAccess] - n140496472499928 [label=PropertyAccess] - n140496472008576 -> n140496472499928 - n140496472007792 [label=VectorAccess] - n140496472500320 [label="+"] - n140496472007792 -> n140496472500320 - n140496472738616 [label=0] - n140496472737888 [label=0] + n140112198557368 [label=Block] + n140112198162136 [label=KernelBlock] + n140112198557368 -> n140112198162136 + n140112198279352 [label=KernelBlock] + n140112198557368 -> n140112198279352 + n140112198162136 [label=KernelBlock] + n140112198161856 [label=Block] + n140112198162136 -> n140112198161856 + n140112198161856 [label=Block] + n140112198587056 [label=ParticleFor] + n140112198161856 -> n140112198587056 + n140112198587056 [label=ParticleFor] + n140112198161912 [label="Iter(0)"] + n140112198587056 -> n140112198161912 + n140112198162080 [label=Block] + n140112198587056 -> n140112198162080 + n140112198161968 [label=0] + n140112198587056 -> n140112198161968 + n140112198162024 [label=0] + n140112198587056 -> n140112198162024 + n140112198161912 [label="Iter(0)"] + n140112198162080 [label=Block] + n140112198162248 [label=For] + n140112198162080 -> n140112198162248 + n140112198162528 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198162528 -> n140112198161912 + n140112198589072 [label=neighborlist_capacity] + n140112198162528 -> n140112198589072 + n140112198589072 [label=neighborlist_capacity] + n140112198162752 [label=PropertyAccess] + n140112198557592 [label=position] + n140112198162752 -> n140112198557592 + n140112198161912 [label="Iter(0)"] + n140112198162752 -> n140112198161912 + n140112198281984 [label="*"] + n140112198162752 -> n140112198281984 + n140112198316552 [label="+"] + n140112198162752 -> n140112198316552 + n140112198318120 [label="+"] + n140112198162752 -> n140112198318120 + n140112198557592 [label=position] + n140112198281984 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198281984 -> n140112198161912 + n140112198282040 [label=3] + n140112198281984 -> n140112198282040 + n140112198282040 [label=3] + n140112198316552 [label="+"] + n140112198316384 [label="*"] + n140112198316552 -> n140112198316384 + n140112198316608 [label=1] + n140112198316552 -> n140112198316608 + n140112198316384 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198316384 -> n140112198161912 + n140112198316440 [label=3] + n140112198316384 -> n140112198316440 + n140112198316440 [label=3] + n140112198316608 [label=1] + n140112198318120 [label="+"] + n140112198317952 [label="*"] + n140112198318120 -> n140112198317952 + n140112198318176 [label=2] + n140112198318120 -> n140112198318176 + n140112198317952 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198317952 -> n140112198161912 + n140112198318008 [label=3] + n140112198317952 -> n140112198318008 + n140112198318008 [label=3] + n140112198318176 [label=2] + n140112198163144 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198163144 -> n140112198161912 + n140112198163200 [label=3] + n140112198163144 -> n140112198163200 + n140112198163200 [label=3] + n140112198163928 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198163928 -> n140112198161912 + n140112198163984 [label=3] + n140112198163928 -> n140112198163984 + n140112198163984 [label=3] + n140112198209888 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198209888 -> n140112198161912 + n140112198209720 [label=3] + n140112198209888 -> n140112198209720 + n140112198209720 [label=3] + n140112198210112 [label="+"] + n140112198209888 [label="*"] + n140112198210112 -> n140112198209888 + n140112198211568 [label=1] + n140112198210112 -> n140112198211568 + n140112198211568 [label=1] + n140112198210672 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198210672 -> n140112198161912 + n140112198210728 [label=3] + n140112198210672 -> n140112198210728 + n140112198210728 [label=3] + n140112198210840 [label="+"] + n140112198210672 [label="*"] + n140112198210840 -> n140112198210672 + n140112198210896 [label=1] + n140112198210840 -> n140112198210896 + n140112198210896 [label=1] + n140112198211792 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198211792 -> n140112198161912 + n140112198211960 [label=3] + n140112198211792 -> n140112198211960 + n140112198211960 [label=3] + n140112198211904 [label="+"] + n140112198211792 [label="*"] + n140112198211904 -> n140112198211792 + n140112198211848 [label=2] + n140112198211904 -> n140112198211848 + n140112198211848 [label=2] + n140112198212464 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198212464 -> n140112198161912 + n140112198212520 [label=3] + n140112198212464 -> n140112198212520 + n140112198212520 [label=3] + n140112198212632 [label="+"] + n140112198212464 [label="*"] + n140112198212632 -> n140112198212464 + n140112198212688 [label=2] + n140112198212632 -> n140112198212688 + n140112198212688 [label=2] + n140112198281312 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198281312 -> n140112198161912 + n140112198281368 [label=3] + n140112198281312 -> n140112198281368 + n140112198281368 [label=3] + n140112198281704 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198281704 -> n140112198161912 + n140112198281760 [label=3] + n140112198281704 -> n140112198281760 + n140112198281760 [label=3] + n140112198282880 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198282880 -> n140112198161912 + n140112198282936 [label=3] + n140112198282880 -> n140112198282936 + n140112198282936 [label=3] + n140112198283048 [label="+"] + n140112198282880 [label="*"] + n140112198283048 -> n140112198282880 + n140112198283104 [label=1] + n140112198283048 -> n140112198283104 + n140112198283104 [label=1] + n140112198316104 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198316104 -> n140112198161912 + n140112198316160 [label=3] + n140112198316104 -> n140112198316160 + n140112198316160 [label=3] + n140112198316272 [label="+"] + n140112198316104 [label="*"] + n140112198316272 -> n140112198316104 + n140112198316328 [label=1] + n140112198316272 -> n140112198316328 + n140112198316328 [label=1] + n140112198317280 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198317280 -> n140112198161912 + n140112198317336 [label=3] + n140112198317280 -> n140112198317336 + n140112198317336 [label=3] + n140112198317448 [label="+"] + n140112198317280 [label="*"] + n140112198317448 -> n140112198317280 + n140112198317504 [label=2] + n140112198317448 -> n140112198317504 + n140112198317504 [label=2] + n140112198317672 [label="*"] + n140112198161912 [label="Iter(0)"] + n140112198317672 -> n140112198161912 + n140112198317728 [label=3] + n140112198317672 -> n140112198317728 + n140112198317728 [label=3] + n140112198317840 [label="+"] + n140112198317672 [label="*"] + n140112198317840 -> n140112198317672 + n140112198317896 [label=2] + n140112198317840 -> n140112198317896 + n140112198317896 [label=2] + n140112198162248 [label=For] + n140112198162304 [label="Iter(1)"] + n140112198162248 -> n140112198162304 + n140112198162416 [label=Block] + n140112198162248 -> n140112198162416 + n140112198162360 [label=0] + n140112198162248 -> n140112198162360 + n140112198162192 [label=ArrayAccess] + n140112198162248 -> n140112198162192 + n140112198162304 [label="Iter(1)"] + n140112198162416 [label=Block] + n140112198279240 [label=Filter] + n140112198162416 -> n140112198279240 + n140112198162640 [label="+"] + n140112198162528 [label="*"] + n140112198162640 -> n140112198162528 + n140112198162304 [label="Iter(1)"] + n140112198162640 -> n140112198162304 + n140112198162864 [label=PropertyAccess] + n140112198557592 [label=position] + n140112198162864 -> n140112198557592 + n140112198162472 [label=ArrayAccess] + n140112198162864 -> n140112198162472 + n140112198282320 [label="*"] + n140112198162864 -> n140112198282320 + n140112198316888 [label="+"] + n140112198162864 -> n140112198316888 + n140112198318456 [label="+"] + n140112198162864 -> n140112198318456 + n140112198162472 [label=ArrayAccess] + n140112198589128 [label=neighborlists] + n140112198162472 -> n140112198589128 + n140112198162640 [label="+"] + n140112198162472 -> n140112198162640 + n140112198589128 [label=neighborlists] + n140112198282320 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198282320 -> n140112198162472 + n140112198282376 [label=3] + n140112198282320 -> n140112198282376 + n140112198282376 [label=3] + n140112198316888 [label="+"] + n140112198316720 [label="*"] + n140112198316888 -> n140112198316720 + n140112198316944 [label=1] + n140112198316888 -> n140112198316944 + n140112198316720 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198316720 -> n140112198162472 + n140112198316776 [label=3] + n140112198316720 -> n140112198316776 + n140112198316776 [label=3] + n140112198316944 [label=1] + n140112198318456 [label="+"] + n140112198318288 [label="*"] + n140112198318456 -> n140112198318288 + n140112198318512 [label=2] + n140112198318456 -> n140112198318512 + n140112198318288 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198318288 -> n140112198162472 + n140112198318344 [label=3] + n140112198318288 -> n140112198318344 + n140112198318344 [label=3] + n140112198318512 [label=2] + n140112198162976 [label="-"] + n140112198162752 [label=PropertyAccess] + n140112198162976 -> n140112198162752 + n140112198162864 [label=PropertyAccess] + n140112198162976 -> n140112198162864 + n140112198163480 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198163480 -> n140112198162472 + n140112198163536 [label=3] + n140112198163480 -> n140112198163536 + n140112198163536 [label=3] + n140112198164264 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198164264 -> n140112198162472 + n140112198164320 [label=3] + n140112198164264 -> n140112198164320 + n140112198164320 [label=3] + n140112198209944 [label="*"] + n140112198163816 [label=VectorAccess] + n140112198209944 -> n140112198163816 + n140112198209664 [label=VectorAccess] + n140112198209944 -> n140112198209664 + n140112198163816 [label=VectorAccess] + n140112198162976 [label="-"] + n140112198163816 -> n140112198162976 + n140112198209664 [label=VectorAccess] + n140112198162976 [label="-"] + n140112198209664 -> n140112198162976 + n140112198210224 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198210224 -> n140112198162472 + n140112198210280 [label=3] + n140112198210224 -> n140112198210280 + n140112198210280 [label=3] + n140112198210392 [label="+"] + n140112198210224 [label="*"] + n140112198210392 -> n140112198210224 + n140112198210448 [label=1] + n140112198210392 -> n140112198210448 + n140112198210448 [label=1] + n140112198211008 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198211008 -> n140112198162472 + n140112198211064 [label=3] + n140112198211008 -> n140112198211064 + n140112198211064 [label=3] + n140112198211176 [label="+"] + n140112198211008 [label="*"] + n140112198211176 -> n140112198211008 + n140112198211232 [label=1] + n140112198211176 -> n140112198211232 + n140112198211232 [label=1] + n140112198211400 [label="*"] + n140112198210560 [label=VectorAccess] + n140112198211400 -> n140112198210560 + n140112198211344 [label=VectorAccess] + n140112198211400 -> n140112198211344 + n140112198210560 [label=VectorAccess] + n140112198162976 [label="-"] + n140112198210560 -> n140112198162976 + n140112198211344 [label=VectorAccess] + n140112198162976 [label="-"] + n140112198211344 -> n140112198162976 + n140112198211512 [label="+"] + n140112198209944 [label="*"] + n140112198211512 -> n140112198209944 + n140112198211400 [label="*"] + n140112198211512 -> n140112198211400 + n140112198213472 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198213472 -> n140112198162472 + n140112198212072 [label=3] + n140112198213472 -> n140112198212072 + n140112198212072 [label=3] + n140112198212184 [label="+"] + n140112198213472 [label="*"] + n140112198212184 -> n140112198213472 + n140112198212240 [label=2] + n140112198212184 -> n140112198212240 + n140112198212240 [label=2] + n140112198212800 [label="*"] + n140112198162472 [label=ArrayAccess] + n140112198212800 -> n140112198162472 + n140112198212856 [label=3] + n140112198212800 -> n140112198212856 + n140112198212856 [label=3] + n140112198212968 [label="+"] + n140112198212800 [label="*"] + n140112198212968 -> n140112198212800 + n140112198213024 [label=2] + n140112198212968 -> n140112198213024 + n140112198213024 [label=2] + n140112198213192 [label="*"] + n140112198212352 [label=VectorAccess] + n140112198213192 -> n140112198212352 + n140112198213136 [label=VectorAccess] + n140112198213192 -> n140112198213136 + n140112198212352 [label=VectorAccess] + n140112198162976 [label="-"] + n140112198212352 -> n140112198162976 + n140112198213136 [label=VectorAccess] + n140112198162976 [label="-"] + n140112198213136 -> n140112198162976 + n140112198213304 [label="+"] + n140112198211512 [label="+"] + n140112198213304 -> n140112198211512 + n140112198213192 [label="*"] + n140112198213304 -> n140112198213192 + n140112198213416 [label="<"] + n140112198213304 [label="+"] + n140112198213416 -> n140112198213304 + n140112198213584 [label=2.5] + n140112198213416 -> n140112198213584 + n140112198213584 [label=2.5] + n140112198279240 [label=Filter] + n140112198213416 [label="<"] + n140112198279240 -> n140112198213416 + n140112198279296 [label=Block] + n140112198279240 -> n140112198279296 + n140112198279296 [label=Block] + n140112198281200 [label=Assign] + n140112198279296 -> n140112198281200 + n140112198279632 [label="/"] + n140112198279688 [label=1.0] + n140112198279632 -> n140112198279688 + n140112198213304 [label="+"] + n140112198279632 -> n140112198213304 + n140112198279688 [label=1.0] + n140112198279800 [label="*"] + n140112198279632 [label="/"] + n140112198279800 -> n140112198279632 + n140112198279632 [label="/"] + n140112198279800 -> n140112198279632 + n140112198279912 [label="*"] + n140112198279800 [label="*"] + n140112198279912 -> n140112198279800 + n140112198279632 [label="/"] + n140112198279912 -> n140112198279632 + n140112198279576 [label=PropertyAccess] + n140112198586440 [label=force] + n140112198279576 -> n140112198586440 + n140112198161912 [label="Iter(0)"] + n140112198279576 -> n140112198161912 + n140112198281704 [label="*"] + n140112198279576 -> n140112198281704 + n140112198316272 [label="+"] + n140112198279576 -> n140112198316272 + n140112198317840 [label="+"] + n140112198279576 -> n140112198317840 + n140112198586440 [label=force] + n140112198280248 [label="*"] + n140112198162976 [label="-"] + n140112198280248 -> n140112198162976 + n140112198280304 [label=48.0] + n140112198280248 -> n140112198280304 + n140112198280304 [label=48.0] + n140112198280416 [label="*"] + n140112198162976 [label="-"] + n140112198280416 -> n140112198162976 + n140112197071032 [label="*"] + n140112198280416 -> n140112197071032 + n140112197071032 [label="*"] + n140112198280304 [label=48.0] + n140112197071032 -> n140112198280304 + n140112198279912 [label="*"] + n140112197071032 -> n140112198279912 + n140112198280528 [label="-"] + n140112198279912 [label="*"] + n140112198280528 -> n140112198279912 + n140112198280584 [label=0.5] + n140112198280528 -> n140112198280584 + n140112198280584 [label=0.5] + n140112198280696 [label="*"] + n140112198162976 [label="-"] + n140112198280696 -> n140112198162976 + n140112197071144 [label="*"] + n140112198280696 -> n140112197071144 + n140112197071144 [label="*"] + n140112197071032 [label="*"] + n140112197071144 -> n140112197071032 + n140112198280528 [label="-"] + n140112197071144 -> n140112198280528 + n140112198280808 [label="*"] + n140112198162976 [label="-"] + n140112198280808 -> n140112198162976 + n140112197071256 [label="*"] + n140112198280808 -> n140112197071256 + n140112197071256 [label="*"] + n140112197071144 [label="*"] + n140112197071256 -> n140112197071144 + n140112198279632 [label="/"] + n140112197071256 -> n140112198279632 + n140112198280920 [label="*"] + n140112198162976 [label="-"] + n140112198280920 -> n140112198162976 + n140112197071256 [label="*"] + n140112198280920 -> n140112197071256 + n140112198281088 [label="+"] + n140112198279576 [label=PropertyAccess] + n140112198281088 -> n140112198279576 + n140112198280920 [label="*"] + n140112198281088 -> n140112198280920 + n140112198281200 [label=Assign] + n140112198282768 [label=VectorAccess] + n140112198281200 -> n140112198282768 + n140112198281648 [label=VectorAccess] + n140112198281200 -> n140112198281648 + n140112198317168 [label=VectorAccess] + n140112198281200 -> n140112198317168 + n140112198283216 [label=VectorAccess] + n140112198281200 -> n140112198283216 + n140112198318736 [label=VectorAccess] + n140112198281200 -> n140112198318736 + n140112198317616 [label=VectorAccess] + n140112198281200 -> n140112198317616 + n140112198282768 [label=VectorAccess] + n140112198279576 [label=PropertyAccess] + n140112198282768 -> n140112198279576 + n140112198281648 [label=VectorAccess] + n140112198281088 [label="+"] + n140112198281648 -> n140112198281088 + n140112198317168 [label=VectorAccess] + n140112198279576 [label=PropertyAccess] + n140112198317168 -> n140112198279576 + n140112198283216 [label=VectorAccess] + n140112198281088 [label="+"] + n140112198283216 -> n140112198281088 + n140112198318736 [label=VectorAccess] + n140112198279576 [label=PropertyAccess] + n140112198318736 -> n140112198279576 + n140112198317616 [label=VectorAccess] + n140112198281088 [label="+"] + n140112198317616 -> n140112198281088 + n140112198162360 [label=0] + n140112198162192 [label=ArrayAccess] + n140112198589184 [label=numneighs] + n140112198162192 -> n140112198589184 + n140112198161912 [label="Iter(0)"] + n140112198162192 -> n140112198161912 + n140112198589184 [label=numneighs] + n140112198161968 [label=0] + n140112198162024 [label=0] + n140112198279352 [label=KernelBlock] + n140112198589688 [label=Block] + n140112198279352 -> n140112198589688 + n140112198589688 [label=Block] + n140112198589632 [label=ParticleFor] + n140112198589688 -> n140112198589632 + n140112198589632 [label=ParticleFor] + n140112198590304 [label="Iter(2)"] + n140112198589632 -> n140112198590304 + n140112198589856 [label=Block] + n140112198589632 -> n140112198589856 + n140112198589520 [label=0] + n140112198589632 -> n140112198589520 + n140112198589968 [label=0] + n140112198589632 -> n140112198589968 + n140112198590304 [label="Iter(2)"] + n140112198589856 [label=Block] + n140112198319520 [label=Assign] + n140112198589856 -> n140112198319520 + n140112198356608 [label=Assign] + n140112198589856 -> n140112198356608 + n140112198318792 [label=PropertyAccess] + n140112198557648 [label=velocity] + n140112198318792 -> n140112198557648 + n140112198590304 [label="Iter(2)"] + n140112198318792 -> n140112198590304 + n140112198320024 [label="*"] + n140112198318792 -> n140112198320024 + n140112198354592 [label="+"] + n140112198318792 -> n140112198354592 + n140112198355824 [label="+"] + n140112198318792 -> n140112198355824 + n140112198557648 [label=velocity] + n140112198320024 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198320024 -> n140112198590304 + n140112198353248 [label=3] + n140112198320024 -> n140112198353248 + n140112198353248 [label=3] + n140112198354592 [label="+"] + n140112198354088 [label="*"] + n140112198354592 -> n140112198354088 + n140112198354648 [label=1] + n140112198354592 -> n140112198354648 + n140112198354088 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198354088 -> n140112198590304 + n140112198354480 [label=3] + n140112198354088 -> n140112198354480 + n140112198354480 [label=3] + n140112198354648 [label=1] + n140112198355824 [label="+"] + n140112198355320 [label="*"] + n140112198355824 -> n140112198355320 + n140112198355880 [label=2] + n140112198355824 -> n140112198355880 + n140112198355320 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198355320 -> n140112198590304 + n140112198355712 [label=3] + n140112198355320 -> n140112198355712 + n140112198355712 [label=3] + n140112198355880 [label=2] + n140112198318904 [label=PropertyAccess] + n140112198586440 [label=force] + n140112198318904 -> n140112198586440 + n140112198590304 [label="Iter(2)"] + n140112198318904 -> n140112198590304 + n140112198320080 [label="*"] + n140112198318904 -> n140112198320080 + n140112198354312 [label="+"] + n140112198318904 -> n140112198354312 + n140112198355544 [label="+"] + n140112198318904 -> n140112198355544 + n140112198320080 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198320080 -> n140112198590304 + n140112198352968 [label=3] + n140112198320080 -> n140112198352968 + n140112198352968 [label=3] + n140112198354312 [label="+"] + n140112198354144 [label="*"] + n140112198354312 -> n140112198354144 + n140112198354368 [label=1] + n140112198354312 -> n140112198354368 + n140112198354144 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198354144 -> n140112198590304 + n140112198354200 [label=3] + n140112198354144 -> n140112198354200 + n140112198354200 [label=3] + n140112198354368 [label=1] + n140112198355544 [label="+"] + n140112198355376 [label="*"] + n140112198355544 -> n140112198355376 + n140112198355600 [label=2] + n140112198355544 -> n140112198355600 + n140112198355376 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198355376 -> n140112198590304 + n140112198355432 [label=3] + n140112198355376 -> n140112198355432 + n140112198355432 [label=3] + n140112198355600 [label=2] + n140112198319016 [label="*"] + n140112198319072 [label=0.005] + n140112198319016 -> n140112198319072 + n140112198318904 [label=PropertyAccess] + n140112198319016 -> n140112198318904 + n140112198319072 [label=0.005] + n140112198319184 [label=PropertyAccess] + n140112198557536 [label=mass] + n140112198319184 -> n140112198557536 + n140112198590304 [label="Iter(2)"] + n140112198319184 -> n140112198590304 + n140112198557536 [label=mass] + n140112198319296 [label="/"] + n140112198319016 [label="*"] + n140112198319296 -> n140112198319016 + n140112198319184 [label=PropertyAccess] + n140112198319296 -> n140112198319184 + n140112198319408 [label="+"] + n140112198318792 [label=PropertyAccess] + n140112198319408 -> n140112198318792 + n140112198319296 [label="/"] + n140112198319408 -> n140112198319296 + n140112198319632 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198319632 -> n140112198590304 + n140112198319688 [label=3] + n140112198319632 -> n140112198319688 + n140112198319688 [label=3] + n140112198353696 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198353696 -> n140112198590304 + n140112198353752 [label=3] + n140112198353696 -> n140112198353752 + n140112198353752 [label=3] + n140112198353864 [label="+"] + n140112198353696 [label="*"] + n140112198353864 -> n140112198353696 + n140112198353920 [label=1] + n140112198353864 -> n140112198353920 + n140112198353920 [label=1] + n140112198354928 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198354928 -> n140112198590304 + n140112198354984 [label=3] + n140112198354928 -> n140112198354984 + n140112198354984 [label=3] + n140112198355096 [label="+"] + n140112198354928 [label="*"] + n140112198355096 -> n140112198354928 + n140112198355152 [label=2] + n140112198355096 -> n140112198355152 + n140112198355152 [label=2] + n140112198319520 [label=Assign] + n140112198353584 [label=VectorAccess] + n140112198319520 -> n140112198353584 + n140112198319968 [label=VectorAccess] + n140112198319520 -> n140112198319968 + n140112198354816 [label=VectorAccess] + n140112198319520 -> n140112198354816 + n140112198354032 [label=VectorAccess] + n140112198319520 -> n140112198354032 + n140112198356048 [label=VectorAccess] + n140112198319520 -> n140112198356048 + n140112198355264 [label=VectorAccess] + n140112198319520 -> n140112198355264 + n140112198353584 [label=VectorAccess] + n140112198318792 [label=PropertyAccess] + n140112198353584 -> n140112198318792 + n140112198319968 [label=VectorAccess] + n140112198319408 [label="+"] + n140112198319968 -> n140112198319408 + n140112198354816 [label=VectorAccess] + n140112198318792 [label=PropertyAccess] + n140112198354816 -> n140112198318792 + n140112198354032 [label=VectorAccess] + n140112198319408 [label="+"] + n140112198354032 -> n140112198319408 + n140112198356048 [label=VectorAccess] + n140112198318792 [label=PropertyAccess] + n140112198356048 -> n140112198318792 + n140112198355264 [label=VectorAccess] + n140112198319408 [label="+"] + n140112198355264 -> n140112198319408 + n140112198356104 [label=PropertyAccess] + n140112198557592 [label=position] + n140112198356104 -> n140112198557592 + n140112198590304 [label="Iter(2)"] + n140112198356104 -> n140112198590304 + n140112197861896 [label="*"] + n140112198356104 -> n140112197861896 + n140112197863296 [label="+"] + n140112198356104 -> n140112197863296 + n140112197864528 [label="+"] + n140112198356104 -> n140112197864528 + n140112197861896 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197861896 -> n140112198590304 + n140112197861952 [label=3] + n140112197861896 -> n140112197861952 + n140112197861952 [label=3] + n140112197863296 [label="+"] + n140112197863128 [label="*"] + n140112197863296 -> n140112197863128 + n140112197863352 [label=1] + n140112197863296 -> n140112197863352 + n140112197863128 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197863128 -> n140112198590304 + n140112197863184 [label=3] + n140112197863128 -> n140112197863184 + n140112197863184 [label=3] + n140112197863352 [label=1] + n140112197864528 [label="+"] + n140112197864360 [label="*"] + n140112197864528 -> n140112197864360 + n140112197864584 [label=2] + n140112197864528 -> n140112197864584 + n140112197864360 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197864360 -> n140112198590304 + n140112197864416 [label=3] + n140112197864360 -> n140112197864416 + n140112197864416 [label=3] + n140112197864584 [label=2] + n140112198356216 [label=PropertyAccess] + n140112198557648 [label=velocity] + n140112198356216 -> n140112198557648 + n140112198590304 [label="Iter(2)"] + n140112198356216 -> n140112198590304 + n140112197861560 [label="*"] + n140112198356216 -> n140112197861560 + n140112197862960 [label="+"] + n140112198356216 -> n140112197862960 + n140112197864192 [label="+"] + n140112198356216 -> n140112197864192 + n140112197861560 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197861560 -> n140112198590304 + n140112197861616 [label=3] + n140112197861560 -> n140112197861616 + n140112197861616 [label=3] + n140112197862960 [label="+"] + n140112197862792 [label="*"] + n140112197862960 -> n140112197862792 + n140112197863016 [label=1] + n140112197862960 -> n140112197863016 + n140112197862792 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197862792 -> n140112198590304 + n140112197862848 [label=3] + n140112197862792 -> n140112197862848 + n140112197862848 [label=3] + n140112197863016 [label=1] + n140112197864192 [label="+"] + n140112197864024 [label="*"] + n140112197864192 -> n140112197864024 + n140112197864248 [label=2] + n140112197864192 -> n140112197864248 + n140112197864024 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197864024 -> n140112198590304 + n140112197864080 [label=3] + n140112197864024 -> n140112197864080 + n140112197864080 [label=3] + n140112197864248 [label=2] + n140112198356328 [label="*"] + n140112198356384 [label=0.005] + n140112198356328 -> n140112198356384 + n140112198356216 [label=PropertyAccess] + n140112198356328 -> n140112198356216 + n140112198356384 [label=0.005] + n140112198356496 [label="+"] + n140112198356104 [label=PropertyAccess] + n140112198356496 -> n140112198356104 + n140112198356328 [label="*"] + n140112198356496 -> n140112198356328 + n140112198356720 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112198356720 -> n140112198590304 + n140112198356776 [label=3] + n140112198356720 -> n140112198356776 + n140112198356776 [label=3] + n140112197862400 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197862400 -> n140112198590304 + n140112197862456 [label=3] + n140112197862400 -> n140112197862456 + n140112197862456 [label=3] + n140112197862568 [label="+"] + n140112197862400 [label="*"] + n140112197862568 -> n140112197862400 + n140112197862624 [label=1] + n140112197862568 -> n140112197862624 + n140112197862624 [label=1] + n140112197863632 [label="*"] + n140112198590304 [label="Iter(2)"] + n140112197863632 -> n140112198590304 + n140112197863688 [label=3] + n140112197863632 -> n140112197863688 + n140112197863688 [label=3] + n140112197863800 [label="+"] + n140112197863632 [label="*"] + n140112197863800 -> n140112197863632 + n140112197863856 [label=2] + n140112197863800 -> n140112197863856 + n140112197863856 [label=2] + n140112198356608 [label=Assign] + n140112197862288 [label=VectorAccess] + n140112198356608 -> n140112197862288 + n140112197861504 [label=VectorAccess] + n140112198356608 -> n140112197861504 + n140112197863520 [label=VectorAccess] + n140112198356608 -> n140112197863520 + n140112197862736 [label=VectorAccess] + n140112198356608 -> n140112197862736 + n140112197864752 [label=VectorAccess] + n140112198356608 -> n140112197864752 + n140112197863968 [label=VectorAccess] + n140112198356608 -> n140112197863968 + n140112197862288 [label=VectorAccess] + n140112198356104 [label=PropertyAccess] + n140112197862288 -> n140112198356104 + n140112197861504 [label=VectorAccess] + n140112198356496 [label="+"] + n140112197861504 -> n140112198356496 + n140112197863520 [label=VectorAccess] + n140112198356104 [label=PropertyAccess] + n140112197863520 -> n140112198356104 + n140112197862736 [label=VectorAccess] + n140112198356496 [label="+"] + n140112197862736 -> n140112198356496 + n140112197864752 [label=VectorAccess] + n140112198356104 [label=PropertyAccess] + n140112197864752 -> n140112198356104 + n140112197863968 [label=VectorAccess] + n140112198356496 [label="+"] + n140112197863968 -> n140112198356496 + n140112198589520 [label=0] + n140112198589968 [label=0] } diff --git a/examples/kernels.pdf b/examples/kernels.pdf index fcb7d7a2bb06df091f90c8279144a3f666c933d1..12844fa0ef674cc8aac18d7586a87a09b51f5b94 100644 Binary files a/examples/kernels.pdf and b/examples/kernels.pdf differ diff --git a/examples/lj_ns.cpp b/examples/lj_ns.cpp index c3a1cb4050284a43efb3264a757ed7591288ce43..169705c0928b4546786bb23109f1869a78a2c207 100644 --- a/examples/lj_ns.cpp +++ b/examples/lj_ns.cpp @@ -60,8 +60,6 @@ int main() { grid0_d2_min = a4; const double a5 = grid_buffer[5]; grid0_d2_max = a5; - fprintf(stdout, "CellListsStencilBuild\n"); - fflush(stdout); const double e462 = grid0_d0_max - grid0_d0_min; const double e463 = e462 / 2.8; const int e464 = ceil(e463) + 2; @@ -120,8 +118,7 @@ int main() { const int e452 = i14 % 20; const bool e453 = e452 == 0; if(e453) { - fprintf(stdout, "EnforcePBC\n"); - fflush(stdout); + pairs::copy_to_device(position) const double e115 = grid0_d0_max - grid0_d0_min; const double e122 = grid0_d0_max - grid0_d0_min; const double e129 = grid0_d1_max - grid0_d1_min; @@ -196,8 +193,6 @@ int main() { const int e454 = i14 % 20; const bool e455 = e454 == 0; if(e455) { - fprintf(stdout, "SetupPBC\n"); - fflush(stdout); resize = 1; while((resize > 0)) { resize = 0; @@ -501,8 +496,6 @@ int main() { } } } else { - fprintf(stdout, "UpdatePBC\n"); - fflush(stdout); const double e348 = grid0_d0_max - grid0_d0_min; const double e358 = grid0_d1_max - grid0_d1_min; const double e368 = grid0_d2_max - grid0_d2_min; @@ -551,8 +544,6 @@ int main() { const int e456 = i14 % 20; const bool e457 = e456 == 0; if(e457) { - fprintf(stdout, "CellListsBuild\n"); - fflush(stdout); resize = 1; while((resize > 0)) { resize = 0; @@ -612,8 +603,6 @@ int main() { const int e458 = i14 % 20; const bool e459 = e458 == 0; if(e459) { - fprintf(stdout, "NeighborListsBuild\n"); - fflush(stdout); resize = 1; while((resize > 0)) { resize = 0; @@ -687,8 +676,7 @@ int main() { } } } - fprintf(stdout, "PropertiesResetVolatile\n"); - fflush(stdout); + pairs::copy_to_device(force) for(int i13 = 0; i13 < nlocal; i13++) { const int e446 = i13 * 3; const double p73_0 = force[e446]; @@ -702,8 +690,7 @@ int main() { force[e449] = 0.0; force[e451] = 0.0; } - pairs::copy_to_device(position) - pairs::copy_to_device(force) + const int e460 = i14 + 1; for(int i0 = 0; i0 < nlocal; i0++) { const int e1 = i0 * neighborlist_capacity; const int e47 = i0 * 3; @@ -822,7 +809,6 @@ int main() { position[e109] = e91_2; } const int e461 = nlocal + npbc; - const int e460 = i14 + 1; pairs::vtk_write_data(ps, "output/test_local", 0, nlocal, e460); pairs::vtk_write_data(ps, "output/test_pbc", nlocal, e461, e460); } diff --git a/src/pairs/ir/block.py b/src/pairs/ir/block.py index ad8309a78179bf8f43b17791345df7c3ba18f542..ff759039c9e6ea30696fa06c713e1fdc4e056686 100644 --- a/src/pairs/ir/block.py +++ b/src/pairs/ir/block.py @@ -1,6 +1,37 @@ from pairs.ir.ast_node import ASTNode +def pairs_block(func): + def inner(*args, **kwargs): + sim = args[0].sim # self.sim + sim.clear_block() + func(*args, **kwargs) + return sim.block + + return inner + + +def pairs_device_block(func): + def inner(*args, **kwargs): + sim = args[0].sim # self.sim + sim.clear_block() + func(*args, **kwargs) + return KernelBlock(sim, sim.block) + + return inner + + +# TODO: Is this really useful? Or just pairs_block is enough? +def pairs_host_block(func): + def inner(*args, **kwargs): + sim = args[0].sim # self.sim + sim.clear_block() + func(*args, **kwargs) + return KernelBlock(sim, sim.block, run_on_host=True) + + return inner + + class Block(ASTNode): def __init__(self, sim, stmts): super().__init__(sim) @@ -37,12 +68,16 @@ class Block(ASTNode): return Block(block1.sim, block1.statements() + block2.statements()) def from_list(sim, block_list): - assert isinstance(block_list, list), "Passed argument is not a list!" + assert isinstance(block_list, list), "Given argument is not a list!" result_block = Block(sim, []) for block in block_list: - assert isinstance(block, Block), "Element in list is not Block!" - result_block = Block.merge_blocks(result_block, block) + if isinstance(block, Block): + result_block = Block.merge_blocks(result_block, block) + elif isinstance(block, KernelBlock): + result_block.add_statement(block) + else: + raise Exception("Element in list is not Block!") return result_block diff --git a/src/pairs/sim/arrays.py b/src/pairs/sim/arrays.py index 232964a9aea286747119b06e5c608590f22aa599..7167baf724ba560d3a01d7d354c21c6d3e0ba1c0 100644 --- a/src/pairs/sim/arrays.py +++ b/src/pairs/sim/arrays.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_block from pairs.ir.memory import Malloc from pairs.ir.arrays import ArrayDecl @@ -6,12 +7,10 @@ class ArraysDecl: def __init__(self, sim): self.sim = sim + @pairs_block def lower(self): - self.sim.clear_block() for a in self.sim.arrays.all(): if a.is_static(): ArrayDecl(self.sim, a) else: Malloc(self.sim, a, a.alloc_size(), True) - - return self.sim.block diff --git a/src/pairs/sim/cell_lists.py b/src/pairs/sim/cell_lists.py index 6e94efde7f7c7e1147c8b70ce374bab0fdc757e5..6657cd60da15e50164094150ac87e84c163c56d8 100644 --- a/src/pairs/sim/cell_lists.py +++ b/src/pairs/sim/cell_lists.py @@ -1,6 +1,7 @@ from functools import reduce import math from pairs.ir.bin_op import BinOp +from pairs.ir.block import pairs_device_block from pairs.ir.branches import Branch, Filter from pairs.ir.cast import Cast from pairs.ir.data_types import Type_Int @@ -30,68 +31,67 @@ class CellLists: class CellListsStencilBuild: - def __init__(self, cell_lists): + def __init__(self, sim, cell_lists): + self.sim = sim self.cell_lists = cell_lists + @pairs_device_block def lower(self): + sim = self.sim cl = self.cell_lists - grid = cl.sim.grid + grid = sim.grid index = None nall = 1 - cl.sim.clear_block() - cl.sim.add_statement(Print(cl.sim, "CellListsStencilBuild")) - - for d in range(cl.sim.ndims()): - cl.dim_ncells[d].set(Ceil(cl.sim, (grid.max(d) - grid.min(d)) / cl.spacing[d]) + 2) + for d in range(sim.ndims()): + cl.dim_ncells[d].set(Ceil(sim, (grid.max(d) - grid.min(d)) / cl.spacing[d]) + 2) nall *= cl.dim_ncells[d] cl.ncells.set(nall) - for resize in Resize(cl.sim, cl.ncells_capacity): - for _ in Filter(cl.sim, cl.ncells >= cl.ncells_capacity): + for resize in Resize(sim, cl.ncells_capacity): + for _ in Filter(sim, cl.ncells >= cl.ncells_capacity): resize.set(cl.ncells) - for _ in cl.sim.nest_mode(): + for _ in sim.nest_mode(): cl.nstencil.set(0) - for d in range(cl.sim.ndims()): + for d in range(sim.ndims()): nneigh = cl.nneighbor_cells[d] - for d_idx in For(cl.sim, -nneigh, nneigh + 1): + for d_idx in For(sim, -nneigh, nneigh + 1): index = (d_idx if index is None else index * cl.dim_ncells[d - 1] + d_idx) - if d == cl.sim.ndims() - 1: + if d == sim.ndims() - 1: cl.stencil[cl.nstencil].set(index) cl.nstencil.set(cl.nstencil + 1) - return cl.sim.block - class CellListsBuild: - def __init__(self, cell_lists): + def __init__(self, sim, cell_lists): + self.sim = sim self.cell_lists = cell_lists + @pairs_device_block def lower(self): + sim = self.sim cl = self.cell_lists - grid = cl.sim.grid - positions = cl.sim.property('position') + grid = sim.grid + positions = sim.property('position') - cl.sim.clear_block() - cl.sim.add_statement(Print(cl.sim, "CellListsBuild")) - for resize in Resize(cl.sim, cl.cell_capacity): - for c in For(cl.sim, 0, cl.ncells): + for resize in Resize(sim, cl.cell_capacity): + for c in For(sim, 0, cl.ncells): cl.cell_sizes[c].set(0) - for i in ParticleFor(cl.sim, local_only=False): + for i in ParticleFor(sim, local_only=False): cell_index = [ - Cast.int(cl.sim, (positions[i][d] - grid.min(d)) / cl.spacing[d]) - for d in range(0, cl.sim.ndims())] + Cast.int(sim, (positions[i][d] - grid.min(d)) / cl.spacing[d]) + for d in range(0, sim.ndims())] flat_idx = None - for d in range(0, cl.sim.ndims()): + for d in range(0, sim.ndims()): flat_idx = (cell_index[d] if flat_idx is None else flat_idx * cl.dim_ncells[d] + cell_index[d]) cell_size = cl.cell_sizes[flat_idx] - for _ in Filter(cl.sim, BinOp.and_op(flat_idx >= 0, flat_idx <= cl.ncells)): - for cond in Branch(cl.sim, cell_size >= cl.cell_capacity): + for _ in Filter(sim, BinOp.and_op(flat_idx >= 0, flat_idx <= cl.ncells)): + for cond in Branch(sim, cell_size >= cl.cell_capacity): if cond: resize.set(cell_size) else: @@ -99,5 +99,3 @@ class CellListsBuild: cl.particle_cell[i].set(flat_idx) cl.cell_sizes[flat_idx].set(cell_size + 1) - - return cl.sim.block diff --git a/src/pairs/sim/lattice.py b/src/pairs/sim/lattice.py index d2332c7ebe6e900ffb638f370ad07e96fab4db99..8977f8727f3a77fb18ba8f83901004580f359b02 100644 --- a/src/pairs/sim/lattice.py +++ b/src/pairs/sim/lattice.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_block from pairs.ir.data_types import Type_Vector from pairs.ir.loops import For @@ -10,6 +11,7 @@ class ParticleLattice(): self.props = props self.positions = positions + @pairs_block def lower(self): index = None loop_indexes = [] diff --git a/src/pairs/sim/neighbor_lists.py b/src/pairs/sim/neighbor_lists.py index f134c1db4f3dc99e0b5d9f03ace5a9600c2e0e51..13b568272bcea18de50bfaf51c8023912edf828e 100644 --- a/src/pairs/sim/neighbor_lists.py +++ b/src/pairs/sim/neighbor_lists.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_device_block from pairs.ir.branches import Branch, Filter from pairs.ir.data_types import Type_Int from pairs.ir.loops import For, ParticleFor, NeighborFor @@ -15,18 +16,18 @@ class NeighborLists: class NeighborListsBuild: - def __init__(self, neighbor_lists): + def __init__(self, sim, neighbor_lists): + self.sim = sim self.neighbor_lists = neighbor_lists + @pairs_device_block def lower(self): + sim = self.sim neighbor_lists = self.neighbor_lists - sim = neighbor_lists.sim cell_lists = neighbor_lists.cell_lists cutoff_radius = cell_lists.cutoff_radius position = sim.property('position') - sim.clear_block() - sim.add_statement(Print(sim, "NeighborListsBuild")) for resize in Resize(sim, neighbor_lists.capacity): for i in ParticleFor(sim): neighbor_lists.numneighs[i].set(0) @@ -42,5 +43,3 @@ class NeighborListsBuild: else: neighbor_lists.neighborlists[i][numneighs].set(j) neighbor_lists.numneighs[i].set(numneighs + 1) - - return sim.block diff --git a/src/pairs/sim/pbc.py b/src/pairs/sim/pbc.py index c480c4d3a5ebb58468c7ca2a43fdaa9abf7ad2c5..76886ade244874f692260de3981c95c5fbca1c16 100644 --- a/src/pairs/sim/pbc.py +++ b/src/pairs/sim/pbc.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_device_block from pairs.ir.branches import Branch, Filter from pairs.ir.data_types import Type_Int from pairs.ir.loops import For, ParticleFor @@ -19,11 +20,13 @@ class PBC: class UpdatePBC: - def __init__(self, pbc): + def __init__(self, sim, pbc): + self.sim = sim self.pbc = pbc + @pairs_device_block def lower(self): - sim = self.pbc.sim + sim = self.sim ndims = sim.ndims() grid = self.pbc.grid npbc = self.pbc.npbc @@ -32,29 +35,25 @@ class UpdatePBC: positions = self.pbc.sim.property('position') nlocal = self.pbc.sim.nlocal - sim.clear_block() - sim.add_statement(Print(sim, "UpdatePBC")) for i in For(sim, 0, npbc): # TODO: allow syntax: # positions[nlocal + i].set(positions[pbc_map[i]] + pbc_mult[i] * grid.length) for d in range(0, ndims): positions[nlocal + i][d].set(positions[pbc_map[i]][d] + pbc_mult[i][d] * grid.length(d)) - return sim.block - class EnforcePBC: - def __init__(self, pbc): + def __init__(self, sim, pbc): + self.sim = sim self.pbc = pbc + @pairs_device_block def lower(self): - sim = self.pbc.sim + sim = self.sim ndims = sim.ndims() grid = self.pbc.grid positions = sim.property('position') - sim.clear_block() - sim.add_statement(Print(sim, "EnforcePBC")) for i in ParticleFor(sim): # TODO: VecFilter? for d in range(0, ndims): @@ -64,15 +63,15 @@ class EnforcePBC: for _ in Filter(sim, positions[i][d] > grid.max(d)): positions[i][d].sub(grid.length(d)) - return sim.block - class SetupPBC: - def __init__(self, pbc): + def __init__(self, sim, pbc): + self.sim = sim self.pbc = pbc + @pairs_device_block def lower(self): - sim = self.pbc.sim + sim = self.sim ndims = sim.ndims() grid = self.pbc.grid cutneigh = self.pbc.cutneigh @@ -83,8 +82,6 @@ class SetupPBC: positions = self.pbc.sim.property('position') nlocal = self.pbc.sim.nlocal - sim.clear_block() - sim.add_statement(Print(sim, "SetupPBC")) for resize in Resize(sim, pbc_capacity): npbc.set(0) for d in range(0, ndims): @@ -120,5 +117,3 @@ class SetupPBC: positions[last_id][d_].set(positions[i][d_]) npbc.add(1) - - return sim.block diff --git a/src/pairs/sim/properties.py b/src/pairs/sim/properties.py index 7839eed72d759edf9cefcd6f8d708678b716d477..3892bbf372a876757af641d92c478f62f686fc4a 100644 --- a/src/pairs/sim/properties.py +++ b/src/pairs/sim/properties.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_block, pairs_device_block from pairs.ir.data_types import Type_Float, Type_Vector from pairs.ir.loops import ParticleFor from pairs.ir.memory import Malloc, Realloc @@ -12,10 +13,9 @@ class PropertiesAlloc: self.sim = sim self.realloc = realloc + @pairs_block def lower(self): capacity = sum(self.sim.properties.capacities) - - self.sim.clear_block() for p in self.sim.properties.all(): sizes = [] if p.type() == Type_Float: @@ -32,18 +32,13 @@ class PropertiesAlloc: Malloc(self.sim, p, reduce(operator.mul, sizes), True) RegisterProperty(self.sim, p, sizes) - return self.sim.block - class PropertiesResetVolatile: def __init__(self, sim): self.sim = sim + @pairs_device_block def lower(self): - self.sim.clear_block() - self.sim.add_statement(Print(self.sim, "PropertiesResetVolatile")) for i in ParticleFor(self.sim): for p in self.sim.properties.volatiles(): p[i].set(0.0) - - return self.sim.block diff --git a/src/pairs/sim/read_from_file.py b/src/pairs/sim/read_from_file.py index dc3355bb083a99094079a3aee17f0ab28f086651..6f16cb0556a235f7786952947ecbc164f820e7d0 100644 --- a/src/pairs/sim/read_from_file.py +++ b/src/pairs/sim/read_from_file.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_block from pairs.ir.data_types import Type_Float from pairs.ir.functions import Call_Int from pairs.ir.properties import PropertyList @@ -12,13 +13,11 @@ class ReadFromFile(): self.grid = MutableGrid(sim, sim.ndims()) self.grid_buffer = self.sim.add_static_array("grid_buffer", [self.sim.ndims() * 2], Type_Float) + @pairs_block def lower(self): - self.sim.clear_block() self.sim.nlocal.set(Call_Int(self.sim, "pairs::read_particle_data", [self.filename, self.grid_buffer, self.props, self.props.length()])) for d in range(self.sim.ndims()): self.grid.min(d).set(self.grid_buffer[d * 2 + 0]) self.grid.max(d).set(self.grid_buffer[d * 2 + 1]) - - return self.sim.block diff --git a/src/pairs/sim/simulation.py b/src/pairs/sim/simulation.py index 6ed9f8a36fb1cb74a3756e7dbe3ef1d6ba22807f..238e39242be802593b658b9d4a06eb1f83062fe6 100644 --- a/src/pairs/sim/simulation.py +++ b/src/pairs/sim/simulation.py @@ -186,10 +186,10 @@ class Simulation: def generate(self): timestep = Timestep(self, self.ntimesteps, [ - (EnforcePBC(self.pbc).lower(), 20), - (SetupPBC(self.pbc).lower(), UpdatePBC(self.pbc).lower(), 20), - (CellListsBuild(self.cell_lists).lower(), 20), - (NeighborListsBuild(self.neighbor_lists).lower(), 20), + (EnforcePBC(self, self.pbc).lower(), 20), + (SetupPBC(self, self.pbc).lower(), UpdatePBC(self, self.pbc).lower(), 20), + (CellListsBuild(self, self.cell_lists).lower(), 20), + (NeighborListsBuild(self, self.neighbor_lists).lower(), 20), PropertiesResetVolatile(self).lower(), self.kernels ]) @@ -198,7 +198,7 @@ class Simulation: body = Block.from_list(self, [ self.setups, - CellListsStencilBuild(self.cell_lists).lower(), + CellListsStencilBuild(self, self.cell_lists).lower(), VTKWrite(self, self.vtk_file, 0).lower(), timestep.as_block() ]) diff --git a/src/pairs/sim/variables.py b/src/pairs/sim/variables.py index 6869ed1578bf0f93a7e18af5993e34d6c3d96727..1d9168ffdedb5ae67b84b17ea9f6a81f65c3ff39 100644 --- a/src/pairs/sim/variables.py +++ b/src/pairs/sim/variables.py @@ -1,3 +1,4 @@ +from pairs.ir.block import pairs_block from pairs.ir.variables import VarDecl @@ -5,9 +6,7 @@ class VariablesDecl: def __init__(self, sim): self.sim = sim + @pairs_block def lower(self): - self.sim.clear_block() for v in self.sim.vars.all(): VarDecl(self.sim, v) - - return self.sim.block