int main(int argc, char** argv) { cuInit(0); DevicePtr device; CUresult result = CreateCuDevice(0, &device); ContextPtr context; result = CreateCuContext(device, 0, &context); scanEngine_t engine; scanStatus_t status = scanCreateEngine( "../../src/mgpuscan/globalscan.cubin", &engine); int count = 1<< 19; std::vector<int> vals(count); std::tr1::uniform_int<int> r(0, 15); for(int i(0); i < count; ++i) vals[i] = r(mt19937); DeviceMemPtr deviceMem; result = context->MemAlloc(vals, &deviceMem); uint scanTotal; status = scanArray(engine, deviceMem->Handle(), count, &scanTotal, false); std::vector<int> deviceScan; deviceMem->ToHost(deviceScan); std::vector<int> hostScan(count); for(int i(1); i < count; ++i) { hostScan[i] = hostScan[i - 1] + vals[i - 1]; } scanDestroyEngine(engine); bool success = hostScan == deviceScan; if(success) printf("Global scan success.\n"); else printf("Global scan failure.\n"); return 0; }
int main(int argc, char *argv[]) { unsigned char *router6 = NULL; // roteador da rota parametrizada unsigned char *multicast6, // endereco do grupo multicast de destino *routers[2]; int rawmode = 0; // informa se o "raw mode" foi ativado ou nao char *interface; // nome da interface de analise // verifica se foi pedida as instrucoes de uso if (argc < 2 || strncmp(argv[1], "-h", 2) == 0) help(argv[0]); // verifica se foi selecionado para funcionar em "raw mode" if (strcmp(argv[1], "-r") == 0) { thc_ipv6_rawmode(1); rawmode = 1; argv++; argc--; } // nome da interface de captura interface = argv[1]; // pode ser informado um grupo multicast para se limitar o escopo do scan if (argv[2] != NULL && argc > 2) multicast6 = thc_resolve6(argv[2]); else // caso nao tenha sido informado eh utilizado o endereco de multicast[broadcast] padrao multicast6 = thc_resolve6("ff02::1"); // caso seja passado alguma rota , setar os roteadores if (argv[3] != NULL && argc > 3) { router6 = thc_resolve6(argv[3]); routers[0] = multicast6; routers[1] = NULL; multicast6 = router6; // switch destination and router } hostScan(rawmode, interface, multicast6, router6, routers); return 0; }