1 /*
2 * Copyright 2010 INRIA Saclay
3 *
4 * Use of this software is governed by the MIT license
5 *
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
8 * 91893 Orsay, France
9 */
10
11 #include <ctype.h>
12 #include <limits.h>
13 #include <string.h>
14
15 #include "cuda_common.h"
16 #include "ppcg.h"
17
18 /* Open the host .cu file and the kernel .hu and .cu files for writing.
19 * Add the necessary includes.
20 */
cuda_open_files(struct cuda_info * info,const char * input)21 void cuda_open_files(struct cuda_info *info, const char *input)
22 {
23 char name[PATH_MAX];
24 int len;
25
26 len = ppcg_extract_base_name(name, input);
27
28 strcpy(name + len, "_host.cu");
29 info->host_c = fopen(name, "w");
30
31 strcpy(name + len, "_kernel.cu");
32 info->kernel_c = fopen(name, "w");
33
34 strcpy(name + len, "_kernel.hu");
35 info->kernel_h = fopen(name, "w");
36 fprintf(info->host_c, "#include <assert.h>\n");
37 fprintf(info->host_c, "#include <stdio.h>\n");
38 fprintf(info->host_c, "#include \"%s\"\n", name);
39 fprintf(info->kernel_c, "#include \"%s\"\n", name);
40 fprintf(info->kernel_h, "#include \"cuda.h\"\n\n");
41 }
42
43 /* Close all output files.
44 */
cuda_close_files(struct cuda_info * info)45 void cuda_close_files(struct cuda_info *info)
46 {
47 fclose(info->kernel_c);
48 fclose(info->kernel_h);
49 fclose(info->host_c);
50 }
51