Thursday, April 1st 2010

NVIDIA CUDA Emulator for every PC

NVIDIA's CUDA GPU compute API could be making its way to practically every PC, with an NVIDIA GPU in place, or not. A chinese freelance developer has coded a means to get CUDA work as a middleware on OpenCL. This move lets CUDA work on ATI Radeon GPUs that support OpenCL, as well as x86 CPUs, since OpenCL specs allow the API to run on CPUs for development purposes. The implications of these are many:
  • Letting CUDA-accelerated software such as Badaboom make use of ATI GPUs
  • Letting PhysX run on ATI GPUs as PhysX middleware uses CUDA for GPU acceleration
  • Possibly better scaling of PhysX on multi-core CPUs (over OpenCL), as the regular PhysX CPU acceleration is infamous for bad multi-core scaling in performance
The software works as a translation layer, exchanging calls between CUDA and OpenCL or the CPU if OpenCL is not available. It comes in the form of a loader application that injects itself into the executing process. To get PhysX to run, one needs to install older versions of PhysX System Software (version 8.09.04 WHQL being the latest) from its standalone installer (installs PhysX libraries without looking for NVIDIA GPUs).

DOWNLOAD: CUDA Emulator Loader

This development could also have its implications on the industry, as not very long ago developers at NGOHQ.com successfully ran PhysX on ATI Radeon GPUs. Something NVIDIA didn't object to, seeing it as an opportunity to propagate PhysX and maybe highlight better performance on GeForce GPUs. AMD cold-shouldered that development and later announced its own plans to develop GPU physics processing with Havoc. The developer wishes to remain anonymous till such legal issues are ironed out. It was originally posted at jishuyi.com.cn, a Chinese techsite, which doesn't seem to be reachable outside of the PRC - probably by China's protective networks. We will shortly publish a comprehensive review of CUDA performance on ATI Radeon GPUs.
Source: Jinshuyi.com.cn
Add your own comment

90 Comments on NVIDIA CUDA Emulator for every PC

#76
Dwarden
some shady chinese executable on april fools day ...

man what an awesome opportunity to expand botnet ...

in other words:
i would be extremely dissapointed this binary turns out to not be trojan ....
Posted on Reply
#77
W1zzard
Dwardensome shady chinese executable on april fools day ...

man what an awesome opportunity to expand botnet ...

in other words:
i would be extremely dissapointed this binary turns out to not be trojan ....
it's not a trojan, here is the source code:


// CUDALoader_April01Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "CUDALoader_April01.h"
#include "CUDALoader_April01Dlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CCUDALoader_April01Dlg dialog




CCUDALoader_April01Dlg::CCUDALoader_April01Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CCUDALoader_April01Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCUDALoader_April01Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT1, m_exe);
}

BEGIN_MESSAGE_MAP(CCUDALoader_April01Dlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, &CCUDALoader_April01Dlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, &CCUDALoader_April01Dlg::OnBnClickedButton1)
END_MESSAGE_MAP()


// CCUDALoader_April01Dlg message handlers

BOOL CCUDALoader_April01Dlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CCUDALoader_April01Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CCUDALoader_April01Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}


void CCUDALoader_April01Dlg::OnBnClickedOk()
{
if (AfxMessageBox(_T("Please confirm you want to load CUDA emulator for OpenCL."), MB_ICONQUESTION|MB_OKCANCEL)==IDCANCEL)
PostQuitMessage(0);
else
if (AfxMessageBox(_T("Are you sure to load CUDA emulator for OpenCL?"), MB_ICONQUESTION|MB_YESNO)==IDNO)
PostQuitMessage(0);
else
if (AfxMessageBox(_T("CUDA OpenCL emulator requires your confirmation to proceed."), MB_ICONWARNING|MB_OKCANCEL)==IDCANCEL)
PostQuitMessage(0);
else
{
AfxMessageBox(_T("Thank you, please wait a moment..."), MB_ICONINFORMATION|MB_OK);
Sleep(10000);
again:
int res=AfxMessageBox(_T("CUDA for OpenCL encountered a compatibility issue."), MB_ICONERROR|MB_ABORTRETRYIGNORE);
if (res==IDABORT)
{
PostQuitMessage(0);
}
if (res==IDRETRY)
goto again;
AfxMessageBox(_T("What if I don't want to?"), MB_OK);
AfxMessageBox(_T("April Fool!\n\nfrom www.techpowerup.com."), MB_OK);
}

PostQuitMessage(0);
}

