Loading TODOdeleted 100644 → 0 +0 −50 Original line number Diff line number Diff line TODO: - pri zpracovani dat z MRI jde vetsinou o prilis male snimky na optimalni vyuziti GPU (ve 2D). Kdyby se ale pomoci CUDA streamu provadelo vice vypoctu soucasne, mohlo by se dosahnout mnohem lepsiho urychleni TODO: - objekt NeighborEnities by mohl vracet i lokalni index dane neighbor entity, coz je potreba pro spravne vkladani maticovych elementu, ted se tyto indexy doplnuji rucne podle znalosti indexovani v gridu. Jelikoz neighbor entities mohou znat typ okoli/vzor numerickeho schematu, dokazaly by se prizpusobit i ruznym patternum. To by pak vyresilo i skladani operatoru s ruznymi patterny. TODO: - pridat execution policy https://github.com/harrism/hemi/blob/master/hemi/execution_policy.h TODO: - implementovat tnlMixedGridBoundaryConditions, kde by se pro kazdou stranu gridu definoval jiny zvlastni typ okrajovych podminek - dalo by se tim resit i skladani zpetnych a doprednych diferenci u nelinearni difuze, kdy je potreba napr. dopredne diference vycislit i na leve a dolni hranici 2D gridu - tohle resit spis primym rozepsanim schematu TODO: - implementovat tuple pro snazsi a snad efektivnejsi prenos dat na GPU - nebylo by nutne definovat pomocne datove structury pro traverser - data by se na hostu preskupila do souvisleho bloku dat a ten se prenesl najednou - JK: tohle je zbytecny resit, od toho je lambda capture - staci prepsat traversery obecne pomoci ParallelFor TODO: CUDA unified memory - pretizit operator new s cudaMallocManaged, pak by bylo mozne vytvaret CUDA objekty pristupne pro host a device - v TNL solveru by pak vlastne jen stacilo vytvaret objekty pomoci new - zrejme bude nutne pretizit i delete - pokud jde o MeshDependentData, stacilo by, aby uzivatel pretizil operator new a delete. Pokud by to neudelal, mohlo by se s nimi pracovat postaru - bylo by dobre to obalit unique poinetry, aby se nemusela delat dealokace rucne TODO: implementace maticovych resicu - Gaussova eliminace - IDR metody existujici solvery ktere je treba dodelat - CG (nema predpodmineni, otestovat) - SOR, jacobi (nejsou paralelni, otestovat ze funguji pro vsechny typy matic) TODO: Nahradit sablonovy parametr dimenze sitove entity za typ entity. Pak by se mohlo zkusit, napriklad u gridu odvozovat entity, ktere obsahuji predpocitane indexy pro dopredne, zpetne, nebo centralni diference. Uzivatel by si mohl definovat vlastni entity. Mohlo by to zvysit efektivitu. U nestrukturovanych siti by se do entit mohly doplnovat ukazatele na struktury s dalsimi informacemi jako objemy nebo delky entit apod. za tim ucelem nahradit setIndex v grid entity za update(), aby to bylo obecnejsi TODO: metodu pro String pro nahrazeni napr. podretezce XXXXX indexem 00001 tj. uXXXXX.bin -> u00001.bin to by melo byt robustnejsi, nez doposavadni pristup Loading
TODOdeleted 100644 → 0 +0 −50 Original line number Diff line number Diff line TODO: - pri zpracovani dat z MRI jde vetsinou o prilis male snimky na optimalni vyuziti GPU (ve 2D). Kdyby se ale pomoci CUDA streamu provadelo vice vypoctu soucasne, mohlo by se dosahnout mnohem lepsiho urychleni TODO: - objekt NeighborEnities by mohl vracet i lokalni index dane neighbor entity, coz je potreba pro spravne vkladani maticovych elementu, ted se tyto indexy doplnuji rucne podle znalosti indexovani v gridu. Jelikoz neighbor entities mohou znat typ okoli/vzor numerickeho schematu, dokazaly by se prizpusobit i ruznym patternum. To by pak vyresilo i skladani operatoru s ruznymi patterny. TODO: - pridat execution policy https://github.com/harrism/hemi/blob/master/hemi/execution_policy.h TODO: - implementovat tnlMixedGridBoundaryConditions, kde by se pro kazdou stranu gridu definoval jiny zvlastni typ okrajovych podminek - dalo by se tim resit i skladani zpetnych a doprednych diferenci u nelinearni difuze, kdy je potreba napr. dopredne diference vycislit i na leve a dolni hranici 2D gridu - tohle resit spis primym rozepsanim schematu TODO: - implementovat tuple pro snazsi a snad efektivnejsi prenos dat na GPU - nebylo by nutne definovat pomocne datove structury pro traverser - data by se na hostu preskupila do souvisleho bloku dat a ten se prenesl najednou - JK: tohle je zbytecny resit, od toho je lambda capture - staci prepsat traversery obecne pomoci ParallelFor TODO: CUDA unified memory - pretizit operator new s cudaMallocManaged, pak by bylo mozne vytvaret CUDA objekty pristupne pro host a device - v TNL solveru by pak vlastne jen stacilo vytvaret objekty pomoci new - zrejme bude nutne pretizit i delete - pokud jde o MeshDependentData, stacilo by, aby uzivatel pretizil operator new a delete. Pokud by to neudelal, mohlo by se s nimi pracovat postaru - bylo by dobre to obalit unique poinetry, aby se nemusela delat dealokace rucne TODO: implementace maticovych resicu - Gaussova eliminace - IDR metody existujici solvery ktere je treba dodelat - CG (nema predpodmineni, otestovat) - SOR, jacobi (nejsou paralelni, otestovat ze funguji pro vsechny typy matic) TODO: Nahradit sablonovy parametr dimenze sitove entity za typ entity. Pak by se mohlo zkusit, napriklad u gridu odvozovat entity, ktere obsahuji predpocitane indexy pro dopredne, zpetne, nebo centralni diference. Uzivatel by si mohl definovat vlastni entity. Mohlo by to zvysit efektivitu. U nestrukturovanych siti by se do entit mohly doplnovat ukazatele na struktury s dalsimi informacemi jako objemy nebo delky entit apod. za tim ucelem nahradit setIndex v grid entity za update(), aby to bylo obecnejsi TODO: metodu pro String pro nahrazeni napr. podretezce XXXXX indexem 00001 tj. uXXXXX.bin -> u00001.bin to by melo byt robustnejsi, nez doposavadni pristup