void ElementFile::optimizeOrdering() { if (numElements < 1) return; util::ValueAndIndexList item_list(numElements); index_t* index = new index_t[numElements]; ElementFile* out = new ElementFile(etype, MPIInfo); out->allocTable(numElements); #pragma omp parallel for for (index_t e = 0; e < numElements; e++) { std::pair<index_t,index_t> entry(Nodes[INDEX2(0, e, numNodes)], e); for (int i = 1; i < numNodes; i++) entry.first = std::min(entry.first, Nodes[INDEX2(i, e, numNodes)]); item_list[e] = entry; } util::sortValueAndIndex(item_list); #pragma omp parallel for for (index_t e = 0; e < numElements; e++) index[e] = item_list[e].second; out->gather(index, this); swapTable(out); delete out; delete[] index; }
void CKeyMgr::ProcessingSequence() { /* 1. 테이블을 바꾼다 2. 현재 테이블을 모두 KS_None으로 세팅 3. KeyCheck를 통해 눌린 상태를 조사한다 */ swapTable(); memset(curr_KeyTable, KS_None, sizeof(curr_KeyTable)); KeyCheck(); }