'Programming'에 해당되는 글 1747건

  1. 2014.01.06 cuda on windows 7
  2. 2014.01.06 cuda / cpu 테스트 드라이브
  3. 2014.01.06 cuda on ubuntu 12.04 LTS
  4. 2014.01.06 cuda 5.5
  5. 2013.12.18 assert()
  6. 2013.12.12 openGL state variables
  7. 2013.12.12 openMP parallel for private 4
  8. 2013.12.12 ia32 어셈블리 언어
  9. 2013.11.28 openMP private copyin copyprivate firstprivate lastprivate
  10. 2013.11.28 openMP reduction 절
Programming/openCL & CUDA2014. 1. 6. 15:21
드라이버와 문서 / 예제코드 / 툴킷이 포함되어 있다.


기본 설치 위치는 아래와 같이 각양각색이다.


'Programming > openCL & CUDA' 카테고리의 다른 글

VS2008 + cuda5.5 프로젝트 생성  (0) 2014.01.13
nvidia ion + ubuntu 12.04 LTS + cuda5.5  (0) 2014.01.08
cuda / cpu 테스트 드라이브  (0) 2014.01.06
cuda on ubuntu 12.04 LTS  (0) 2014.01.06
cuda 5.5  (0) 2014.01.06
Posted by 구차니
Programming/openCL & CUDA2014. 1. 6. 15:20
Telsa K20 GPU 원격 클로스터 로그인 데모 가입인거 같은데
들어 본적 없는 어플리케이션들 뿐이라, 돌려볼 방법도 몰라서 무의미해져 버린 좋은기회 ㅠㅠ


[링크 : http://www.nvidia.co.kr/object/gpu-test-drive-kr.html]

'Programming > openCL & CUDA' 카테고리의 다른 글

nvidia ion + ubuntu 12.04 LTS + cuda5.5  (0) 2014.01.08
cuda on windows 7  (0) 2014.01.06
cuda on ubuntu 12.04 LTS  (0) 2014.01.06
cuda 5.5  (0) 2014.01.06
CUDA Capability별 기능차이  (0) 2013.02.17
Posted by 구차니
Programming/openCL & CUDA2014. 1. 6. 10:52
deb 패키지로 지원을 해서 한번 깔아 보는데 엌ㅋㅋㅋ


run으로 설치시에는 /usr/local/cuda-5.5 에
Install the CUDA 5.5 Toolkit? ((y)es/(n)o/(q)uit): n
Install the CUDA 5.5 Samples? ((y)es/(n)o/(q)uit): y
Enter CUDA Samples Location [ default is /home/minimonk/NVIDIA_CUDA-5.5_Samples ]:
Enter Toolkit Location [ default is /usr/local/cuda-5.5 ]: 

deb 패키지 설치시에는 /usr/local/cuda에 설치된다. (32bit 기준)
[링크 : http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html]

일단.. 설치된건 cuda repo 이니.. 추가로  cuda-dev와 cuda-doc을 설치 해봐야징..
$ sudo apt-cache search cuda
boinc-nvidia-cuda - metapackage for CUDA-savvy BOINC client and manager
libthrust-dev - Thrust - C++ template library for CUDA
pyrit - GPGPU-driven WPA/WPA2-PSK key cracker
python-pytools - big bag of things supplementing Python standard library
suricata - Next Generation Intrusion Detection and Prevention Tool
libcublas4 - NVIDIA CUDA BLAS runtime library
libcudart4 - NVIDIA CUDA runtime library
libcufft4 - NVIDIA CUDA FFT runtime library
libcurand4 - NVIDIA CUDA Random Numbers Generation runtime library
libcusparse4 - NVIDIA CUDA Sparse Matrix runtime library
libnpp4 - NVIDIA Performance Primitives runtime library
nvidia-compute-profiler - NVIDIA Compute Visual Profiler
nvidia-cuda-dev - NVIDIA CUDA development files
nvidia-cuda-doc - NVIDIA CUDA and OpenCL documentation
nvidia-cuda-gdb - NVIDIA CUDA GDB
nvidia-cuda-toolkit - NVIDIA CUDA toolkit
nvidia-304 - NVIDIA binary Xorg driver, kernel module and VDPAU library
nvidia-304-updates - NVIDIA binary Xorg driver, kernel module and VDPAU library
nvidia-319 - NVIDIA binary Xorg driver, kernel module and VDPAU library
nvidia-319-updates - NVIDIA binary Xorg driver, kernel module and VDPAU library
python-pycuda - Python module to access Nvidia‘s CUDA parallel computation API
python-pycuda-doc - module to access Nvidia‘s CUDA parallel computation API (documentation)
python-pycuda-headers - headers for Python module to access Nvidia‘s CUDA parallel computation API
cuda-repo-ubuntu1204 - CUDA repo configuration files. 

$ sudo apt-get install nvidia-cuda-dev nvidia-cuda-doc
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 패키지를 더 설치할 것입니다:
  cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base libcublas4 libcudart4 libcufft4 libcurand4 libcusparse4
  libnpp4 libqtassistantclient4 libstdc++6-4.4-dev libthrust-dev libvdpau-dev
  nvidia-compute-profiler nvidia-cuda-gdb nvidia-cuda-toolkit nvidia-opencl-dev opencl-headers
제안하는 패키지:
  gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg gcc-4.4-multilib
  libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7
  libstdc++6-4.4-doc libvdpau-doc
다음 새 패키지를 설치할 것입니다:
  cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base libcublas4 libcudart4 libcufft4 libcurand4 libcusparse4
  libnpp4 libqtassistantclient4 libstdc++6-4.4-dev libthrust-dev libvdpau-dev
  nvidia-compute-profiler nvidia-cuda-dev nvidia-cuda-doc nvidia-cuda-gdb nvidia-cuda-toolkit
  nvidia-opencl-dev opencl-headers
0개 업그레이드, 21개 새로 설치, 0개 제거 및 4개 업그레이드 안 함.
142 M바이트 아카이브를 받아야 합니다.
이 작업 후 467 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]? 

