For more information, join the team subscribe to the mailing list 
at the bottom of the Launchpad page

    http://launchpad.net/~hybrid-graphics-linux 

Please join this team if you are new by clicking on the "Join 
Team" link at the right of the Launchpad page. It's important to 
have as many users in the community as possible to request for 
appropriate support.

Monday 27 September 2010

More on CUDA and OpenCL comparisons

[1005.2581] A Performance Comparison of CUDA and OpenCL
CUDA and OpenCL offer two different interfaces for programming GPUs. OpenCL is an open standard that can be used to program CPUs, GPUs, and other devices from different vendors, while CUDA is specific to NVIDIA GPUs. Although OpenCL promises a portable language for GPU programming, its generality may entail a performance penalty. In this paper, we compare the performance of CUDA and OpenCL using complex, near-identical kernels. We show that when using NVIDIA compiler tools, converting a CUDA kernel to an OpenCL kernel involves minimal modifications. Making such a kernel compile with ATI's build tools involves more modifications. Our performance tests measure and compare data transfer times to and from the GPU, kernel execution times, and end-to-end application execution times for both CUDA and OpenCL.

Friday 24 September 2010

More on CUDA

CUDA support in OpenCV announced at GTC - The H Open Source: News and Features





At the GPU Technology Conference in San Jose, NVIDIA announced that the Open Source Computer Vision
(OpenCV) library, which includes image processing algorithms, will,
from the start of next year, be able to utilise the computing power of
NVIDIA GPUs by making use of CUDA GPU acceleration.

The OpenCV source code repository already contains some initial GPGPU
functionality, but a full initial release of the CUDA support is
scheduled to arrive in Spring 2011. According to Gary Bradski, senior
researcher at Willow Garage, which is involved in maintaining the
library, many OpenCV algorithms run five to ten times faster with GPU
assistance. OpenCV contains more than 500 algorithms for functions such
as image processing, face and body recognition and real time recording
and is available, free-of-charge, under the BSD licence.

Thursday 23 September 2010

More on hybrid-graphics for Asus U43JC

Ran kernel 2.6.28 with dsdt from initramfs support:
Modified the _SP3 method I attached above, and removed the first condition (line 15029), and its corresponding closing bracket.

If (LEqual (P3MO, 0x01)) {
}

After removing the lines, ran

echo '\_SB.PCI0.RP00.VGA._PS3' > /proc/acpi/call

and miraculously power consumption went down from 20W to 12W.

Up to eight hours of battery life.

Questions for anyone with even a remote knowledge of ACPI.

First of all, assumed that LEqual stands for "Less than or equal to". Under this assumption, how P3MO would ever be greater than 0x01 because it isn't changed to anything but zero or one?

This is every line I found P3MO on...

14781: Name (P3MO, 0x00)
14885: Store (One, \_SB.PCI0.RP00.VGA.P3MO)
14889: Store (Zero, \_SB.PCI0.RP00.VGA.P3MO)
15157: Store (0x00, P3MO)

Tuesday 21 September 2010

Intel Intelligent Power Sharing Driver (IPS)

[PATCH 0/6] Include support for the Intel Intelligent Power Sharing Driver (IPS) - Kernel team discussions - ArchiveOrange
Intel Core i3/5 platforms with integrated graphics support both CPU and
GPU turbo mode. CPU turbo mode is opportunistic: the CPU will use any
available power to increase core frequencies if thermal headroom is
available. The GPU side is more manual however; the graphics driver
must monitor GPU power and temperature and coordinate with a core
thermal driver to take advantage of available thermal and power headroom
in the package.

The intelligent power sharing (IPS) driver is intended to coordinate
this activity by monitoring MCP (multi-chip package) temperature and
power, allowing the CPU and/or GPU to increase their power consumption,
and thus performance, when possible. The goal is to maximize
performance within a given platform's TDP (thermal design point).

Tuesday 7 September 2010

Sony Vaio VPCZ12 DSDT hybrid graphics info

The Sony Vaio VPCZ12 model comes with a ACPI DSDT table that has two methods to allow for switching on/off the discrete graphics card:
_SB.PCI0.P0P2.DGPU._ON
_SB.PCI0.P0P2.DGPU._OFF


                                If (LEqual (_T_0, 0x03))
                                {
                                    Store (0xA003, P80H)
                                    Increment (CNTD)
                                    If (LEqual (And (Arg3, 0x03), Zero))
                                    {
                                        Return (^^P0P2.DGPU._STA ())
                                    }

                                    If (LEqual (And (Arg3, 0x03), One))
                                    {
                                        ^^P0P2.DGPU._ON ()
                                        Return (One)
                                    }

                                    If (LEqual (And (Arg3, 0x03), 0x02))
                                    {
                                        ^^P0P2.DGPU._OFF ()
                                        Return (Zero)
                                    }
                                }

Asus.N61Jv ACPI DSDT hybrid graphics

Here is a snippet of the hybrid graphics switching ACPI DSDT table for the Asus N61Jv laptop:



    Scope (\_SB.PCI0.PEGR.GFX0)
    {
        OperationRegion (HDAY, SystemMemory, 0xF8100000, 0x0FF0)
        Field (HDAY, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x48B),
                ,   1,
            HDAE,   1
        }

        Name (DGPS, Zero)
        Name (_PSC, Zero)
        Method (_PS0, 0, NotSerialized)
        {
            Store (0xD0, DBG8)
            Store (Zero, _PSC)
            If (LNotEqual (DGPS, Zero))
            {
                Store ("PS0: Need to power on dGPU", Debug)
                \_SB.PCI0.PEGR.GFX0._ON ()
                Store (Zero, DGPS)
                Sleep (0x01F4)
                Store (Zero, HDAE)
                \_SB.PCI0.LPCB.EC0.WRAM (0x0458, 0x43)
                \_SB.PCI0.LPCB.EC0.TSES ()
            }
        }

        Method (DON, 0, NotSerialized)
        {
            _ON ()
        }

[..]

       Method (_PS3, 0, NotSerialized)
        {
            Store (0xD3, DBG8)
            If (LEqual (\OMPR, 0x03))
            {
                Store ("PS3: Driver wants to power off dGPU", Debug)
                If (LEqual (DGPS, Zero))
                {
                    \_SB.PCI0.LPCB.EC0.TSDS ()
                    \_SB.PCI0.PEGR.GFX0._OFF ()
                    Store (One, DGPS)
                    \_SB.PCI0.LPCB.EC0.WRAM (0x0458, 0x4B)
                }

                Store (0x02, \OMPR)
                Store ("PS3: OMPR=2 now", Debug)
            }

            Store (0x03, _PSC)
        }

        Method (CLKS, 1, Serialized)
        {
            Store (\_SB.PCI0.SBUS.RBLK (0xD2, 0x00, 0x0C), CLKD)
            If (Arg0)
            {
                Or (CB08, 0x03, CB08)
            }
            Else
            {
                And (CB08, 0xFC, CB08)
            }

            \_SB.PCI0.SBUS.WBLK (0xD2, 0x00, 0x0C, CLKD)
        }

        Method (DOFF, 0, NotSerialized)
        {
            _OFF ()
        }

Followers