Parallel programming on GPU


leave a comment »

Awesome, you now can start streaming 3D content right on your website. Click here to see how!
This video show how Jack Levin, CEO of ImageShack, utilize GPUs for his Data centers.


Written by Vu Pham

12/04/2011 at 11:55 PM

Posted in CUDA, Programming


leave a comment »

Some good news from our guys at NVIDIA:

1. LIBJACKET – a new GPU Computing library has been announced. Although being beta testing, this is promising if we look into 500+ functions inside LIBJACKET. After a while of messing with CULA, CUSPARSE, Thrust, CUSP… I am really eager to check this one. Nonetheless, Dr. Dobb said that there will be a commercial release of LIBJACKET in the next year, it means that this is not free. Good job, guys! And it’s better if you have a free edition 🙂

2. Now you can do GPU Computing right in .NET! Such a crazy thing. Well, I’m not kidding, you can try this with GPU.NET. Please click the link, simply typing http://gpu.net in your browser will not work at all 🙂

Written by Vu Pham

07/12/2010 at 11:22 PM

Posted in CUDA, Programming

Tagged with , ,

GTC 2010

with 2 comments

NVIDIA’s CEO Jen-Hsun Huang has given a keynote speech at GTC 2010 last week. There are some interesting announcements in the speech that I note here.

The first and foremost announcement is about CUDA-x86 compiler which is developed by PGI. The new compiler is expected to show the first time at SuperComputing conference this November. It is fancy to know that we can write, compile, debug and deploy CUDA programs on every workstation, server or cluster even when there is not any CUDA-accelerated GPU. When running on systems which do not have CUDA devices, CUDA-x86 will help CUDA programs run as usual thanks to the streaming SIMD instructions set in Intel’s and AMD’s CPUs.

The question is how well do they perform on CPUs-only system? It would be great if they can provide approximate speedup as on GPU, but I do not expect this much. Let’s wait until SC2010 and see what can we do with CUDA-x86.

The remaining part of Jen-Hsun Huang’s speech is about some fancy demos and some guests from nVidia’s partners. This includes  CUDA-accelerated real-time rendering tool in Autodesk 3ds Max, a GPU-derived engineering simulation solution from ANSYS, GE Intelligent Platforms’ new development environment, CUDA officially supported right in MATLAB (one of the best news!), OpenCV is now supported by CUDA (another good news, but I hope that CUDA-OpenCV, or whatever they call it, will not add any bugs into OpenCV), Wolfram Research’s Mathematica added built-in CUDA GPU programming.

The most important part of the conference surely is not the speech from the CEO, but the research posters. There are many interesting researches there. Hope that I will have enough time to read and summarize some of them someday.

Written by Vu Pham

29/09/2010 at 9:08 PM

Posted in CUDA

Tagged with , ,

IntelliSense cho CUDA trong VS 2008

leave a comment »

Cho Visual Studio

Mở regedit, tìm khóa HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++\NCB Default C/C++ Extensions, thêm .cu vào cuối.

Cho Visual AssistX

B1: Đóng VS, cài Visual Assist.

B2: Tìm đến thư mục cài Visual Assist (X:\Program Files\Visual Assist X\AutoText\latest), copy file Cpp.tpl rồi đổi tên thành Cu.tpl

B3: Mở Visual Studio, sau đó đóng lại. (Visual Assist sẽ tự tạo một số thư mục và cập nhật thông tin trong registry).

B4: Mở regedit, tìm khóa HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet9. Thêm .cu vào key ExtSource, thêm .cuh vào key ExtHeader.

Written by Vu Pham

18/04/2010 at 9:55 PM

Posted in CUDA, Environment, Setup

Tagged with ,

Thiết lập môi trường phát triển CUDA trên MacOS X

leave a comment »

Trong entry này, tôi sẽ trình bày cách cấu hình và thiết lập môi trường phát triển ứng dụng CUDA trên MacOS X 10.6 (Snow Leopard) và CUDA SDK 2.3.

1. Cài đặt CUDA

Đầu tiên, ta cần cài đặt các thành phần sau:

  • Xcode, mục đích là để Xcode cài thêm trình biên dịch C/C++.
  • CUDA driver.
  • CUDA Toolkit 2.3a for Mac OS
  • CUDA SDK 2.3a or Mac OS
  • CUDA Visual Profiler v1.3 for Mac OS (không bắt buộc)