샘플 파일을 위해서는 run 파일로 설치해야 할듯..
그리고 샘플은 ${HOME}에 저장된다.
$ sudo ./cuda_5.5.22_linux_32.run
NVIDIA CUDA General Terms
-------------------------

The Software may collect non-personally identifiable
information for the purposes of customizing information
delivered to you and improving future versions of the
Software. Such information, including IP address and system
configuration, will only be collected on an anonymous basis
and cannot be linked to any personally identifiable
information. Personally identifiable information such as your
username or hostname is not collected.

-------------------------------------------------------------
Do you accept the previously read EULA? (accept/decline/quit): accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86 319.37? ((y)es/(n)o/(q)uit): y
Install the CUDA 5.5 Toolkit? ((y)es/(n)o/(q)uit): y
Enter Toolkit Location [ default is /usr/local/cuda-5.5 ]:
Install the CUDA 5.5 Samples? ((y)es/(n)o/(q)uit): y
Enter CUDA Samples Location [ default is /home/minimonk/NVIDIA_CUDA-5.5_Samples ]:
Installing the NVIDIA display driver...
Installing the CUDA Toolkit in /usr/local/cuda-5.5 ...
Installing the CUDA Samples in /home/minimonk/NVIDIA_CUDA-5.5_Samples ...
Copying samples to /home/minimonk/NVIDIA_CUDA-5.5_Samples/NVIDIA_CUDA-5.5_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-5.5
Samples:  Installed in /home/minimonk/NVIDIA_CUDA-5.5_Samples

* Please make sure your PATH includes /usr/local/cuda-5.5/bin

* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /usr/local/cuda-5.5/lib
*   for 64-bit Linux distributions includes /usr/local/cuda-5.5/lib64:/lib
* OR
*   for 32-bit Linux distributions add /usr/local/cuda-5.5/lib
*   for 64-bit Linux distributions add /usr/local/cuda-5.5/lib64 and /lib
* to /etc/ld.so.conf and run ldconfig as root

* To uninstall CUDA, remove the CUDA files in /usr/local/cuda-5.5
* Installation Complete

Please see CUDA_Getting_Started_Linux.pdf in /usr/local/cuda-5.5/doc/pdf for detailed information on setting up CUDA.

Logfile is /tmp/cuda_install_5918.log

왜!!! 우분투에서 샘플 코드 까진 관리를 안해주는거야 ㅠㅠ

'Programming > openCL & CUDA' 카테고리의 다른 글

cuda on windows 7  (0) 2014.01.06
cuda / cpu 테스트 드라이브  (0) 2014.01.06
cuda 5.5  (0) 2014.01.06
CUDA Capability별 기능차이  (0) 2013.02.17
Nvidia GTX 시리즈별 코드네임  (0) 2013.02.17
Posted by 구차니
Programming/openCL & CUDA2014. 1. 6. 10:41
ㄷㄷㄷ 벌써 버전이 이렇게!!
일단.. 리눅스는 12.04 LTS 32bit / 2GB 짜리라.. 메모리라도 늘려줘야 하나? ㅠㅠ

 

