Показать сообщение отдельно
Старый 13.08.2010, 14:45   #3 (permalink)
Forester04
Новичок
 
Регистрация: 02.08.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Код:
#include <stdafx.h>
#include <CL/cl.h>
 
 
const char* OpenCLSource[] =  {"__kernel void kor (__global float* X, __global float* SM,__global float* rez)"
"{"
"X = 10000;"
"rez = 0;"
"if (X > 1) SM = X / 2; else SM  = 1;"
"for(; (SM != 0); SM /= 2) if ((rez * rez) > X) rez -= SM; else rez += SM;"
"return(rez);"
"}"
};
 
 
int main(int argc, char **argv) 
 
{
 
float X;
float SM;
float rez;
 
 
//Инициализация устройства
cl_context cxGPUContext = clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU, NULL, NULL, NULL);  
 
 
cl_int cdDevice = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_CPU, NULL, NULL, NULL);
 
//Очерёдность выполнения
cl_command_queue cqCommandQue = clCreateCommandQueue(cl_context (cxGPUContext), NULL, 0, NULL);
//Memory Objects
cl_mem Xq = clCreateBuffer(cl_context (cxGPUContext), CL_MEM_WRITE_ONLY, 100, &X, NULL);
cl_mem SMq = clCreateBuffer(cl_context (cxGPUContext), CL_MEM_WRITE_ONLY, 100, &SM, NULL);
cl_mem rezq = clCreateBuffer(cl_context (cxGPUContext), CL_MEM_READ_ONLY, 100, &rez, NULL);
 
 
 
cl_program OpenCLProgram = clCreateProgramWithSource(cl_context (cxGPUContext), 1, OpenCLSource , NULL, NULL);
 
clBuildProgram(OpenCLProgram, 0, NULL, NULL, NULL, NULL);
 
cl_kernel kor = clCreateKernel(cl_program (OpenCLProgram), "kor.cl", NULL);
 
clSetKernelArg(kor, 0, sizeof(cl_mem), (void*)&Xq);
clSetKernelArg(kor, 1, sizeof(cl_mem), (void*)&SMq);
clSetKernelArg(kor, 2, sizeof(cl_mem), (void*)&rezq);
 
 
clEnqueueWriteBuffer(cqCommandQue, Xq, CL_TRUE, 0, sizeof(cl_float), Xq, 0, NULL, NULL);
clEnqueueWriteBuffer(cqCommandQue, SMq, CL_TRUE, 0, sizeof(cl_float), SMq, 0, NULL, NULL);
 
cl_int clEnqueueNDRangeKernel(cl_command_queue (cqCommandQue));
 
 
clEnqueueReadBuffer(cqCommandQue, rezq, CL_TRUE, 0, sizeof(cl_float), rezq, 0, NULL, NULL);
 
printf("Hello %f\n", rezq); 
}

последний вариант. на выходе стабильно 0.
Forester04 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070