2013년 12월 8일 일요일

sobel filter by using 2D image interface opencl


I made a simple image sobel filter application using 2D interfacing example.
Firt add sobel filter kernel into imagecpy.cl file and create sobel filter kernel instead of image2d_copier.

__kernel void sobel_rgb(read_only image2d_t src, write_only image2d_t dst, sampler_t sampler)
{
  int x = (int)get_global_id(0); int y = (int)get_global_id(1);
 
  float4 p00 = read_imagef(src, sampler, (int2)(x - 1, y-1));
  float4 p10 = read_imagef(src, sampler, (int2)(x, y-1));
  float4 p20 = read_imagef(src, sampler, (int2)(x + 1, y-1));
  float4 p01 = read_imagef(src, sampler, (int2)(x - 1, y));
  float4 p21 = read_imagef(src, sampler, (int2)(x + 1, y));
  float4 p02 = read_imagef(src, sampler, (int2)(x - 1, y+1));
  float4 p12 = read_imagef(src, sampler, (int2)(x, y+1));
  float4 p22 = read_imagef(src, sampler, (int2)(x + 1, y + 1));
 
  float3 gx = -p00.xyz + p20.xyz + 2.0f * (p21.xyz - p01.xyz) - p02.xyz + p22.xyz;
  float3 gy = -p00.xyz - p20.xyz + 2.0f * (p12.xyz - p10.xyz) + p02.xyz + p22.xyz;
  float3 norm = gx * gx + gy * gy;
  float3 g = native_sqrt(norm.x+norm.y+norm.z);
  write_imagef(dst, (int2)(x, y), (float4)(g.x, g.y, g.z, 1.0f));
 
}

I got the result as below

참 쉽죠~~





2013년 11월 30일 토요일

opencl 2D image interfacing example



This progame is using opencl load image from the host source image and copy to host destination image buffer. It is helpful to understand 2D image interface of opencl.

I used opencv for loading and showing images.

opencl_image_copy_example

2013년 10월 4일 금요일

opencl helloworld


I made sample opencl program under VS2010
It just do squre float values.

I refered "opencl programming guide" sample for reading cl source from file.
It is more simple and easier to beginner.

dwonload vs2010 project here

2013년 8월 26일 월요일

openCL VS2010 Project


1. Add CUDA include directory
Project properties > General > C/C++ > General > Additional Include Directory > Edit
then add
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include

2. Add OpenCL Libs
Project properties > linker > input > addtional dependency
then add
OpenCL.lib

3. 4. Add OpenCL Lib Path
Project properties > linker > general > additional library directory
then add
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\Win32

In CUDA toolkit, opecCL path is same with CUDA path
When you write include header in source, add just CL path
For example

#include <CL/cl.h>

2013년 8월 25일 일요일

CUDA VS2010 project setup


After new VS 2010 project ,
It needs to add CUDA related enviroment setup

1. ADD CUTA in specifying custom build tools
 Right Click project file then select "specifying custom build tools"
Check CUDA 5.0 , Press OK














2. Add CUDA include directory
Project properties > General > C/C++ > General > Additional Include Directory > Edit
then add
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include

3. Add CUDA Libs
Project properties > linker > input > addtional dependency
then add
cuda.lib;cudart.lib

4. Add CUDA Lib Path
Project properties > linker > general > additional library directory
then add
$(CudaToolkitLibDir)

Now We can write down basic CUDA API in program.

2013년 7월 7일 일요일

install opencv on windows


------------------------------------------------------
opencv officail home
------------------------------------------------------
http://opencv.org/

------------------------------------------------------
download
------------------------------------------------------
http://opencv.org/downloads.html

1. extract donwload opencv package where do you want to install
-  I used opencv 2.4.6
-  My installation DIR is C:\opencv_2.4.6
- I test it under VC10

2. set opencv enviroment variable and add path
- open console then enter below command
 $ setx -m OPENCV_DIR C:\opencv_2.4.6\build\x86\vc10
- add path
%OPENCV_DIR%\bin

3. create sample project in VS







4. select property manager(?) tab and right click Debug | Win32 then add new project propery





















5. Type the name then create

















 6. right click the create property sheet, then select propery












7. move c/c++  then add additional include directory C:\opencv_2.4.6\build\include
















8. move link, then add additional library directory C:\opencv_2.4.6\build\x86\vc10\lib

















8. move link, input directory then add additional dependency and add below libs
 
opencv_core246d.lib
opencv_imgproc246d.lib
opencv_highgui246d.lib
opencv_ml246d.lib
opencv_video246d.lib
opencv_features2d246d.lib
opencv_calib3d246d.lib
opencv_objdetect246d.lib
opencv_contrib246d.lib
opencv_legacy246d.lib
opencv_flann246d.lib
















9 .make main functin as like below
 
#include "stdafx.h"
#include <opencv\cv.h>
#include <opencv\highgui.h>

int _tmain(int argc, _TCHAR* argv[])
{
 IplImage * image = cvLoadImage("C:\\Hydrangeas.jpg", 1);
 cvShowImage("test image", image);
 cvWaitKey(0);
 cvReleaseImage(&image);
 return 0;
}
 
then build and run

















 

2013년 6월 9일 일요일

opencl test under LG optimus G

