#include "ocl_caching.h"
+#include <assert.h>
+
#include <cstdio>
#include <string>
*/
static void fclose_wrapper(FILE *fp)
{
+ assert(fp != NULL);
fclose(fp);
}
{
GMX_THROW(InternalError(formatString("Could not get OpenCL device name, error was %s", ocl_get_error_string(cl_error).c_str())));
}
- std::string cacheFilename = "OpenCL_cache_" + kernelFilename + "_" + deviceName;
+
+ std::string cacheFilename = "OCL-cache";
+ /* remove the kernel source suffix */
+ cacheFilename += "_" + stripSuffixIfPresent(kernelFilename, ".cl");
+ /* the device name often contains spaces, we don't like those */
+ cacheFilename += "_" + replaceAll(stripString(deviceName), " ", "-");
cacheFilename = replaceAll(cacheFilename, ".", "_");
cacheFilename += ".bin";
+
return cacheFilename;
}
std::string cacheFilename;
if (useBuildCache)
{
- cacheFilename = makeBinaryCacheFilename(kernelFilename, deviceId);
+ cacheFilename = makeBinaryCacheFilename(kernelBaseFilename, deviceId);
}
/* Create OpenCL program */