Unless the BOINC code has changed since I checked it out via git-v2 a
couple weeks ago, I have to say it is a qualified yes, but you have to
create your own custom sched _customize code to do it.

The stock sched_customize does not take into account having CAL and not
OpenCL or the reverse.  You can change the flops scale a little to choose
one over the other if both are present, but that logic doesn't handle it
100%.  Nor does it distinguish between CAL and Brook support or the IL
changes to the HD 7xxx GPUs that cause it to no longer run Brook+ apps
correctly.  But, you can do it if the client is running a recent BOINC
version.

The coproc.attribs.target property contains the AMD GPU family.  See the
cal_boinc.h for an abbreviated list. The list I use is as follows:
    CAL_TARGET_600,                /**< R600 GPU ISA */
    CAL_TARGET_610,                /**< RV610 GPU ISA */
    CAL_TARGET_630,                /**< RV630 GPU ISA */
    CAL_TARGET_670,                /**< RV670 GPU ISA */
    CAL_TARGET_7XX,                /**< R700 class GPU ISA */
    CAL_TARGET_770,                /**< RV770 GPU ISA */
    CAL_TARGET_710,                /**< RV710 GPU ISA */
    CAL_TARGET_730,                /**< RV730 GPU ISA */
    CAL_TARGET_CYPRESS,            /**< RV870 GPU ISA */
    CAL_TARGET_JUNIPER,            /**< RV830 GPU ISA */
    CAL_TARGET_REDWOOD,            /**< REDWOOD GPU ISA */
    CAL_TARGET_CEDAR,              /**< CEDAR GPU ISA */
    CAL_TARGET_RESERVED0,
    CAL_TARGET_RESERVED1,
    CAL_TARGET_WRESTLER,           /**< WRESTLER GPU ISA */
    CAL_TARGET_CAYMAN,             /**< CAYMAN GPU ISA */
    CAL_TARGET_RESERVED2,
    CAL_TARGET_BARTS,              /**< BARTS GPU ISA */
    CAL_TARGET_TURKS,              /**< TURKS GPU ISA */
    CAL_TARGET_BROKEN1,
    CAL_TARGET_BROKEN2,
    CAL_TARGET_BROKEN3,
    CAL_TARGET_BROKEN4,
    CAL_TARGET_BROKEN5,
    CAL_TARGET_BROKEN6,
    CAL_TARGET_BROKEN7,
    CAL_TARGET_BROKEN8,
    CAL_TARGET_BROKEN9

Using the target, anything 20 (BROKEN1 or greater) means HD7xxx or newer
which distinguishes the GPUs won't run Brook+ correctly.  Combined with the
have_cal and have_opencl properties, you should be able to do the checks
you want.  For example:

//To send OpenCL apps to HD7xxx or later
if ((c.attribs.target > 19) && (c.have_opencl))

//To send CAL/Brook+ apps to HD6xxx and earlier
if ((c.attribs.target < 20) && (c.have_cal))

//To send OpenCL apps to  any AMD GPU that supports it
if ((c.attribs.target > 8) && (c.have_opencl))

//To send CAL apps to any AMD GPU that can't run OpenCL
if ((c.attribs.target < 9) && (c.have_cal))

Note: c.attribs.target may be 0 if it is an older client.  It was added
prior to BOINC 7.x.x but after BOINC 6.6.0.

If anyone has an easier or better way, I'd like to know about it.

Jon Sonntag




On Tue, Apr 16, 2013 at 12:14 PM, David Anderson <[email protected]>wrote:

>
>
> On 16-Apr-2013 2:12 AM, Raistmer the Sorcerer wrote:
>
>  How to properly configure project server to send Brook+ app ONLY to GPUs
>> with
>> CAL support but w/o OpenCL support and OpenCL app to all OpenCL GPUs ? Is
>> this possible in current BOINC implementation ?
>>
>
> Yes; see
> http://boinc.berkeley.edu/**trac/wiki/AppPlan<http://boinc.berkeley.edu/trac/wiki/AppPlan>
>
> -- David
> ______________________________**_________________
> boinc_dev mailing list
> [email protected]
> http://lists.ssl.berkeley.edu/**mailman/listinfo/boinc_dev<http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev>
> To unsubscribe, visit the above URL and
> (near bottom of page) enter your email address.
>
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to