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
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>
#include <opencv\highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage * image = cvLoadImage("C:\\Hydrangeas.jpg", 1);
cvShowImage("test image", image);
cvWaitKey(0);
cvWaitKey(0);
cvReleaseImage(&image);
return 0;
}
}
then build and run
2013년 6월 9일 일요일
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/aopenclbefore download source code of aopencl , install mercurial
JDK download and install
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlDownload android sdk
http://developer.android.com/sdk/index.htmldownload ADT bundle, it includes the essential Android SDK components
NDK download
http://developer.android.com/tools/sdk/ndk/index.htmlInstall adn 1.8 in your PC
$ sudo apt-get install ant1.8Setup 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
피드 구독하기:
글 (Atom)