fix Mac OSX build
This commit is contained in:
@@ -3,19 +3,20 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
|
||||||
void b3PrintfFuncDefault(const char* msg)
|
void b3PrintfFuncDefault(const char* msg)
|
||||||
{
|
{
|
||||||
printf(msg);
|
printf("%s",msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void b3WarningMessageFuncDefault(const char* msg)
|
void b3WarningMessageFuncDefault(const char* msg)
|
||||||
{
|
{
|
||||||
printf(msg);
|
printf("%s",msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void b3ErrorMessageFuncDefault(const char* msg)
|
void b3ErrorMessageFuncDefault(const char* msg)
|
||||||
{
|
{
|
||||||
printf(msg);
|
printf("%s",msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static b3PrintfFunc* b3s_printfFunc = b3PrintfFuncDefault;
|
static b3PrintfFunc* b3s_printfFunc = b3PrintfFuncDefault;
|
||||||
@@ -37,13 +38,19 @@ void b3SetCustomErrorMessageFunc(b3PrintfFunc* errorMessageFunc)
|
|||||||
b3s_errorMessageFunc = errorMessageFunc;
|
b3s_errorMessageFunc = errorMessageFunc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define B3_MAX_DEBUG_STRING_LENGTH 32
|
||||||
|
|
||||||
|
|
||||||
void b3OutputPrintfVarArgsInternal(const char *str, ...)
|
void b3OutputPrintfVarArgsInternal(const char *str, ...)
|
||||||
{
|
{
|
||||||
char strDebug[1024]={0};
|
char strDebug[B3_MAX_DEBUG_STRING_LENGTH]={0};
|
||||||
va_list argList;
|
va_list argList;
|
||||||
va_start(argList, str);
|
va_start(argList, str);
|
||||||
vsprintf_s(strDebug,str,argList);
|
#ifdef _WIN32
|
||||||
|
vsprintf_s(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
|
||||||
|
#else
|
||||||
|
vsnprintf(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
|
||||||
|
#endif
|
||||||
(b3s_printfFunc)(strDebug);
|
(b3s_printfFunc)(strDebug);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
}
|
}
|
||||||
@@ -52,18 +59,30 @@ void b3OutputWarningMessageVarArgsInternal(const char *str, ...)
|
|||||||
char strDebug[1024]={0};
|
char strDebug[1024]={0};
|
||||||
va_list argList;
|
va_list argList;
|
||||||
va_start(argList, str);
|
va_start(argList, str);
|
||||||
vsprintf_s(strDebug,str,argList);
|
#ifdef _WIN32
|
||||||
|
vsprintf_s(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
|
||||||
|
#else
|
||||||
|
vsnprintf(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
|
||||||
|
#endif
|
||||||
(b3s_warningMessageFunc)(strDebug);
|
(b3s_warningMessageFunc)(strDebug);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
}
|
}
|
||||||
void b3OutputErrorMessageVarArgsInternal(const char *str, ...)
|
void b3OutputErrorMessageVarArgsInternal(const char *str, ...)
|
||||||
{
|
{
|
||||||
|
|
||||||
char strDebug[1024]={0};
|
char strDebug[1024]={0};
|
||||||
va_list argList;
|
va_list argList;
|
||||||
va_start(argList, str);
|
va_start(argList, str);
|
||||||
vsprintf_s(strDebug,str,argList);
|
#ifdef _WIN32
|
||||||
|
vsprintf_s(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
|
||||||
|
#else
|
||||||
|
vsnprintf(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
|
||||||
|
#endif
|
||||||
(b3s_errorMessageFunc)(strDebug);
|
(b3s_errorMessageFunc)(strDebug);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#ifndef _WIN32
|
||||||
|
#undef vsprintf_s
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -310,8 +310,6 @@ inline __m128 operator * (const __m128 A, const __m128 B)
|
|||||||
#define b3CastdTo128f(a) ((__m128) (a))
|
#define b3CastdTo128f(a) ((__m128) (a))
|
||||||
#define b3CastdTo128i(a) ((__m128i)(a))
|
#define b3CastdTo128i(a) ((__m128i)(a))
|
||||||
#define b3Assign128(r0,r1,r2,r3) (__m128){r0,r1,r2,r3}
|
#define b3Assign128(r0,r1,r2,r3) (__m128){r0,r1,r2,r3}
|
||||||
#define B3_INFINITY INFINITY
|
|
||||||
#define B3_NAN NAN
|
|
||||||
#endif//_WIN32
|
#endif//_WIN32
|
||||||
#endif //B3_USE_SSE_IN_API
|
#endif //B3_USE_SSE_IN_API
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ b3BoundSearchCL::b3BoundSearchCL(cl_context ctx, cl_device_id device, cl_command
|
|||||||
{
|
{
|
||||||
|
|
||||||
const char* additionalMacros = "";
|
const char* additionalMacros = "";
|
||||||
const char* srcFileNameForCaching="";
|
//const char* srcFileNameForCaching="";
|
||||||
|
|
||||||
cl_int pErrNum;
|
cl_int pErrNum;
|
||||||
const char* kernelSource = boundSearchKernelsCL;
|
const char* kernelSource = boundSearchKernelsCL;
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
#include "b3OpenCLArray.h"
|
#include "b3OpenCLArray.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define B3_DEBUG_SERIALIZE_CL
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#pragma warning(disable :4996)
|
#pragma warning(disable :4996)
|
||||||
#endif
|
#endif
|
||||||
@@ -31,11 +34,10 @@ class b3LauncherCL
|
|||||||
cl_command_queue m_commandQueue;
|
cl_command_queue m_commandQueue;
|
||||||
cl_kernel m_kernel;
|
cl_kernel m_kernel;
|
||||||
int m_idx;
|
int m_idx;
|
||||||
|
|
||||||
b3AlignedObjectArray<b3KernelArgData> m_kernelArguments;
|
b3AlignedObjectArray<b3KernelArgData> m_kernelArguments;
|
||||||
|
|
||||||
|
|
||||||
int m_serializationSizeInBytes;
|
int m_serializationSizeInBytes;
|
||||||
|
bool m_enableSerialization;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -44,7 +46,8 @@ class b3LauncherCL
|
|||||||
b3LauncherCL(cl_command_queue queue, cl_kernel kernel)
|
b3LauncherCL(cl_command_queue queue, cl_kernel kernel)
|
||||||
:m_commandQueue(queue),
|
:m_commandQueue(queue),
|
||||||
m_kernel(kernel),
|
m_kernel(kernel),
|
||||||
m_idx(0)
|
m_idx(0),
|
||||||
|
m_enableSerialization(false)
|
||||||
{
|
{
|
||||||
m_serializationSizeInBytes = sizeof(int);
|
m_serializationSizeInBytes = sizeof(int);
|
||||||
}
|
}
|
||||||
@@ -59,30 +62,31 @@ class b3LauncherCL
|
|||||||
|
|
||||||
inline void setBuffer( cl_mem clBuffer)
|
inline void setBuffer( cl_mem clBuffer)
|
||||||
{
|
{
|
||||||
|
if (m_enableSerialization)
|
||||||
b3KernelArgData kernelArg;
|
{
|
||||||
kernelArg.m_argIndex = m_idx;
|
b3KernelArgData kernelArg;
|
||||||
kernelArg.m_isBuffer = 1;
|
kernelArg.m_argIndex = m_idx;
|
||||||
kernelArg.m_clBuffer = clBuffer;
|
kernelArg.m_isBuffer = 1;
|
||||||
|
kernelArg.m_clBuffer = clBuffer;
|
||||||
cl_mem_info param_name = CL_MEM_SIZE;
|
|
||||||
size_t param_value;
|
cl_mem_info param_name = CL_MEM_SIZE;
|
||||||
size_t sizeInBytes = sizeof(size_t);
|
size_t param_value;
|
||||||
size_t actualSizeInBytes;
|
size_t sizeInBytes = sizeof(size_t);
|
||||||
cl_int err;
|
size_t actualSizeInBytes;
|
||||||
err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
|
cl_int err;
|
||||||
param_name,
|
err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
|
||||||
sizeInBytes,
|
param_name,
|
||||||
¶m_value,
|
sizeInBytes,
|
||||||
&actualSizeInBytes);
|
¶m_value,
|
||||||
|
&actualSizeInBytes);
|
||||||
b3Assert( err == CL_SUCCESS );
|
|
||||||
kernelArg.m_argSizeInBytes = param_value;
|
b3Assert( err == CL_SUCCESS );
|
||||||
|
kernelArg.m_argSizeInBytes = param_value;
|
||||||
m_kernelArguments.push_back(kernelArg);
|
|
||||||
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
|
m_kernelArguments.push_back(kernelArg);
|
||||||
m_serializationSizeInBytes+=param_value;
|
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
|
||||||
|
m_serializationSizeInBytes+=param_value;
|
||||||
|
}
|
||||||
cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &clBuffer);
|
cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &clBuffer);
|
||||||
b3Assert( status == CL_SUCCESS );
|
b3Assert( status == CL_SUCCESS );
|
||||||
}
|
}
|
||||||
@@ -92,29 +96,31 @@ class b3LauncherCL
|
|||||||
{
|
{
|
||||||
for(int i=0; i<n; i++)
|
for(int i=0; i<n; i++)
|
||||||
{
|
{
|
||||||
b3KernelArgData kernelArg;
|
if (m_enableSerialization)
|
||||||
kernelArg.m_argIndex = m_idx;
|
{
|
||||||
kernelArg.m_isBuffer = 1;
|
b3KernelArgData kernelArg;
|
||||||
kernelArg.m_clBuffer = buffInfo[i].m_clBuffer;
|
kernelArg.m_argIndex = m_idx;
|
||||||
|
kernelArg.m_isBuffer = 1;
|
||||||
cl_mem_info param_name = CL_MEM_SIZE;
|
kernelArg.m_clBuffer = buffInfo[i].m_clBuffer;
|
||||||
size_t param_value;
|
|
||||||
size_t sizeInBytes = sizeof(size_t);
|
cl_mem_info param_name = CL_MEM_SIZE;
|
||||||
size_t actualSizeInBytes;
|
size_t param_value;
|
||||||
cl_int err;
|
size_t sizeInBytes = sizeof(size_t);
|
||||||
err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
|
size_t actualSizeInBytes;
|
||||||
param_name,
|
cl_int err;
|
||||||
sizeInBytes,
|
err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
|
||||||
¶m_value,
|
param_name,
|
||||||
&actualSizeInBytes);
|
sizeInBytes,
|
||||||
|
¶m_value,
|
||||||
b3Assert( err == CL_SUCCESS );
|
&actualSizeInBytes);
|
||||||
kernelArg.m_argSizeInBytes = param_value;
|
|
||||||
|
b3Assert( err == CL_SUCCESS );
|
||||||
m_kernelArguments.push_back(kernelArg);
|
kernelArg.m_argSizeInBytes = param_value;
|
||||||
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
|
|
||||||
m_serializationSizeInBytes+=param_value;
|
m_kernelArguments.push_back(kernelArg);
|
||||||
|
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
|
||||||
|
m_serializationSizeInBytes+=param_value;
|
||||||
|
}
|
||||||
cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &buffInfo[i].m_clBuffer);
|
cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &buffInfo[i].m_clBuffer);
|
||||||
b3Assert( status == CL_SUCCESS );
|
b3Assert( status == CL_SUCCESS );
|
||||||
}
|
}
|
||||||
@@ -296,9 +302,9 @@ class b3LauncherCL
|
|||||||
unsigned char* ptr = (unsigned char*)&buf[i];
|
unsigned char* ptr = (unsigned char*)&buf[i];
|
||||||
*ptr = 0xff;
|
*ptr = 0xff;
|
||||||
}
|
}
|
||||||
int actualWrite = serializeArguments(buf,buffSize);
|
// int actualWrite = serializeArguments(buf,buffSize);
|
||||||
|
|
||||||
unsigned char* cptr = (unsigned char*)&buf[buffSize];
|
// unsigned char* cptr = (unsigned char*)&buf[buffSize];
|
||||||
// printf("buf[buffSize] = %d\n",*cptr);
|
// printf("buf[buffSize] = %d\n",*cptr);
|
||||||
|
|
||||||
assert(buf[buffSize]==0xff);//check for buffer overrun
|
assert(buf[buffSize]==0xff);//check for buffer overrun
|
||||||
@@ -357,6 +363,12 @@ class b3LauncherCL
|
|||||||
b3Assert( status == CL_SUCCESS );
|
b3Assert( status == CL_SUCCESS );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void enableSerialization(bool serialize)
|
||||||
|
{
|
||||||
|
m_enableSerialization = serialize;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ b3RadixSort32CL::b3RadixSort32CL(cl_context ctx, cl_device_id device, cl_command
|
|||||||
m_fill = new b3FillCL(ctx,device,queue);
|
m_fill = new b3FillCL(ctx,device,queue);
|
||||||
|
|
||||||
const char* additionalMacros = "";
|
const char* additionalMacros = "";
|
||||||
const char* srcFileNameForCaching="";
|
|
||||||
|
|
||||||
cl_int pErrNum;
|
cl_int pErrNum;
|
||||||
const char* kernelSource = radixSort32KernelsCL;
|
const char* kernelSource = radixSort32KernelsCL;
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ const char* g_deviceName = 0;
|
|||||||
|
|
||||||
void initCL(int preferredDeviceIndex, int preferredPlatformIndex)
|
void initCL(int preferredDeviceIndex, int preferredPlatformIndex)
|
||||||
{
|
{
|
||||||
void* glCtx=0;
|
//void* glCtx=0;
|
||||||
void* glDC = 0;
|
//void* glDC = 0;
|
||||||
int ciErrNum = 0;
|
int ciErrNum = 0;
|
||||||
//bound search and radix sort only work on GPU right now (assume 32 or 64 width workgroup without barriers)
|
//bound search and radix sort only work on GPU right now (assume 32 or 64 width workgroup without barriers)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user