aboutsummaryrefslogtreecommitdiff
path: root/src/diffraction-gpu.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2010-02-20 22:25:39 +0100
committerThomas White <taw@bitwiz.org.uk>2010-02-20 22:26:22 +0100
commitcc0db0054d76474e55393c05806f715a0e2f6d08 (patch)
treef7c357a2b08507bcddf080ff8c8594f1ef567f23 /src/diffraction-gpu.c
parent0fab44d676aacde5e04156ad2b2e24a580bfab18 (diff)
Move OpenCL utility stuff to a separate module
Diffstat (limited to 'src/diffraction-gpu.c')
-rw-r--r--src/diffraction-gpu.c101
1 files changed, 1 insertions, 100 deletions
diff --git a/src/diffraction-gpu.c b/src/diffraction-gpu.c
index 7896c2d5..1da23e91 100644
--- a/src/diffraction-gpu.c
+++ b/src/diffraction-gpu.c
@@ -22,6 +22,7 @@
#include "cell.h"
#include "diffraction.h"
#include "sfac.h"
+#include "cl-utils.h"
#define SAMPLING (4)
@@ -42,109 +43,9 @@ struct gpu_context
cl_mem diff;
size_t diff_size;
-
};
-static const char *clError(cl_int err)
-{
- switch ( err ) {
- case CL_SUCCESS : return "no error";
- case CL_INVALID_PLATFORM : return "invalid platform";
- case CL_INVALID_KERNEL : return "invalid kernel";
- case CL_INVALID_ARG_INDEX : return "invalid argument index";
- case CL_INVALID_ARG_VALUE : return "invalid argument value";
- case CL_INVALID_MEM_OBJECT : return "invalid memory object";
- case CL_INVALID_SAMPLER : return "invalid sampler";
- case CL_INVALID_ARG_SIZE : return "invalid argument size";
- case CL_INVALID_COMMAND_QUEUE : return "invalid command queue";
- case CL_INVALID_CONTEXT : return "invalid context";
- case CL_INVALID_VALUE : return "invalid value";
- case CL_INVALID_EVENT_WAIT_LIST : return "invalid wait list";
- case CL_MAP_FAILURE : return "map failure";
- case CL_MEM_OBJECT_ALLOCATION_FAILURE : return "object allocation failure";
- case CL_OUT_OF_HOST_MEMORY : return "out of host memory";
- case CL_OUT_OF_RESOURCES : return "out of resources";
- case CL_INVALID_KERNEL_NAME : return "invalid kernel name";
- case CL_INVALID_KERNEL_ARGS : return "invalid kernel arguments";
- default :
- ERROR("Error code: %i\n", err);
- return "unknown error";
- }
-}
-
-
-static cl_device_id get_first_dev(cl_context ctx)
-{
- cl_device_id dev;
- cl_int r;
-
- r = clGetContextInfo(ctx, CL_CONTEXT_DEVICES, sizeof(dev), &dev, NULL);
- if ( r != CL_SUCCESS ) {
- ERROR("Couldn't get device\n");
- return 0;
- }
-
- return dev;
-}
-
-
-static void show_build_log(cl_program prog, cl_device_id dev)
-{
- cl_int r;
- char log[4096];
- size_t s;
-
- r = clGetProgramBuildInfo(prog, dev, CL_PROGRAM_BUILD_LOG, 4096, log,
- &s);
-
- STATUS("%s\n", log);
-}
-
-
-static cl_program load_program(const char *filename, cl_context ctx,
- cl_device_id dev, cl_int *err)
-{
- FILE *fh;
- cl_program prog;
- char *source;
- size_t len;
- cl_int r;
-
- fh = fopen(filename, "r");
- if ( fh == NULL ) {
- ERROR("Couldn't open '%s'\n", filename);
- *err = CL_INVALID_PROGRAM;
- return 0;
- }
- source = malloc(16384);
- len = fread(source, 1, 16383, fh);
- fclose(fh);
- source[len] = '\0';
-
- prog = clCreateProgramWithSource(ctx, 1, (const char **)&source,
- NULL, err);
- if ( *err != CL_SUCCESS ) {
- ERROR("Couldn't load source\n");
- return 0;
- }
-
- r = clBuildProgram(prog, 0, NULL,
- "-Werror -I"DATADIR"/crystfel/ -cl-no-signed-zeros",
- NULL, NULL);
- if ( r != CL_SUCCESS ) {
- ERROR("Couldn't build program '%s'\n", filename);
- show_build_log(prog, dev);
- *err = r;
- return 0;
- }
-
- free(source);
- *err = CL_SUCCESS;
- return prog;
-}
-
-
void get_diffraction_gpu(struct gpu_context *gctx, struct image *image,
int na, int nb, int nc, int no_sfac)
{