I run clinfo application under LG Optimus G


setup opencl develop enviroment on Android


I used sample source code of aopencl clinfo sample under ubutu 10.04 LTS

Download aopencl

hg clone http://code.google.com/p/aopencl


before download source code of aopencl , install mercurial

JDK download and install

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Download android sdk

http://developer.android.com/sdk/index.html

download ADT bundle, it includes the essential Android SDK components

NDK download

http://developer.android.com/tools/sdk/ndk/index.html

Install adn 1.8 in your PC

$ sudo apt-get install ant1.8

Setup build path

- add platform tools and sdk tools to PATH
$ export PATH=/opt/adt/adt-bundle-linux-x86_64-20130522/sdk/platform-tools/:/opt/adt/adt-bundle-linux-x86_64-20130522/sdk/tools/:/opt/ndk/android-ndk-r8e:$PATH

- export ndk path
$ export NDK=/opt/ndk/android-ndk-r8e

- build ndk lib
move to clinfo directory then ndk-build






- update project as you want for example
$ android update project -p . -n clinfo -t 2












- make package
$ ant debug












then you can find clinfo-debug.apk in clino/bin

- download your android phone then install and run
it can works on nexus 4 or over



-



2013년 5월 18일 토요일

opencl sample makefile


Here is the skeleton of my Makefiles for opencl
It almost same as normal unix application Makefile
Add just opencl libs and opencl include directory
It is based on AMD Streaming SDK



Here is the result... I used helloworld sample of opencl programming guide

















 

2013년 5월 11일 토요일

opencl programming guide sample cmake error


env:

ubuntu 10.04
AMD Straming SDK 2.6

CMake shows below error ,
because AMD Straming ASK OpenCl header directory is changed
...
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:70 (MESSAGE):
  Could NOT find OpenCL (missing: OPENCL_INCLUDE_DIRS)
...

Open

opencl-book-samples-read-only/cmake/FindOpenCL.cmake

add AMD straming SDK opencl include path as llike below

FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include" "/opt/AMDAPP/include/")
            FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include" "/opt/AMDAPP/include/")

then cmake

$ cmake ../opencl-book-samples-read-only -G "Eclipse CDT4 - Unix Makefiles"
-- Found OpenCL: /usr/lib/libOpenCL.so
-- Boost version: 1.40.0
-- Found the following Boost libraries:
--   program_options
-- Configuring done
-- Generating done
-- Build files have been written to: /home2/dokyun/dkworks/opencl/build

it is completed

move to chapters 2 sample directory and build , you can find out HelloWorld

$ ls
CMakeFiles  HelloWorld.cl  Makefile  cmake_install.cmake
$ make
Scanning dependencies of target HelloWorld
[100%] Building CXX object src/Chapter_2/HelloWorld/CMakeFiles/HelloWorld.dir/HelloWorld.cpp.o
Linking CXX executable HelloWorld
[100%] Built target HelloWorld
$ ls
CMakeFiles  HelloWorld  HelloWorld.cl  Makefile  cmake_install.cmake


env

windows 7
Nvidia CUDA 5.0


use cmake-gui





























set source code directory and build binary directory , then configure and generate



2013년 5월 10일 금요일

Installing CUDA toolkit


env

OS : window 7
CUDA version : V5.0
Graphic Card : Geforce 9500 GT

- Cuda toolkit download
https://developer.nvidia.com/cuda-downloads

- Cuda sample download
http://docs.nvidia.com/cuda/cuda-samples/index.html

- Supported GPU list
https://developer.nvidia.com/cuda-gpus

Install only CUDA toolkit, it contains everything you need as you can see

























For verifing installation, open a sample and run

For example, in window7, go to
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\1_Utilities\deviceQueryDrv
then open Visual Studio project , build and run





































I used Visual Studio Express 10

You can download here.

http://www.microsoft.com/visualstudio/kor#downloads

Raspberry Pi - cat surveillance system


Install web cam server

http://pingbin.com/2012/12/raspberry-pi-web-cam-server-motion/

I used Logitech C170







 



2013년 5월 3일 금요일

Install opencl with AMD streaming SDK


Installed env:

OS : unbuntu 10.04 , 64bits
Graphic Card : AMD Radeaon HD 4870
AMD Straming SDK 2.6

- AMD driver download

http://support.amd.com/us/gpudownload/linux/legacy/Pages/legacy-radeon_linux.aspx
http://support.amd.com/us/gpudownload/linux/previous/Pages/radeon_linux.aspx

- stream SDK download
http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/

1. Check your Graphic card supports opencl or not
You can check here
http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/system-requirements-driver-compatibility/

if the graphic card is not supported , download lower version and check

AMD-APP-SDK-<version>-RC-lnx64\docsAMD_APP_SDK_Getting_Started_Guide_<version>.pdf

2. install driver and opencl SDK
 unzip SDK package then run Install-AMD-APP.sh with root log-in

3. go to <install_dir>/AMD-APP-SDK-v2.x-RC3-lnx64/samples/opencl then make

 if you do not install openGL you get build error with below message

/opt/AMDAPP/include/GL/glew.h:1138:20: error: GL/glu.h: No such file or directory

in this case install openGL

$ sudo apt-get install freeglut3-dev

then make again, build will be succeeded