• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

소프트웨어

[App 개발] Introductory Tutorial to OpenCL

본문

Introductory Tutorial to OpenCL
Skip Navigation LinksHome > GPU Tools > ATI Stream SDK > Introductory Tutorial to OpenCL

Benedict R. Gaster, AMD Architect, OpenCL

AMD 는 CPU 에서 동작하는 OpenCL 의 퍼블릭 베타를 발표했습니다. 조만간 AMD 최신 GPU 에서도 구현될 것입니다. OpenCL 은 최신 기술입니다. 기술 규격에 대해서는 홈페이지(www.khronos.org/registry/cl/)에서 소개하고 있습니다만, 예제를 곁들인 기본 설명을 담고 있는 문서는 아직 얼마 되지 않습니다. 이 글은 OpenCL 에 대한 이해와 응용을 돕기 위해 만들어졌습니다.

먼저:

* 저는 AMD 에서 일하고 있으며, 제가 소개하는 예제들은 윈도우와 리눅스 환경에서 테스트할 것입니다. 하지만 저는 기종에 관계없이 OpenGL 의 활용에 중점을 둘 것입니다. 모든 예제들은 순전히 OpenGL 로 구현되며 따라서 기종에 관계없이 동작될 것입니다.
* 제가 제공하는 모든 예제들은 AMD 의 구현이 아니어도 동작될 수 있게끔 하였습니다만, AMD 에서 구현하지 않은 환경에서 테스트하지는 않았습니다. 따라서 해당 시스템에서 정상 동작되지 않을 수 있습니다. 그럴 경우 Stream Computing 포럼에 알려주시면 제가 코드를 다시 정리하여 업데이트 하도록 하겠습니다.

다음의 “Hello World” 예제는 OpenGL 을 간단히 소개하는 프로그램입니다. 이번 예제를 비롯해서 몇 가지 예제를 통해서 다음과 같은 내용을 다룰 것입니다:

* OpenCL 을 위한 플랫폼과 디바이스 레이어
* 프로그램 컴파일과 커널 객체
* 버퍼 관리
* 커널 실행
* 커널 프로그래밍 – 기초
* 커널 프로그래밍 – 동기화
* 행렬 곱셈 – 예제
* 커널 프로그래밍 – 빌트인

= The “Hello World” program in OpenCL

OpenCL 예제 작성시 고려했던 내용입니다:

* OpenCL 이 지정한 호스트 API 는 C89 호환이며 C++ 혹은 여타 다른 언어와의 연동은 언급하지 않고 있습니다. 현재 다른 언어와의 연동을 연구중이며 (이 글 마지막에 소개된 링크를 보세요) 특별히 C++ 과의 연동을 활발히 연구중입니다. 본 예제에서는 C++ 에서 OpenCL 활용법을 보여드리겠습니다. OpenCL 1.0 규격에서 해당되는 C API 를 참조하세요. 소스에서 어떻게 OpenCL 함수를 호출하고 있으며 C++ 에서 인수 전달 방법 등을 볼 수 있습니다.
* OpenCL 은 계산 장치 프로그램을 작성하기 위하여 C 형태의 언어를 사용합니다. 이 프로그램은 OpenCL 런타임에 char * 인수를 받는 API 호출로 전달됩니다. 보통 이 프로그램은 다른 소스 파일에 저장하는 것이 편리합니다. 다음의 예제들에서 디바이스 프로그램은 name_kernels.cl 과 같은 이름을 가진 파일에 저장합니다. name 은 예제 내용에 따라 바뀌지만 _kernels.cl 은 동일합니다. 해당되는 디바이스 프로그램은 실행시 읽어서 OpenCL API 로 전달됩니다. 그 외에도 다른 방법들이 있습니다만 이 방법이 이해하기 쉽기 때문에 선택했습니다.

첫 번째 OpenGL 프로그램 작성을 위하여 먼저 호스트 프로그램 소스부터 시작해 보겠습니다.

= Header files

다른 C++ 외부 API 처럼 OpenCL API 를 사용하려면 헤더를 include 해야 합니다. 보통 기본 include 디렉토리의 CL 디렉토리에 저장되어 있습니다. C++ 에서 사용을 위해서 (C API 인 cl.h 를 대신한)

#include
#define __NO_STD_VECTOR // Use cl::vector and cl::string and
#define __NO_STD_STRING // not STL versions, more on this later
#include

예제에서 사용하기 위한 C++ 헤더를 몇 개 추가합니다.

#include
#include
#include
#include
#include
#include

OpenCL 장치로부터 동적으로 “Hello World
” 문자열을 리턴할 것이므로 상수로 선언을 하겠습니다.

