|
|
Message-ID: <b0901c17184b79ceab2efa9344535773@smtp.hushmail.com>
Date: Wed, 26 Sep 2012 07:32:09 +0200
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: bitslice DES on GPU
On 26 Sep, 2012, at 5:51 , Sayantan Datta <std2048@...il.com> wrote:
> I saw the macro "no_byte_addressable(n)" in opencl_device_info.h. Do you know what should be the argument ? I mean if I were to use this macro in a #if statement then the argument must be a compile time constant, right?
You always get a -DDEVICE_INFO=xx when you build your kernel (provided you use eg. opencl_init() from common-opencl.c) and this is a but-field with DEV_xx values from the opencl_device_info.h header. So that is what you pass to no_byte_addressable(n). I use things like this in my kernels:
#include "opencl_device_info.h"
#if gpu_nvidia(DEVICE_INFO) || amd_gcn(DEVICE_INFO)
#define SCALAR
#endif
#if gpu_amd(DEVICE_INFO)
#define USE_BITSELECT
#endif
--8<------8<------8<------8<----
And I use these in host code:
#include "opencl_device_info.h"
...
int source_in_use = device_info[ocl_gpu_id];
if (gpu_nvidia(source_in_use) || amd_gcn(source_in_use)) {
/* Use scalar code */
VF = 1;
self->params.algorithm_name = "OpenCL";
} else {
/* Use vectorized code */
VF = 4;
self->params.algorithm_name = "OpenCL 4x";
}
...and this alternative way:
if (get_device_type(ocl_gpu_id) == CL_DEVICE_TYPE_CPU) {
if (get_platform_vendor_id(platform_id) == DEV_INTEL)
local_work_size = 8;
else
local_work_size = 1;
} else {
local_work_size = 64;
}
magnum
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.