コード例 #1
0
ファイル: kernel.c プロジェクト: ajithcj/miaow
struct evg_opencl_kernel_t *evg_opencl_kernel_create()
{
	struct evg_opencl_kernel_t *kernel;
	int i;

	/* Initialize */
	kernel = xcalloc(1, sizeof(struct evg_opencl_kernel_t));
	kernel->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_kernel);
	kernel->ref_count = 1;
	kernel->arg_list = list_create();

	/* Create the UAV-to-physical-address lookup lists */
	kernel->uav_read_list = list_create_with_size(12); /* FIXME Repalce with MAX_UAVS? */
	kernel->uav_write_list = list_create_with_size(12); /* FIXME Repalce with MAX_UAVS? */
	kernel->constant_buffer_list = list_create_with_size(25); /* For constant buffers (128 to 153) */
	/* FIXME Replace with new list functionality */
	for (i = 0; i < 12; i++) 
	{
		list_add(kernel->uav_read_list, NULL);
		list_add(kernel->uav_write_list, NULL);
	}
	for (i = 0; i < 25; i++) 
		list_add(kernel->constant_buffer_list, NULL);

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, kernel);
	return kernel;
}
コード例 #2
0
ファイル: platform.c プロジェクト: xianggong/multi2sim42
struct evg_opencl_platform_t *evg_opencl_platform_create(EvgEmu *emu) {
  struct evg_opencl_platform_t *platform;

  /* Initialize */
  platform = xcalloc(1, sizeof(struct evg_opencl_platform_t));
  platform->id = evg_opencl_repo_new_object_id(emu->opencl_repo,
                                               evg_opencl_object_platform);
  platform->emu = emu;

  /* Return */
  evg_opencl_repo_add_object(emu->opencl_repo, platform);
  return platform;
}
コード例 #3
0
ファイル: sampler.c プロジェクト: xianggong/multi2sim42
struct evg_opencl_sampler_t *evg_opencl_sampler_create() {
  struct evg_opencl_sampler_t *sampler;

  /* Initialize */
  sampler = xcalloc(1, sizeof(struct evg_opencl_sampler_t));
  sampler->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
                                              evg_opencl_object_sampler);
  sampler->ref_count = 1;

  /* Return */
  evg_opencl_repo_add_object(evg_emu->opencl_repo, sampler);
  return sampler;
}
コード例 #4
0
/* Create a context */
struct evg_opencl_context_t *evg_opencl_context_create()
{
	struct evg_opencl_context_t *context;

	/* Initialize */
	context = xcalloc(1, sizeof(struct evg_opencl_context_t));
	context->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_context);
	context->ref_count = 1;

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, context);
	return context;
}
コード例 #5
0
ファイル: device.c プロジェクト: qwestduck/multi2sim-package
/* Create a device */
struct evg_opencl_device_t *evg_opencl_device_create(EvgEmu *emu)
{
	struct evg_opencl_device_t *device;

	/* Initialize */
	device = xcalloc(1, sizeof(struct evg_opencl_device_t));
	device->id = evg_opencl_repo_new_object_id(emu->opencl_repo,
		evg_opencl_object_device);
	device->emu = emu;

	/* Return */
	evg_opencl_repo_add_object(emu->opencl_repo, device);
	return device;
}
コード例 #6
0
ファイル: opencl-mem.c プロジェクト: filippo-ceid/multi2sim
struct evg_opencl_mem_t *evg_opencl_mem_create()
{
	struct evg_opencl_mem_t *mem;

	/* Initialize */
	mem = xcalloc(1, sizeof(struct evg_opencl_mem_t));
	mem->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_mem);
	mem->ref_count = 1;

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, mem);
	return mem;
}
コード例 #7
0
/* Create a command queue */
struct evg_opencl_command_queue_t *evg_opencl_command_queue_create()
{
	struct evg_opencl_command_queue_t *command_queue;

	/* Initialize */
	command_queue = xcalloc(1, sizeof(struct evg_opencl_command_queue_t));
	command_queue->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_command_queue);
	command_queue->ref_count = 1;
	command_queue->command_list = linked_list_create();

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, command_queue);
	return command_queue;
}
コード例 #8
0
/* Create a device */
struct evg_opencl_device_t *evg_opencl_device_create()
{
	struct evg_opencl_device_t *device;

	/* Allocate */
	device = calloc(1, sizeof(struct evg_opencl_device_t));
	if (!device)
		fatal("%s: out of memory", __FUNCTION__);

	/* Initialize */
	device->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_device);

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, device);
	return device;
}
コード例 #9
0
struct evg_opencl_sampler_t *evg_opencl_sampler_create()
{
	struct evg_opencl_sampler_t *sampler;

	/* Allocate */
	sampler = calloc(1, sizeof(struct evg_opencl_sampler_t));
	if (!sampler)
		fatal("%s: out of memory", __FUNCTION__);

	/* Initialize */
	sampler->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_sampler);
	sampler->ref_count = 1;

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, sampler);
	return sampler;
}
コード例 #10
0
ファイル: program.c プロジェクト: xianggong/multi2sim42
struct evg_opencl_program_t *evg_opencl_program_create() {
  struct evg_opencl_program_t *program;
  int i;

  /* Initialize */
  program = xcalloc(1, sizeof(struct evg_opencl_program_t));
  program->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
                                              evg_opencl_object_program);
  program->ref_count = 1;

  /* Constant buffers encoded in ELF file */
  program->constant_buffer_list = list_create_with_size(25);
  for (i = 0; i < 25; i++) list_add(program->constant_buffer_list, NULL);

  /* Return */
  evg_opencl_repo_add_object(evg_emu->opencl_repo, program);
  return program;
}
コード例 #11
0
ファイル: opencl-mem.c プロジェクト: Peilong/multi2sim-4.0-hc
struct evg_opencl_mem_t *evg_opencl_mem_create()
{
	struct evg_opencl_mem_t *mem;

	/* Allocate */
	mem = calloc(1, sizeof(struct evg_opencl_mem_t));
	if (!mem)
		fatal("%s: out of memory", __FUNCTION__);

	/* Initialize */
	mem->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_mem);
	mem->ref_count = 1;

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, mem);
	return mem;
}
コード例 #12
0
/* Create a command queue */
struct evg_opencl_command_queue_t *evg_opencl_command_queue_create()
{
	struct evg_opencl_command_queue_t *command_queue;

	/* Allocate */
	command_queue = calloc(1, sizeof(struct evg_opencl_command_queue_t));
	if (!command_queue)
		fatal("%s: out of memory", __FUNCTION__);

	/* Initialize */
	command_queue->id = evg_opencl_repo_new_object_id(evg_emu->opencl_repo,
		evg_opencl_object_command_queue);
	command_queue->ref_count = 1;
	command_queue->command_list = linked_list_create();

	/* Return */
	evg_opencl_repo_add_object(evg_emu->opencl_repo, command_queue);
	return command_queue;
}