const std::string hw("Hello World
");

= Errors

OpenCL API 대부분 공통적으로 오류가 발생했을 때 함수의 리턴값으로 (cl_int 형) 에러 코드를 돌려주거나, 발생한 에러를 저장하여 유저에게 인수로 전달합니다. 에러 코드는 API 에서 오류가 발생했을 때 상황을 알아낼 수 있으므로 중요합니다. 하지만 지금은 문제를 간단히 하기 위해서 checkEr() 함수를 선언하여 어떤 작업이 무사히 끝났는지만 검사하고 넘어갑니다. 에러가 없으면 OpenCL 은 CL_SUCCESS 를 리턴합니다. 에러가 발생했을 경우 메세지를 발생하고 종료하거나 리턴하게 됩니다.

inline void
checkErr(cl_int err, const char * name)
{
if (err != CL_SUCCESS) {
std::cerr << "ERROR: " << name
<< " (" << err << ")" << std::endl;
exit(EXIT_FAILURE);
}

C++ 에서 에러를 처리하는 기본 방식은 exception 을 이용하는 것입니다. OpenCL C++ 바인딩에서는 유사한 인터페이스를 제공합니다. 뒷부분에 가서 exception 과 C++ 특성에 맞는 몇 가지 옵션 기능을 다루도록 하겠습니다. 여기서는 마지막으로 우리 첫 번째 OpenCL 프로그램에 필요한 main 함수를 보겠습니다.

= OpenCL Contexts

OpenCL 을 초기화하여 사용하는 첫 번째 단계는 컨텍스트를 만드는 것입니다. 나머지 작업들 (디바이스와 메모리를 만들고 컴파일 하고 실행하는 것) 은 컨텍스트 내에서 이루어집니다. 컨텍스트에는 사용 가능한 디바이스의 갯수 (예를 들어 CPU 와 GPU), 그리고 컨텍스트 내에는 장치 간 메모리를 유지합니다. 자세한 사항은 뒤에 다루겠습니다. 지금은 CPU 장치를 위한 CL_DEVICE_TYPE_CPU 디바이스 하나만 사용합니다. 만약 OpenCL 에서 지원한다면 CL_DEVICE_TYPE_GPU 등을 쓸 수도 있겠지요. 생성자 cl::Context 는 반드시 성공할 것이므로 변수 err 에는 CL_SUCCESS 가 들어있을 것입니다.

int
main(void)
{
cl_int err;

cl::Context context(
CL_DEVICE_TYPE_CPU,
NULL,
NULL,
NULL,
&err);
checkErr(err, "Conext::Context()");

실제 작업이 이루어지는 계산 장치를 파고들기 전에 먼저 장치 내에서 작업을 수행하는 커널의 결과값을 저장할 OpenCL 버퍼를 할당합니다. 여기서는 “Hello World
” 문자열이겠지요. 지금은 간단히 호스트에서 메모리를 할당하여 OpenCL 이 직접 메모리를 사용하도록, 버퍼를 생성할 때 CL_MEM_USE_HOST_PTR 플래그를 같이 전달합니다.

char * outH = new char[hw.length()+1];
cl::Buffer outCL(
context,
CL_MEM_WRITE_ONLY | CL_MEM_USE_HOST_PTR,
hw.length()+1,
outH,
&err);
checkErr(err, "Buffer::Buffer()");

= OpenCL Devices

OpenCL 의 대부분 작업은 주어진 컨텍스트 내에서 수행됩니다. 예를 들어, 버퍼 (1D 메모리 공간) 와 이미지 (2D 혹은 3D 메모리 공간) 할당은 모두 컨텍스트 작업입니다. 하지만 특정 장치 작업도 있습니다. 예를 들어 프로그램 컴파일과 커널 실행은 장치 기준이고, 이를 위해서는 특정 장치 핸들이 필요합니다. 특정 장치의 핸들은 어떻게 얻어낼까요? 장치 컨텍스트를 요구하면 됩니다. OpenCL 은 특정 장치의 정보를 얻어내는 방법을 제공합니다. C++ API 에서는 object.getInfo() 와 같은 형식이 됩니다. 컨텍스트로부터 장치 정보를 얻어오는 경우는:

cl::vector devices;
devices = context.getInfo();
checkErr(
devices.size() > 0 ? CL_SUCCESS : -1, "devices.size() > 0");

이제 컨텍스트에 속해있는 장치 리스트를 얻었습니다. 지금 경우는 CPU 장치겠지요, 이제 계산 프로그램 (장치 내에서 작동되는 프로그램) 을 읽어서 빌드하는 작업이 필요합니다. 다음 코드는 OpenCL 디바이스 프로그램을 디스크로부터 읽어서 문자열로 치환한 뒤 helper constructor 를 이용하여 cl::Program::Sources 를 생성하겠습니다. 이 객체는 컨텍스트 내에서 특정한 디바이스를 위해 만들어진 것입니다.

std::ifstream file("lesson1_kernels.cl");
checkErr(file.is_open() ? CL_SUCCESS:-1, "lesson1_kernel.cl");

std::string prog(
std::istreambuf_iterator(file),
(std::istreambuf_iterator()));

cl::Program::Sources source(

1,
std::make_pair(prog.c_str(), prog.length()+1));

cl::Program program(context, source);
err = program.build(devices,"");
checkErr(file.is_open() ? CL_SUCCESS : -1, "Program::build()");

프로그램에는 커널이라고 하는 많은 엔트리 포인트가 있고, 커널 객체로 빌드해야 합니다. 커널은 문자열 형식의 커널 이름으로 일대일 대응되어 있고, 계산 프로그램 내에서는 __kernel 형식으로 정의된 함수입니다. 여기서는 cl::kernel 형의 객체 kernel 을 빌드합니다. 커널 인수는, 특정 인수를 인덱스와 값으로 받아들이는 kernel.setArg() 라는 C++ API 를 이용하여 전달합니다.

cl::Kernel kernel(program, "hello", &err);
checkErr(err, "Kernel::Kernel()");

err = kernel.setArg(0, outCL);
checkErr(err, "Kernel::setArg()");

이제 코드가 준비되었고, 결과를 계산합니다 (여기서는 “Hello World
” 문자열을 버퍼에 넣습니다). 모든 디바이스 계산은 커맨드 큐를 이용하는데, 사용하려는 장치의 가상 인터페이스입니다. 각 커맨드 큐는 특정 장치와 일대일 대응되며, 해당 컨텍스트에서 클래스의 생성자 cl::CommandQueue 를 호출함으로써 생성됩니다. 커널은 queue.enqueuNDRangeKernel 을 이용하여 해당 장치로부터 커널을 실행합니다. 커널은 주어진 자원 내에서 1, 2, 3 차원 도메인 인덱스를 병렬로 수행합니다. 실행된 도메인 내 인덱스의 총 갯수를 글로벌 워크 사이즈 라고 하며, 워크 아이템이라고 하는 것의 갯수입니다. 워크 아이템끼리 정보 교환이 필요할 경우 워크 아이템을 워크 그룹으로 묶습니다. 워크 그룹은 서브 인덱스 함수(로컬 워크 사이즈) 로 정의되며, 글로벌 실행 도메인에서 지정한 차원에 대한 각 차원의 크기를 지정합니다. 그 외에도 커널 실행에 대한 여러 가지 고려할 점이 있으며, 향후 다른 튜토리얼에서 다루겠습니다. 지금은 Hello World 에서 각각의 워크 아이템은 결과 문자열의 글자를 계산하며, , 프로그램 앞에서 const std::string 으로 선언했던 hw 의 길이hw.length()+1 만 실행해도 충분합니다. 나머지 워크 아이템은 NULL 을 넣습니다.

cl::CommandQueue queue(context, devices[0], 0, &err);
checkErr(err, "CommandQueue::CommandQueue()");


cl::Event event;
err = queue.enqueueNDRangeKernel(
kernel,
cl::NullRange,
cl::NDRange(hw.length()+1),
cl::NDRange(1, 1),
NULL,
&event);
checkErr(err, "ComamndQueue::enqueueNDRangeKernel()");

위의 마지막 enqueueNDRangeKernel 의 마지막 인수는 cl::Event 객체였는데, 해당 커맨드의 상태를 저장할 때 쓰입니다. (예를 들어 작업 종료 같은) 커맨드가 종료될 때까지 대기하는 wait() 를 지원합니다. 이 함수는 queue.enqueueReadBuffer() 를 이용해여 결과물을 호스트 메모리로 읽어들이기 전에 커널 작업이 종료되었는지를 확실히 할 때 유용합니다. 결과가 호스트 메모리로 돌아온 다음에는 stdout 으로 결과물을 출력하고 프로그램을 종료합니다.

event.wait();
err = queue.enqueueReadBuffer(
outCL,
CL_TRUE,
0,
hw.length()+1,
outH);
checkErr(err, "ComamndQueue::enqueueReadBuffer()");
std::cout << outH;
return EXIT_SUCCESS;
}

마지막으로 디바이스 프로그램 lesson1_kernels.cl 을 완성하기 위해서 가외의 엔트리 포인트 hello 가 필요합니다. 이 커널 프로그램은 간단합니다. get_global_id() 를 이용하여 실행 도메인의 인덱스를 얻어냅니다. 이것을 문자열 hw 의 인덱스로 삼아서 그 값을 출력 배열 out 에 넣습니다.

__constant char hw[] = "Hello World
";
__kernel void hello(__global char * out)
{
size_t tid = get_global_id(0);
out[tid] = hw[tid];
}

안정성을 위해서 쓰레드 ID (tid) 가 hw 의 범위를 벗어나지 않는지 검사하는 것이 좋습니다만, 여기서는 queue.enqueueNDRangeKernel() 호출이 정확하다고 가정하겠습니다.

= Building and running

리눅스에서는 OpenCL 프로그램을 빌드하려면 명령 한 줄이면 됩니다. 예를 들어
gcc –o hello_world –Ipath-opencl-incude –Lpath-opencl-libdir lesson1.cpp –lOpenCL

실행할 때에는:
LD_LIBRARY_PATH=path-opencl-libdir ./hello_world

윈도우 비쥬얼 스튜디오 커맨드 윈도우에서의 예는:
cl /Fehello_world.exe /Ipath-opencl-include lesson.cpp path-opencl-libdir/OpenCL.lib

OepnCL.dll 이 path 에 들어있다고 가정하면 실행할 때는:
.hello_world

다음과 같은 문자열을 출력합니다 pm stdout:
Hello World

OpenCL 입문 튜토리얼이 끝났습니다. 궁금한 점이나 덧붙이고 싶은 점이 있으시면 Stream 포럼을 방문해 주세요.

= Useful Links

다음 목록에는 OpenCL 을 C 이외 언어에서 사용하는 방법에 대한 내용입니다. 모든 내용을 다 테스트해본 것은 아닙니다만, 유용한 정보이길 바랍니다:

* OpenCL specification and headers:
http://www.khronos.org/registry/cl/
* OpenCL technical forum:
http://www.khronos.org/message_boards/viewforum.php?f=28
* The C++ bindings used in this tutorial can be found on the OpenCL web page at Khronos, along with complete documentation:
http://www.khronos.org/registry/cl/
* Python bindings can be found here:
http://pyopencl.next-touch.com/
* C# bindings can be found here:
http://www.khronos.org/message_boards/viewtopic.php?f=28&t=1932
* An Introduction to OpenCL:
http://ati.amd.com/technology/streamcomputing/intro_opencl.html
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 228,692
가입일 :
2003-02-18 14:12:30
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 1

hongjuny님의 댓글

갑자기 방향을 약간 틀어서 OpenCL 을 찾아 보았습니다. 스노 레오파드가 나오면 정식으로 OpenCL 을 지원하게 될 것이라 하는데, CUDA 와 유사한 부분이 많다고는 하지만, 아무래도 ATI 와 NVIDIA 를 모두 사용할 수 있는 개방된 라이브러리가 좋겠지요. 아무튼 많이 기대하고 있습니다.

전체 91,688 건 - 11 페이지
2010.04
19

[Mac OS 9] 바탕화면 아이콘 깜빡임현상...??

바탕화면 에 아이콘들이 깜빡 깜빡 거리는 현상이 가끔 나타나는데요 왜그런거죠 그것때문에 깜빡임이 멈출때까지는 아무런 작업이 안됩니다... 왜그런 지아시는 분 좀 알려주세요~제발

2010.02
14

[OS X] 맥과 윈도우7 공유...

공유를 열고 개인파일 공유와 윈도우즈 공유를 선택해주라는 글들을 많이 봤는데요. 정작 공유 들어가서는 저런 문구가 있지도 않네요; 파일 공유 화면 공유 등.. 그리고 윈도우에서는 맥이 잡히는데 맥에서는 윈도우가 안잡힙니다; 이거 어…

2011.05
26

[BootCamp] 맥북에어에 윈도우 7설치 후 부팅하다 까만화면 오류, 왜 그런건가요?

부트캠프를 통해 윈7을 깔았습니다. 정상적으로 사용이 가능한데요 한가지 문제는 종종 부팅하다 오류가 납니다. 윈도우 시작하다가 'Windows 오류 복구' 라는 메세지가 뜨는 까만 화면이 나타납니다. Windows를 시…

2018.07
24

[디자인] 인디자인에서 페이지 넘기는 형식의 PDF로 저장하는 법

안녕하세요.   다름이 아니라 회사에서 단체로 여행을 갔었고 인디자인으로 각 페이지별로 사진을 추가하여 PDF로 만들었습니다. 카톡으로 공유하려고 하며, PDF페이지 하나하나 넘기면서 보여지게끔 하고 싶은데 인디자인에서 혹시 가능한지 …

2010.04
11

[BootCamp] 윈도우7설치시 매직마우스 휠이 먹지를 않네요 ^^;

많은 도움을 받아 부트켐프를 이용하여 윈도우 XP설치를 완료 하였습니다. 그러나 XP에서는 4G램을 전부 사용하지 못하는 지라 이번에 윈도우 7을 설치 하였습니다. 기타 드라이버는 Mac OS x Install DVD로 설치를 하였으나 Blueto…

2013.07
30

[OS X] 윈도우에 연결 된 프린터를 네트워크를 통해 연결 시

윈도우에 연결 된 프린터를 연결하기 위해 시스템 환경설정 - 프린트 및 스캔 - '+' - ㅈWindows - 에서 공유 된 프린터를 찾아 설치했습니다. 인쇄는 잘 되는데 인쇄 할 때마다 '인증 보류'라면서 인쇄가 안되고 화살표를 눌러 '…

2005.09
28

[디자인] 일러스트에서 레이어 눈 감기기 단축키가 있나요?

제가 요즘 일러스트로 작업을 하는데 레이어가 여러개 있어서 눈 감기가 너무 번거롭네요. 원본 이미지를 가지고 위에 일러스트그림으로 그리는 건데 너무 번거로와요ㅠ.ㅠ 혹시 레이어 눈감기기 단축키나 레이어 관련 단축키를 아시는분들 저좀 알려주세요. …

2019.09
11

[BootCamp] 부트캠프에서 듀얼 모니터 인식이 안됩니다.

- 2017년 27인지 아이맥이고요. 현재 상태는 부트캠프 이용 외장형SSD를 Type-C 형으로 연렬하여 사용중 세팅은 완료하였으나. 듀얼 모니터만 안되고 있습니다. 윈도우10에서 모니터 검색을 해도 검색이 안되고 있는데요. 이…

2013.05
21

[OS X] 외장하드 포맷방법

웨스턴 디지털 마이패스포드(WD PASSPORT) 외장 1TB구입했습니다. 지금 MAC 10.6버젼 사용하고 있구요 Windows에서 외장하드를 MAC과 같이 사용할 수 있는 방법이 있을까요 Windows에서 포맷시 MAC에서 인식은 되지만 …

2010.02
08

[BootCamp] 윈도우용 일러스트에서 한자입력방법과 특수문자입력 방법좀 가르쳐주세요

맥프로노트북으로 일러스트를 열어서 작업하다 보디 자판이 틀려서 그런지 한자입력방법과 특수문자 입력방법을 잘 모르겠더라구요 아시는분들 부탁드려요 감사감사~~!

2009.02
24

[OS X] 왜 P2P 싸이트는 맥에서 안되는거죠?

MAC OS X 아이팝이나 아삼박스 이런데 들어가면 게시판이나 이런 것들이 열리지가 않는데 왜그러는거죠

2009.03
26

[OS X] Iwork 09 page, number 엑셀 워드 pdf파일 변환 방법

안녕하세요 iwork 08사용 할 때는 Export가 있어서 엑셀이나 워드 파일로 변환했는데 09 한글버젼 에선 어떻게 찾나요... 없어요....

2009.11
13

[OS X] 외장하드 ntfs 사용문제

외장하드를 내용에 나와있는 것들을 읽어보니... 맥에서는 ntfs 외장하드는 읽기만 되낟고 하시는데요.. 제가 맥 레오파트 10.6버전(최신) 이번에 맥구입(초보자예요)한 건데요.. 1)그러면...이 버전에서도 ntfs 외장하드 읽기만 가능한…

2005.10
05

[디자인] 일러스트 파일의 황당한 변환(에러)입니다. ㅠ.ㅠ

안녕하세요... 이런 경우를 보신적 있나요 ㅠ.ㅠ 일러스트 8에서 작업을 하고 보통 하던대로 EPS로 저장하고 그리고 쿼억에서 이미지 불러들여 작업을 합니다. 최종적으로 쿼억에서 출력용파일모으기를 합니다. 리포트파일이 생기지요 그런데 그 리포…

2009.12
19

[OS X] 맥에서 신한은행 공인인증서 다운로드는 어떻게>?

안녕하세요, 매번 이렇게 질문만 계속 올리네요. 맥에서 인터넷 뱅킹을 하려고 하는데요, 공인인증서는 어떻게 다운받고 인터넷뱅킹을 하는지 궁금합니다,

2014.06
02

[디자인] 인디자인 글리프 CID 또는 유니코드로 입력 방법 알고싶습니다.

안녕하세요. 제가  인디자인4를 사용하는데 인디자인 글리프에서 기호를 일일이 찾지않고, 자주쓰는건  CID나 유니코드를 사용하여 입력하고 싶은데 어떻게 해야할까요

2003.07
08

[OS X] 맥에서 AVI 영화파일 보는법 좀 알려주세요...

아범에서 매트릭스를 다운을 받았는데... 맥에서는 볼 수 없나요 자막 파일도 따로 있는데... 혹시 보는법 아시는 분은 리플 달아주세요... ㅠ.ㅠ 확장자명이 AVI로 되어있어요... 꼭 답변 부탁드려요... 혹시 프로그램같은거 있으신…

2012.06
26

[OS X] 인디자인 언어 변경

맥에서 인디자인을 실수로 영어으로 설치를 했는데, 한글로 변경이 가능한가요 이전에 보니 한글 설치 파일을 옮겨서 사용하던데 알수 있을까요 참고로 사용 버젼은 CS4입니다.

2010.02
16

[OS X] VMware에서 서든어택

브이엠웨어에나 페럴릴즈! 에서 윈도우 엑스피 설치후 서든어택 할수있나요 안된다면 그냥 맥에서 제공된 부트캠프이용해서 설치해야 하는건지요.

2009.08
22

열람중 [App 개발] Introductory Tutorial to OpenCL

Introductory Tutorial to OpenCL Skip Navigation LinksHome > GPU Tools > ATI Stream SDK > Introductory Tutorial to OpenCL Benedict R. Gas…

2006.05
18

[App 개발] OpenGL 을 이용한 게임 만들기 (1) - 2D 맵

앞으로 얼마나 진도를 나갈 수 있을지 저도 장담할 수 없는 시리즈의 첫 번째 편을 쓰게 됩니다. ㅡㅡ; Mac OS X 뿐만 아니라 여러 다양한 플랫폼에서 산업 표준으로 이용되고 있는 OpenGL 을 이용한 게임 제작이 한창입니다. MS 의 Di…

2012.07
21

[기타질문] 맥키퍼를 모르고 깔았다가...

돈내라고 해서 어렵게 알아내 지우고, 고수님들의 조언으로 라이언을 포맷도 새로 하였습니다만... 계속 유튜브를 돌리면 15초 정도 지나면 멈춰 버립니다. 그리고 동영상 종류에 관계없이 맥키퍼 광고가 계속 위아래 뜹니다...ㅠㅠㅠㅠ 아…

2010.05
30

[Mac OS 9] 인디자인 cs5 >cs3 로 다운저장방법?

맥os에서 인디자인 cs5작업하고있는데 다운저장을 어떻게 하는지 모르겠어요. ;ㅡ; 예전에 cs4>cs3로는 했던것 같은데, 5에서는 안되네요 방법 아시면 알려주세요~^-^

2012.08
21

[기타질문] 인디자인 그림자효과 오류 질문

인디자인에서 그림자효과 뿐만 아니라 멀티등의 효과를 주면 첨부한 그림의 오른쪽처럼 나옵니다. 작업은 왼쪽처럼 하였는데 PDF나 인쇄시 오른쪽처럼 나오는 이유가 뭘까요 또 PDF는 괜찮아서 인쇄했는데 인쇄시엔 또 오른쪽처럼 나오구요..ㅠ 이런경우는…

2011.08
12

[기타질문] 웹진만들기

회사에서 월간지 작업을 하고있는 디자이너 입니다. 내년부터 인쇄되는 월간지 외에 웹진형태로도 클라이언트에게 공급을 하게 될거같은데요, 외부 업체에 유료로 맡기지 않고 쿽으로 작업한 파일, 혹은 PDF파일로 웹진을 만들수 있는 …

2010.12
01

[BootCamp] 뉴맥북에어에 윈도우 설치 시 문제...

안녕하세요 뉴맥북에어 13인치를 구매한 후 윈도우를 설치해서 사용 중입니다. 업무상 윈도우를 주로 사용하게 되어 OS X를 완전 삭제 후 부트캠프만 이용하여 윈도우 7을 설치 하였습니다. (윈도우는 MSDN 순정 버전을 사용. 파티션은 시스…

2010.01
10

[BootCamp] 부트캠프로 윈도우XP 설치는 끝났는데 무선 마우스와 키보드가 안되는 것 같아요..ㅜ.ㅜ

바로 밑에 이어서 또 질문 올립니다.. 윈도우 XP설치할때까지는 무선 키보드와 마우스 인식이 되어 그걸로 설치를 마치고 Mac OS X 설치 DVD 넣고 부트캠프 드라이버까지 다 설치를 마치고 재부팅이 되고 윈도우XP가 떴습니다. 그…

2011.03
29

[OS X] 인디자인 CS5 유저인데 특수문자 여는 단축키

인디자인 CS5 유저인데 특수문자 여는 단축키는 없나요. 참고로 아이맥 사용합니다.

2009.11
16

[BootCamp] 윈도우7에서 한영키가 안되서 질문드립니다.

맥미니 1.83 / 메모리 2.5 / 하드 320이구요 스노우레오파드설치한후 부트캠프로 윈도우7을 설치하였는데 한영전환을 어찌할지 모르겠어서 질문드립니다. 엑스피쓸때는 오른쪽 옵션키였는데 지금은 마우스로 일일이 누르게되네요. 설치할때 …

2008.06
23

[OS X] 서체 문제로 질문 드려요!

맥구입 한달째로 접어 들면서 별 무리없이 스위칭 해나가고 있습니다. 맥오에스 정말 물건 이네요. 하지만..... 그동안 미루어왔던 서체적응에 난항을 겪고 있습니다. 애플고딕 이게 뭐에 쓰라는 건지.....난감 하더군요. 4세대 …

2015.01
13

[기타질문] 일러스트CS5 색상견본 Deleted Global Color 수백개가 뜹니다. 삭제방법이나 설정법 좀 알려…

언젠가 부터 파일에서 일러스트CS5 색상견본 Deleted Global Color 수백개가 뜹니다. 복사 속도도 엄청나게 느려지고 파일이 무거워져서 다른 컴에서는 작동을 않할정도의 증상으로 고생중입니다. 해결 방법 아시는 분 좀 알려주시기 바랍니ㅏㄷ

2003.11
13

[기타질문] 강남 근처 24시간 출력소 아시는분

강남 근처에서 24시간 필름출력 하는 곳 아시는 분 없나요... 교대나, 양재역, 신사역 근처면 좋고요... 마땅히 이런 질문할 곳을 찾지 못해 여기에 올립니다.

2007.01
11

[디자인] 전자출판 전문가를 위한 13자리 ISBN 바코드 생성 솔루션

전자출판 전문가를 위한 13자리 ISBN 바코드 생성 솔루션 KAN 멀티 플랫폼 바코드생성기 13자리 ISBN + 부가코드를 생성하는 바코드 생성기 (OS9, OSX에서 동작) 생성된 EPS(CMYK) 파일, OSX에서는 물론 Wind…

2010.12
22

[BootCamp] 뉴 맥북에어에 윈도우7 설치 하는 방법 좀 알려 주세요 ㅠㅠ

항상 일반 pc만을 사용하다가 이번에 큰맘 먹고 한번 맥북에어를 구입을 해봤습니다 맥북은 어느정도 적응을 해서 무리 없이 사용을 하고 있는데 부트캠프를 통해서 윈도우7 설치가 가장 어렵네요 지금 진행 상황은 USB를 윈도우7 부팅 디스크로 …

2007.03
25

[OS X] 특수문자표 호출하는 단축키 있나요?

윈도우 같은 경우에는 ㄱ, ㄴ 등의 문자 넣고 나서 Ctrl + Space 누르면 특수문자표가 나오잖아요 근데 맥에서 특수문자표를 호출하는 단축키를 모르겠습니다. 파인더의 메뉴에서 여는 것은 아는데 문서를 작성할 때 단축키로 호출하고 싶…

2009.06
18

[OS X] 윈도우에서 맥북 부팅 소리 제거 방법

도서관에서 사용할건데 부팅 소리때문에 고민입니다. 윈도우만 깔려 있어서 맥os 에서 소리를 제거 못합니다. 윈도우에서 제거 불가능 한가요

2010.12
23

[OS X] 맥에선 임시파일저장폴더가 어딘가요?

사파리에서 이미지를 볼때, 윈도우처럼 임시 저장되는것 같은데 그런것들을 삭제하고 싶습니다. 삭제하는 방법이나 경로쫌 부탁드립니다.

2008.11
05

[기타질문] 맥북 한글 전환이안되요 ㅜㅜㅜ

오른쪽 상단에두없구요.......커맨드 스페이스도 안되구요 ㅜㅜㅜㅜㅜ띵띵 소리나면서 반응없어서 기보드 단축기가니까 검색필드보기가 커맨드스페이스로 되잇드라구요 어떻게하져

2014.07
16

[기타질문] 맥 오피스 2011 한글폰트 추가

윈도우에서 사용하던 한글 폰트를 맥 서체관리자에서 설치된 것으로 나옵니다. 그런데 한컴오피스2014에서는 여러가지 한글폰트가 인식이 되는데 오피스2011 에서는 인식이 되지 않습니다. 해결 방법이 있을까요

2004.01
26

[디자인] 일러스트에서 글씨에 그라데이션 넣으려면 어떻게 하죠?

일러스트로 글을 쓰고 브레이크 어파트 하고나서 그라데이션을 넣으려고 하거든요 한 글자씩 말고 전체가 자연스럽게 그라데이션 되게 하고 싶은데 어떻게 하는거죠 일러스트 9.0 씁니다 답변 부탁드려요~~

2012.09
12

[Mac OS 9] 웹하드 접속기 설치가 안돼요.

이제까지 웹하드 접속기 잘 썼었는데요 어제 하드를 뭐 갈았나 암튼 수리하고나서 웹하드 접속기가 없어져서 다시 깔려고 웹하드 홈페이지 가서 다운로드를 받았는데요(물론 9 용으로) 실행이 안되서 문의했더니 압축해제 프로그램이 최신버전이 아니라서…

2007.09
05

[기타질문] 마이크로소프트사 클립아트

http://office.microsoft.com/ko-kr/clipart/FX101321031042.aspxpid=CL100570201042 마이크로소프트사에 제공하는 클립아트.. pc에서 바탕화면으로 그냥 드래그 하니깐 다운 받아지고 일…

2009.12
22

[App 개발] 재직자 과정 아이폰 app 개발 교육안내

좋은 재직자 과정이 열릴 예정이라서 먼저 알려드립니 다. 2010년 1월과 2월에 각각 20시간짜리 "iPhone App 제작 기 초"와 "iPhone App 제작 심화"가 열릴 예정입니다. 평일 저녁 7시부터 10시까지 …

2007.03
07

[기타질문] 4도 이미지를 2도로 인쇄할때...

4도 이미지에서 Y, C를 빼고 M,K 2도로 인쇄해야하는데 이미지를 어떻게 변환해야 할지 고수님들의 답변부탁드립니다.

2006.04
11

[BootCamp] 맥북 프로 부트캠프로 윈도우XP 설치시 몇가지 문제점

1. 에어포트 인식 불가. (유선 랜은 인식됨) 2. 한영 전환시 사과마크 + 스페이스바 작동불가 (우측 아래 텍스트 한/영 변환기를 마우스로 눌러서 변환하고있음;;) 3. 리니지2 접속시 노트북 키보드 인식불가 (확장 키보드는 인식됨) …

2012.10
31

[디자인] 인디자인으로 명찰만들기

같은 이미지위에 사람 이름, 직책 등만 바뀌어서 200명 정도 들어가는 명찰을 제작해야 하는데요, 파일은 엑셀로 받았어요. 인디자인CS5 사용합니다. 그냥 마스터페이지에 이미지 넣고 페이지 200개 만들어 작업하는것만 있진 않을것 같아서요. 일…

2009.03
24

[OS X] CS4에서 자꾸 시리얼을 재입력하는 말이 나오네요,ㅠ

자꾸 CS4에서 시리얼 넘버를 재입력 하라는 메세지 창이 뜹니다. 하루만 지나면 자꾸 떠버려요,ㅜ 한번 입력한 시리얼 넘버는 또 재입력 되지도 않더군요,ㅜ 어떻게 해야 하나요 버그라는 말도 있던데,, 재설치를 해봐도 여전합니다.ㅜ

2012.12
27

[디자인] 인디자인 숫자 세로로 줄맞추기?

인디자인에서 세자리이상 숫자 세로 줄맞추는건 어떻게 하나요 가변윤고딕100 써서 표를 짜는데 세로로 숫자 자리수가 줄이 안맞고 삐뚤삐뚤하네요 아시는분 알려주세요 부탁드립니다^^

2010.10
29

[OS X] Adobe CS5를 깨끗이 지우는 방법을 알려주세요.^^

MBP Mac OS X 10.6.4 사용중입니다. 맥북으로 거의 작업은 하지 않고 사진 영화 음악 감상용으로 주로 씁니다. 그런데 맥용 CS5는 어떤지 보고 싶어서 Adobe CS5 Master Collection 시험판을 설치했었습니다. 이…