void CCUDALoader_April01Dlg::OnBnClickedButton1()
{
CFileDialog o(FALSE,_T("bin"),NULL,OFN_ENABLESIZING|OFN_FILEMUSTEXIST,_T("Executable Files (*.exe)|*.exe||"));
if (o.DoModal() == IDOK)
{
m_exe.SetWindowText(o.GetPathName());
}
}
Posted on Reply
#78
soldier242
best app evar ... lol i believed it was true :D
Posted on Reply
#79
HalfAHertz
Help! I was trying to calculate the numper pi with the power of CUDA and a 486 cpu but got stuck in an infinite loop at the millionth number. W1z your program is stuck at the number 1337 and doesn't want to budge!
Posted on Reply
#80
Athlonite
Bjorn_Of_IcelandHavok does not have hardware accelleration.
so what does it run on then thin air and sunshine :laugh:

Havok = CPU acceleration
PhysX = GPU or CPU acceleration
Posted on Reply
#81
Mussels
Freshwater Moderator
Athloniteso what does it run on then thin air and sunshine :laugh:

Havok = CPU acceleration
PhysX = GPU or CPU acceleration
you cant call something CPU accelerated. You're possibly too young to recall the era before hardware 3D, but the entire point of calling something hardware accelerated is when DEDICATED hardware exists for JUST the purpose of running the code, and relieving that stress from the CPU.

To say it in brief: CPU is software, and NOT accelerated.
Posted on Reply
#82
Athlonite
some how I don't think I'm too young at 41 yrs old

so your saying a program that is written to take advantage of the processing power of a modern CPU is not hardware accelerated
Posted on Reply
#83
Mussels
Freshwater Moderator
Athlonitesome how I don't think I'm too young at 41 yrs old

so your saying a program that is written to take advantage of the processing power of a modern CPU is not hardware accelerated
exactly. hardware accelerated is when dedicated hardware is used to accelerate it BEYOND software on a CPU.
Posted on Reply
#84
Athlonite
sorry but your thinking of acceleration is wrong

a program that's written that calls for only integer and or float processing is purely software
a program that's written that calls for the use of SSE or 3dnow processing is now accelerated beyond simple int\float processing (the days of 286, 386, 486)

take for example video conversion say .MOV to .AVI it'll take much longer if not using the likes of MMX, SSE, SSE2, SSE3 to Accelerate the process on the CPU

and not all hardware designed to relieve a CPU of some or all of the work makes what it does hardware accelerated
Posted on Reply
#85
ET3D
Mussels, looks like Athlonite is actually too old, and he still remembers the days when you bought a floating point coprocessor to accelerate floating point. Athlonite, things have moved forward since then. SSE and 3DNow are over 10 years old. They're a standard part of the CPU. Ten years from now, when all CPU's will have GPU-like stuff on them, it will also be silly to call that acceleration.
Posted on Reply
#86
HalfAHertz
Umm I'm with mussels on this one too...even tho when we defined graphics rendered as software or hardware accelerated(like pre nvidia days, I remembered that i had to play most 3d games in software mode on my savage 3d), we didn't have anything fancy like sse1,2,3 mmx or 3dnow :)
Posted on Reply
#87
Athlonite
savage3d haha lol try s3virge with 4MB and the add a vodoo2 for real 3d and yes i can remembe using an math co pro
Posted on Reply
#88
ET3D
ViRGE, pah! That was for pussies. It gave you all that texturing stuff. Now the Matrox Millenium was a real man's card. We had to get up a 5am to draw the pixels by hand if we wanted any texturing. Then the yungins got that newfangled Matrox Mistake, and they had the job easy, just having to wash the monitor to blur them samples on account of not having the bi-linear stuff that you ViRGE spoiled brats took for granted.
Posted on Reply
#89
Athlonite
well i did used to own an ISA trident with 256KB then i went to an 1MB jobbie
Posted on Reply
#90
overclocking101
this would be sweet if it were ctually true, I think if someone actually tried to do it they would eventually find a way to make it work.
Posted on Reply
Add your own comment
Apr 18th, 2024 20:20 EDT change timezone

New Forum Posts

Popular Reviews

Controversial News Posts