Esempio n. 1
0
static void print_game_chips(FILE *out, const game_driver *game, const machine_config *config)
{
	const device_config *device;

	/* iterate over CPUs */
	for (device = cpu_first(config); device != NULL; device = cpu_next(device))
	{
		fprintf(out, "\t\t<chip");
		fprintf(out, " type=\"cpu\"");
		fprintf(out, " tag=\"%s\"", xml_normalize_string(device->tag));
		fprintf(out, " name=\"%s\"", xml_normalize_string(device_get_name(device)));
		fprintf(out, " clock=\"%d\"", device->clock);
		fprintf(out, "/>\n");
	}

	/* iterate over sound chips */
	for (device = sound_first(config); device != NULL; device = sound_next(device))
	{
		fprintf(out, "\t\t<chip");
		fprintf(out, " type=\"audio\"");
		fprintf(out, " tag=\"%s\"", xml_normalize_string(device->tag));
		fprintf(out, " name=\"%s\"", xml_normalize_string(device_get_name(device)));
		if (device->clock != 0)
			fprintf(out, " clock=\"%d\"", device->clock);
		fprintf(out, "/>\n");
	}
}
// CPU threads-----------------------------------------------------------------
void run_cpu_threads(XYZ *in, XYZ *outp, int n_tasks, float alpha, int n_threads, int n_gpu_threads, int in_size_i, int in_size_j,
    int out_size_i, int out_size_j
#ifdef CUDA_8_0
    , std::atomic_int *worklist
#endif
    ) {

    std::vector<std::thread> cpu_threads;
    for(int k = 0; k < n_threads; k++) {
        cpu_threads.push_back(std::thread([=]() {

#ifdef CUDA_8_0
            Partitioner p = partitioner_create(n_tasks, alpha, k, n_threads, worklist);
#else
            Partitioner p = partitioner_create(n_tasks, alpha, k, n_threads);
#endif

            const int wg_in_J = divceil(out_size_j, n_gpu_threads);
            const int wg_in_I = divceil(out_size_i, n_gpu_threads);

            for(int t = cpu_first(&p); cpu_more(&p); t = cpu_next(&p)) {
                const int my_s1 = t / wg_in_J;
                const int my_s0 = t % wg_in_J;

                int Row = my_s1 * n_gpu_threads;
                int Col = my_s0 * n_gpu_threads;
                T   bi;
                T   bj;
                T   mui, muj;

                for(int i = Row; i < Row + n_gpu_threads; i++) {
                    mui = i / (T)(out_size_i - 1);
                    for(int j = Col; j < Col + n_gpu_threads; j++) {
                        muj = j / (T)(out_size_j - 1);
                        if(i < out_size_i && j < out_size_j) {
                            XYZ out = {0, 0, 0};
#pragma unroll
                            for(int ki = 0; ki <= in_size_i; ki++) {
                                bi = BezierBlend(ki, mui, in_size_i);
#pragma unroll
                                for(int kj = 0; kj <= in_size_j; kj++) {
                                    bj = BezierBlend(kj, muj, in_size_j);
                                    out.x += (in[ki * (in_size_j + 1) + kj].x * bi * bj);
                                    out.y += (in[ki * (in_size_j + 1) + kj].y * bi * bj);
                                    out.z += (in[ki * (in_size_j + 1) + kj].z * bi * bj);
                                }
                            }
                            outp[i * out_size_j + j] = out;
                        }
                    }
                }
            }

        }));
    }
    std::for_each(cpu_threads.begin(), cpu_threads.end(), [](std::thread &t) { t.join(); });
}
Esempio n. 3
0
int	game(t_data *data, t_window *w)
{
  int	check;

  if (data->player == 1)
    check = player_first(data, w);
  else if (data->player == 2)
    check = cpu_first(data, w);
}