void MetricBackend_INTEL_perfquery::endQuery(QueryBoundary boundary) { if (!queryInProgress) return; if (!supported || !numPasses) return; if (boundary == QUERY_BOUNDARY_CALL) return; if ((boundary == QUERY_BOUNDARY_FRAME) && !perFrame) return; if ((boundary == QUERY_BOUNDARY_DRAWCALL) && perFrame) return; glEndPerfQueryINTEL(curQuery); freeQuery(curEvent++); queryInProgress = false; }
void common_query_free(ADIOS_QUERY* q) { if (q == NULL) { return; } if (q->deleteSelectionWhenFreed) { common_read_selection_delete(q->sel); } // Only call a specialized free method if this query has been evaluated using // a particular query engine! Otherwise, if a query is created but never // evaluated, this will cause segfaults since no query method initialized the query if (q->method != ADIOS_QUERY_METHOD_UNKNOWN) { assert(q->method < ADIOS_QUERY_METHOD_COUNT); if (query_hooks[q->method].adios_query_free_fn != NULL) { query_hooks[q->method].adios_query_free_fn(q); } } freeQuery(q); }
int main(int argc, char **argv) { PixErr err = {0}; char *infile_str = 0; char *outfile_str = 0; char *queryfile_str = 0; char *query_str = 0; if(!parseArgs(argc, argv, &infile_str, &outfile_str, &queryfile_str, &query_str, &err)) { fprintf(stderr,"%s\n",err.info); return 1; } Query query = {0}; if(!parseQuery(query_str, &query, &err)) { fprintf(stderr,"%s\n",err.info); return 1; } PixImg in_img = {0}; if(infile_str) { if(!readFile(infile_str, &in_img, &err)) { fprintf(stderr,"%s\n",err.info); return 1; } } PixImg out_img = {0}; if(!executeQuery(&query, &in_img, &out_img, &err)) { fprintf(stderr,"%s\n",err.info); return 1; } if(!writeFile(outfile_str, &out_img, &err)) { fprintf(stderr,"%s\n",err.info); return 1; } //to please valgrind freeQuery(&query); free(in_img.data); free(out_img.data); return 0; }
int main(int argc, char **argv) { PixErr err; Query query = {0}; QueryInit *init = 0; QueryProcedure *pro = 0; QuerySelection *sel = 0; QueryOperation *op = 0; QueryExpression *exp = 0; QueryExpression *expa = 0; QueryExpression *expb = 0; QueryValue *val = 0; QueryMember *mem = 0; QueryConstant *con = 0; char *q_str = 0; int i = 0; //TEST 0 q_str = "COPY; SELECT WHERE COL < 100; OPERATE SET A = 0;"; //simple printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); init = &query.init; if(init->type != QUERY_INIT_TYPE_COPY) ERR("Init type incorrect"); if(query.n_procedures != 1) ERR("Wrong number procedures"); pro = query.procedures; if(pro->n_selections != 1) ERR("Wrong num selections"); sel = pro->selections; if(sel->selecting != QUERY_TARGET_IN) ERR("Wrong selection target"); exp = &sel->exp; if(exp->type != QUERY_EXPRESSION_TYPE_LT) ERR("Wrong selection expression type"); expa = exp->a; if(expa->type != QUERY_EXPRESSION_TYPE_VALUE) ERR("Wrong selection expression type for COL"); val = &expa->v; if(val->type != QUERY_VALUE_TYPE_CONSTANT) ERR("Wrong value type for COL"); con = &val->constant; if(con->type != QUERY_CONSTANT_TYPE_COL) ERR("Wrong constant type for COL"); expb = exp->b; if(expb->type != QUERY_EXPRESSION_TYPE_VALUE) ERR("Wrong selection expression type for 100"); val = &expb->v; if(val->type != QUERY_VALUE_TYPE_CONSTANT) ERR("Wrong value type for 100"); con = &val->constant; if(con->type != QUERY_CONSTANT_TYPE_NUMBER) ERR("Wrong constant type for 100"); if(con->value != 100) ERR("Wrong constant value for 100"); if(pro->n_operations != 1) ERR("Wrong num operations"); op = pro->operations; if(op->operating != QUERY_TARGET_IN) ERR("Wrong operating target"); mem = &op->lval; if(mem->type != QUERY_MEMBER_TYPE_A) ERR("Wrong operation member type"); if(mem->target != QUERY_TARGET_FALLBACK) ERR("Wrong operation member target"); if(mem->row != NULL) ERR("Wrong operation member row"); if(mem->col != NULL) ERR("Wrong operation member col"); exp = &op->rval; if(exp->type != QUERY_EXPRESSION_TYPE_VALUE) ERR("Wrong operation expression type for 0"); val = &exp->v; if(val->type != QUERY_VALUE_TYPE_CONSTANT) ERR("Wrong value type for 0"); con = &val->constant; if(con->type != QUERY_CONSTANT_TYPE_NUMBER) ERR("Wrong constant type for 0"); if(con->value != 0) ERR("Wrong constant value for 0"); freeQuery(&query); printf("Passed\n"); i++; //TEST 1 q_str = "OPERATE SET R=0;"; //minimal printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 2 q_str = "OPERATE SET R=R-100;"; //spacing printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 3 q_str = "OPERATE SET R = R+10/2;"; //compound printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 4 q_str = "OPERATE SET R = (R+10)/2;"; //parens + order of operations printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 5 q_str = "OPERATE SET R = ((R))/2;"; //redundant/odd parens printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 6 q_str = "SELECT WHERE COL%100 != 0; OPERATE SET R = 0;"; //compound delimeter token (!=,<=,etc...) printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 7 q_str = "SELECT WHERE NOT COL %20 > 1; OPERATE SET R = 0;"; //not printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 8 q_str = "SELECT WHERE SIN(COL) < 0; OPERATE SET R = 0;"; //sin printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 9 q_str = "SELECT WHERE COL%100 = 0 OR ROW % 100 = 0; OPERATE SET R = 255-R;"; //OR printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 10 q_str = "SELECT WHERE COL % 10 = 0; SELECT WHERE ROW % 10 = 0; OPERATE SET R = B; OPERATE SET B = G;"; //compound select, compound operate printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 11 q_str = "OPERATE SET R = B; OPERATE SET A = 255-((R+G+B)/3);"; //compound operate with complex operations printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 12 q_str = "SELECT WHERE R < B; OPERATE SET R = B; SELECT WHERE G < B; OPERATE SET G = B;"; //multiple procedures printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 13 q_str = "SELECT WHERE IN.R < IN.B; OPERATE SET R = OUT.B;"; //access targets printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 14 q_str = "WHITE; SELECT WHERE COL%100 < 50; OPERATE SET R = R; OPERATE SET G = G; OPERATE SET B = B; SELECT WHERE OUT.R = 255 AND OUT.G = 255 AND OUT.B = 255; OPERATE SET G = 255-G;"; //weird long compound printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 15 q_str = "SELECT WHERE IN[0,COL].R < 100; OPERATE SET R = 0;"; //simple accessor printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; //TEST 16 q_str = "SELECT WHERE IN[ROW-1,COL].R < 100; OPERATE SET R = 0;"; //expression in accessor printf("Test %d: %s\n",i,q_str); if(!parseQuery(q_str, &query, &err)) ERR("%s",err.info); freeQuery(&query); printf("Passed\n"); i++; return 0; }