opencl fix for no gpu, harmonytask fix gpu sched
This commit is contained in:
parent
a94223c129
commit
3d60a65906
@ -323,8 +323,8 @@ func (e *TaskEngine) ApplyHttpHandlers(root gin.IRouter) {
|
||||
s := root.Group("/scheduler")
|
||||
f := s.Group("/follows")
|
||||
b := s.Group("/bump")
|
||||
for name, vsTmp := range e.follows {
|
||||
vs := vsTmp
|
||||
for name, vs := range e.follows {
|
||||
name, vs := name, vs
|
||||
f.GET("/"+name+"/:tID", func(c *gin.Context) {
|
||||
tIDString := c.Param("tID")
|
||||
tID, err := strconv.Atoi(tIDString)
|
||||
@ -402,7 +402,7 @@ func (e *TaskEngine) resourcesInUse() resources.Resources {
|
||||
for i := int32(0); i < ct; i++ {
|
||||
for grIdx, j := range tmp.GpuRam {
|
||||
if j > t.Cost.GpuRam[0] {
|
||||
tmp.GpuRam[grIdx] = j - t.Cost.GpuRam[0]
|
||||
tmp.GpuRam[grIdx] = 0 // Only 1 per GPU. j - t.Cost.GpuRam[0]
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ package cl
|
||||
// #include "cl.h"
|
||||
import "C"
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
@ -20,7 +19,11 @@ type Platform struct {
|
||||
func GetPlatforms() ([]*Platform, error) {
|
||||
var platformIds [maxPlatforms]C.cl_platform_id
|
||||
var nPlatforms C.cl_uint
|
||||
if err := C.clGetPlatformIDs(C.cl_uint(maxPlatforms), &platformIds[0], &nPlatforms); err != C.CL_SUCCESS {
|
||||
err := C.clGetPlatformIDs(C.cl_uint(maxPlatforms), &platformIds[0], &nPlatforms)
|
||||
if err == -1001 { // No platforms found
|
||||
return nil, nil
|
||||
}
|
||||
if err != C.CL_SUCCESS {
|
||||
return nil, toError(err)
|
||||
}
|
||||
platforms := make([]*Platform, nPlatforms)
|
||||
@ -62,70 +65,14 @@ func (p *Platform) GetAllDevices() ([]*Device, error) {
|
||||
return devices, nil
|
||||
}
|
||||
|
||||
var errorMap = map[C.cl_int]string{
|
||||
C.CL_SUCCESS: "nil",
|
||||
C.CL_DEVICE_NOT_FOUND: "ErrDeviceNotFound",
|
||||
C.CL_DEVICE_NOT_AVAILABLE: "ErrDeviceNotAvailable",
|
||||
C.CL_COMPILER_NOT_AVAILABLE: "ErrCompilerNotAvailable",
|
||||
C.CL_MEM_OBJECT_ALLOCATION_FAILURE: "ErrMemObjectAllocationFailure",
|
||||
C.CL_OUT_OF_RESOURCES: "ErrOutOfResources",
|
||||
C.CL_OUT_OF_HOST_MEMORY: "ErrOutOfHostMemory",
|
||||
C.CL_PROFILING_INFO_NOT_AVAILABLE: "ErrProfilingInfoNotAvailable",
|
||||
C.CL_MEM_COPY_OVERLAP: "ErrMemCopyOverlap",
|
||||
C.CL_IMAGE_FORMAT_MISMATCH: "ErrImageFormatMismatch",
|
||||
C.CL_IMAGE_FORMAT_NOT_SUPPORTED: "ErrImageFormatNotSupported",
|
||||
C.CL_BUILD_PROGRAM_FAILURE: "ErrBuildProgramFailure",
|
||||
C.CL_MAP_FAILURE: "ErrMapFailure",
|
||||
C.CL_MISALIGNED_SUB_BUFFER_OFFSET: "ErrMisalignedSubBufferOffset",
|
||||
C.CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: "ErrExecStatusErrorForEventsInWaitList",
|
||||
C.CL_INVALID_VALUE: "ErrInvalidValue",
|
||||
C.CL_INVALID_DEVICE_TYPE: "ErrInvalidDeviceType",
|
||||
C.CL_INVALID_PLATFORM: "ErrInvalidPlatform",
|
||||
C.CL_INVALID_DEVICE: "ErrInvalidDevice",
|
||||
C.CL_INVALID_CONTEXT: "ErrInvalidContext",
|
||||
C.CL_INVALID_QUEUE_PROPERTIES: "ErrInvalidQueueProperties",
|
||||
C.CL_INVALID_COMMAND_QUEUE: "ErrInvalidCommandQueue",
|
||||
C.CL_INVALID_HOST_PTR: "ErrInvalidHostPtr",
|
||||
C.CL_INVALID_MEM_OBJECT: "ErrInvalidMemObject",
|
||||
C.CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: "ErrInvalidImageFormatDescriptor",
|
||||
C.CL_INVALID_IMAGE_SIZE: "ErrInvalidImageSize",
|
||||
C.CL_INVALID_SAMPLER: "ErrInvalidSampler",
|
||||
C.CL_INVALID_BINARY: "ErrInvalidBinary",
|
||||
C.CL_INVALID_BUILD_OPTIONS: "ErrInvalidBuildOptions",
|
||||
C.CL_INVALID_PROGRAM: "ErrInvalidProgram",
|
||||
C.CL_INVALID_PROGRAM_EXECUTABLE: "ErrInvalidProgramExecutable",
|
||||
C.CL_INVALID_KERNEL_NAME: "ErrInvalidKernelName",
|
||||
C.CL_INVALID_KERNEL_DEFINITION: "ErrInvalidKernelDefinition",
|
||||
C.CL_INVALID_KERNEL: "ErrInvalidKernel",
|
||||
C.CL_INVALID_ARG_INDEX: "ErrInvalidArgIndex",
|
||||
C.CL_INVALID_ARG_VALUE: "ErrInvalidArgValue",
|
||||
C.CL_INVALID_ARG_SIZE: "ErrInvalidArgSize",
|
||||
C.CL_INVALID_KERNEL_ARGS: "ErrInvalidKernelArgs",
|
||||
C.CL_INVALID_WORK_DIMENSION: "ErrInvalidWorkDimension",
|
||||
C.CL_INVALID_WORK_GROUP_SIZE: "ErrInvalidWorkGroupSize",
|
||||
C.CL_INVALID_WORK_ITEM_SIZE: "ErrInvalidWorkItemSize",
|
||||
C.CL_INVALID_GLOBAL_OFFSET: "ErrInvalidGlobalOffset",
|
||||
C.CL_INVALID_EVENT_WAIT_LIST: "ErrInvalidEventWaitList",
|
||||
C.CL_INVALID_EVENT: "ErrInvalidEvent",
|
||||
C.CL_INVALID_OPERATION: "ErrInvalidOperation",
|
||||
C.CL_INVALID_GL_OBJECT: "ErrInvalidGlObject",
|
||||
C.CL_INVALID_BUFFER_SIZE: "ErrInvalidBufferSize",
|
||||
C.CL_INVALID_MIP_LEVEL: "ErrInvalidMipLevel",
|
||||
C.CL_INVALID_GLOBAL_WORK_SIZE: "ErrInvalidGlobalWorkSize",
|
||||
C.CL_INVALID_PROPERTY: "ErrInvalidProperty",
|
||||
}
|
||||
|
||||
func toError(code C.cl_int) error {
|
||||
if err, ok := errorMap[code]; ok {
|
||||
return errors.New(err)
|
||||
}
|
||||
return ErrOther(code)
|
||||
}
|
||||
|
||||
type ErrOther int
|
||||
|
||||
func (e ErrOther) Error() string {
|
||||
return fmt.Sprintf("cl: error %d", int(e))
|
||||
return fmt.Sprintf("OpenCL: error %d", int(e))
|
||||
}
|
||||
|
||||
// Size of global device memory in bytes.
|
||||
|
@ -132,7 +132,7 @@ func getResources() (res Resources, err error) {
|
||||
}
|
||||
all := strings.ToLower(strings.Join(gpus, ","))
|
||||
if len(gpus) > 1 || strings.Contains(all, "ati") || strings.Contains(all, "nvidia") {
|
||||
res.Gpu = 1
|
||||
res.Gpu = float64(len(gpus))
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user