Sau khi download các file thích hợp, ta cài theo thứ tự driver, Toolkit và SDK. Bạn có thể đọc thêm trong Getting Started Guide của NVIDIA để biết thêm chi tiết. Thao tác cài Toolkit và SDK rất đơn giản, tuy nhiên cần phải thay đổi một số tham số cấu hình để CUDA chạy đúng trên MacOS.

Thay đổi các biến môi trường

Sau khi cài xong,ta cần đặt các biến môi trường PATH và DYLD_LIBRARY_PATH để trình biên dịch CUDA hoạt động được. Trong các bản MacOS từ Leopard trở về sau, một trong những cách để làm điều này là đặt các lệnh sau vào file ~/.bash_profile.

export PATH=/opt/local/bin:/usr/local/cuda/bin:$PATH
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH

Thay đổi các tham số

Các tham số này được đặt trong file /Developer/CUDA/common/common.mk. Ta mở file này (bằng vim hoặc TextEdit) rồi tìm và sửa các tham số sau:

# Compiler-specific flags

CFLAGS    := -m32 $(CWARN_FLAGS)

Các dòng này báo cho trình biên dịch CUDA biết là ta đang muốn compile code với thư viện 32 bit.

Thay đổi trình biên dịch C/C++

Mặc dịnh khi cài Xcode, trình biên dịch C/C++ được chọn là gcc 4.2, khi sử dụng các phiên bản mới này, một số file mã nguồn trong CUDA SDK sẽ không biên dịch được, do đó ta cần sửa lại các link về phiên bản 4.0:

cd /usr/bin
sudo rm ./gcc
sudo ln -s ./gcc-4.0 ./gcc
sudo rm ./g++
sudo ln -s ./g++-4.0 ./g++

Cuối cùng ta có thể build các project trong SDK:

cd /Developer/CUDA
// hoặc make dbg=1 (debug), make emu=1 (emuRelease), make emu=1 dbg=1 (emuDebug)

Sau khi build xong, bạn có thể vào thư mục /Developer/CUDA/bin/darwin/release và chạy thử các chương trình mẫu trong đó.

Dưới đây là kết quả khi chạy 1 số project mẫu trong SDK.

2. Tạo project CUDA

Trong thư mục cài đặt CUDA SDK (thường là /Developer/CUDA) có sẵn 1 project mẫu mà bạn có thể sử dụng nó để tạo các project mới cho mình. Trong thư mục này có sẵn file mã nguồn *.cu (cùng với code mẫu) và file Makefile định nghĩa các quy tắc biên dịch cần thiết.

Cụ thể bạn có thể tạo project mới cho mình qua một số bước sau:

1. Copy project mẫu

cd <SDK_INSTALL_PATH>/projects        // SDK_INSTALL_PATH là thư mục cài CUDA SDK
cp -r template <myproject>            // myproject: tên project mới

2. Sửa tên các file mã nguồn trong project

mv template.cu myproject.cu
mv template_kernel.cu myproject_kernel.cu
mv template_gold.cpp myproject_gold.cpp

3. Sửa trong file Makefile và mã nguồn

Find & replace “template” thành “myproject”.

4. Build


5. Chạy thử


Như vậy bạn hoàn toàn có thể tạo các file mới, viết thêm mã nguồn (bằng Vim, TextEdit… hay là Microsoft Word, Pages…). Tuy nhiên tốt hơn là nên dùng Xcode, hoặc Netbeans hay Eclipse.

Cấu hình Xcode

Phần này sẽ trình bày cách cấu hình cho Xcode để tạo project CUDA mẫu.

<To be continued…>

Written by Vu Pham

13/09/2009 at 10:08 PM

Posted in Setup

Tagged with , ,

Bài toán Tổng tích lũy (all-prefix-sum) trên CUDA

leave a comment »

Giới thiệu

All-prefix-sum là một bài toán tương đối đơn giản và phổ biến khi lấy làm ví dụ trong các sách nói về lập trình song song nói chung và CUDA nói riêng. Bài toán này định nghĩa như sau:

Định nghĩa

Phép toán all-prefix-sum có đầu vào là một toán tử 2 ngôi Θ, một mảng n phần tử

[a0, a1, …, an-1]

và kết quả là một mảng n phần tử:

[a0, (a0 Θ a1), …, (a0 Θ a1 Θ an-1)]

Ví dụ:

Với Θ là phép cộng, phép toán all-prefix-sum trên mảng [3 2 6 5 10 7 9]

sẽ có kết quả là [3 5 11 16 26 33 42]

Written by Vu Pham

26/08/2009 at 4:49 PM

Posted in Programming

Tagged with , , ,