'Programming > openCL & CUDA' 카테고리의 다른 글

cuda / cpu 테스트 드라이브  (0) 2014.01.06
cuda on ubuntu 12.04 LTS  (0) 2014.01.06
CUDA Capability별 기능차이  (0) 2013.02.17
Nvidia GTX 시리즈별 코드네임  (0) 2013.02.17
cuda deviceQuery on GTX650  (0) 2013.02.17
Posted by 구차니
Programming/C Win32 MFC2013. 12. 18. 01:55
한번쯤은 써봐야지하는 것 중에 하나
가장 강력하고 원초적인 디버깅 중에 하나로 printf()가 있다면
꽤나 상큼하고 스마트한 방법이라는데

assert()에서 비교문이 false 일 경우 강제종료 + 덤프를 한다고 한다.
일단 C/C++ 다 지원하는 듯..

NDEBUG가 정의되면 assert() 가 수행되지도 컴파일 되지도 않는다고 한다.
 #define NDEBUG // disable assert() calls

#include <assert.h>
void assert(scalar expression);
[링크 : http://linux.die.net/man/3/assert

[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=408376&mid=C_LIB]
[링크 : http://www.cplusplus.com/reference/cassert/assert/]


---
2013.12.19
//#include <assert.h>
로 주석처리 하고 assert()를 부르면 컴파일 부터 배짼다 -_-
$ gcc c.c
/tmp/ccpSwySM.o: In function `main':
c.c:(.text+0x11): undefined reference to `assert'
collect2: ld returned 1 exit status 

#include "stdio.h"
#include "assert.h"

int main()
{
        assert(0);

        return 0;
}

음.. 우분투 12.04 LTS desktop에서 코어 덤프를 안하도록 해놔서 그런가..
덤프 파일이 생성되진 않았다.
$ gcc c.c
/tmp/ccpSwySM.o: In function `main':
c.c:(.text+0x11): undefined reference to `assert'
collect2: ld returned 1 exit status 

'Programming > C Win32 MFC' 카테고리의 다른 글

typeof  (0) 2014.03.11
const / pointer  (0) 2014.02.25
printf의 %s와 %S  (0) 2013.06.15
win32api - joystick 예제  (0) 2013.06.15
Windows IME  (0) 2013.02.14
Posted by 구차니
Programming/openGL2013. 12. 12. 22:01
조만간.. 이거 덤프하는 프로그램을 짜봐야지..


[링크 : http://www.glprogramming.com/]
    [링크 : http://www.glprogramming.com/red/appendixb.html]
Posted by 구차니
Programming/openMP2013. 12. 12. 20:09
openMP를 차근차근 보다 보니 으헉?!스러운 문제 발견

int a;
#pragma omp parallel for
for(a = 0; a < 100; a++)
     printf("%d",a); 

일단 for loop의 변수인 a의 경우
개별 쓰레드 별로 변수를 가지고 있고 개별로 증가를 해야 하는데
지금까지 private(a) 이런식으로 private 변수로 지정하지 않아도 잘만 돌아가고 있었다?!?!

엄밀하게는
int a;
#pragma omp parallel for private(a)
for(a = 0; a < 100; a++)
     printf("%d",a);  

이런식으로 a를 private 변수로 해주어야 하나
for문 특성(?)상 for문 변수는 독립적으로 돌아가기 때문에
기본값으로 private화 시킨다는 것 같은데..

pdf 문서중에 단 하나의 문서에서만 언급하고 있고
나머지에서는 전부 private() 해주고 있었는데.. 어느게 맞는걸까? 

'Programming > openMP' 카테고리의 다른 글

openCV + openMP  (0) 2015.09.30
openMP affinity 관련..  (0) 2015.07.23
openMP private copyin copyprivate firstprivate lastprivate  (0) 2013.11.28
openMP reduction 절  (0) 2013.11.28
openMP atomic과 critical  (0) 2013.11.26
Posted by 구차니
visual studio 에서 디버깅하면 디스어셈블러에서 이상한게 나오는데
알고보니 일종의 포인터 연산 이런거 였다는게 함정..

int _tmain(int argc, _TCHAR* argv[])
{
004113A0  push        ebp  
004113A1  mov         ebp,esp 
004113A3  sub         esp,0CCh 
004113A9  push        ebx  
004113AA  push        esi  
004113AB  push        edi  
004113AC  lea         edi,[ebp-0CCh] 
004113B2  mov         ecx,33h 
004113B7  mov         eax,0CCCCCCCCh 
004113BC  rep stos    dword ptr es:[edi] 
	int a = 0;
004113BE  mov         dword ptr [a],0 
	a++;
004113C5  mov         eax,dword ptr [a] 
004113C8  add         eax,1 
004113CB  mov         dword ptr [a],eax 
	printf("hello world %d\n", a);
004113CE  mov         esi,esp 
004113D0  mov         eax,dword ptr [a] 
004113D3  push        eax  
004113D4  push        offset string "hello world %d\n" (41573Ch) 
004113D9  call        dword ptr [__imp__printf (4182BCh)] 
004113DF  add         esp,8 
004113E2  cmp         esi,esp 
004113E4  call        @ILT+320(__RTC_CheckEsp) (411145h) 
	return 0;
004113E9  xor         eax,eax 
}

rep stos    dword ptr es:[edi]
mov         dword ptr [a],0 
mov         eax,dword ptr [a] 

머.. 자세한건 다시 읽어 봐야겠다.



[링크 : https://www.cs.umd.edu/users/meesh/webpages/cmsc311/links/handouts/ia32.pdf]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

fasm / nasm / masm  (0) 2015.06.13
어셈블리 관련  (0) 2015.06.11
.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
Posted by 구차니
Programming/openMP2013. 11. 28. 12:29
private는 지역변수로 개별 쓰레드에서만 유효한 변수로 선언된다.
물론 shared memory 구조를 채택한 openMP에서는
이러한 독립 변수를 메인 쓰레드의 변수와 동기화 하여 사용하도록 하기에
동기화를 해야할 필요성이 생기게 된다.


private는 초기화 하지 않고 쓰레드별 독립 변수로 만들어주고
firstprivate는 메인 쓰레드의 값을 초기화 값으로  쓰레드별 독립 변수로 만들어주고 
lastprivate는 쓰레드 종료후 동기화시 가장 마지막 으로 종료된 쓰레드의 값을 메인 쓰레드로 복사한다.
copyin은 threadprivate 사용시 마스터 쓰레드의 값을 모든 쓰레드로 동기화 하는데 사용한다.


lastprivate는 크게 의미가 없어 보이기도 하는데..
디버깅 용도로 가장 부하가 많이 걸려 늦게 끝나는 쓰레드 번호를 리턴하는데 쓰면 될 거 같기도 하다.

그리고 copyin은 공유된 변수가 하위로 전파되는 거니
copyin이 사용되면 연산을 전부 무효화 하고 다시 계산 해야 할지도 모르겠다. 

'Programming > openMP' 카테고리의 다른 글

openMP affinity 관련..  (0) 2015.07.23
openMP parallel for private  (4) 2013.12.12
openMP reduction 절  (0) 2013.11.28
openMP atomic과 critical  (0) 2013.11.26
openMP single 과 master의 차이점  (0) 2013.11.26
Posted by 구차니
Programming/openMP2013. 11. 28. 12:08
reduction은 수동으로 병합할 변수를 자동으로 합쳐주는 역활을 한다.

[링크 : http://gcc.gnu.org/.../Implementing-REDUCTION-clause.html#Implementing-REDUCTION-clause]


예전에 sum() 병렬 처리 함수의 경우
atomic이나 critical을 사용해 데이터 동기화를 맞추었지만 성능저하가 있었고
2013/09/25 - [Programming/openMP] - openMP로 구현한 야매 sum()

이를 개선하기 위해 계산후
마지막에 마스터 쓰레드에서 합치도록 했는데
2013/09/29 - [Programming/openMP] - openMP example 

이런 마스터 쓰레드 합침을 reduction(+:sum) 으로 간단하게 동일한 방식을 이용해 처리할 수 있다.


 
$ cat test.c
#include "omp.h"

#define BUFFLEN 4096
#define NUMTHREAD 4

void thread()
{
        int idx;
        int arr[BUFFLEN];
        int res = 0;

#pragma omp parallel
{
        // initialize
        #pragma omp for
        for(idx = 0; idx < BUFFLEN; idx++)
                arr[idx] = idx;

        #pragma omp for reduction(+:res)
        for(idx = 0; idx < BUFFLEN; idx++)
        {
                int tid = omp_get_thread_num();
                res += arr[idx];
        }
}
        printf("res = %d\n",res);
}

int main(int argc, const char *argv[])
{
        thread();
        return 0;
}

'Programming > openMP' 카테고리의 다른 글

openMP parallel for private  (4) 2013.12.12
openMP private copyin copyprivate firstprivate lastprivate  (0) 2013.11.28
openMP atomic과 critical  (0) 2013.11.26
openMP single 과 master의 차이점  (0) 2013.11.26
openMP parallel default  (0) 2013.11.18
Posted by 구차니